7 changed files with 70 additions and 4 deletions
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
description = "Umbrella : MarkdownCompanies renderer" |
||||
|
||||
dependencies{ |
||||
implementation(project(":core")) |
||||
implementation("de.srsoftware:tools.mime:1.1.2") |
||||
} |
||||
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
package de.srsoftware.umbrella.markdown; |
||||
|
||||
import com.sun.net.httpserver.HttpExchange; |
||||
import de.srsoftware.tools.Path; |
||||
import de.srsoftware.tools.SessionToken; |
||||
import de.srsoftware.umbrella.core.BaseHandler; |
||||
import de.srsoftware.umbrella.core.Util; |
||||
import de.srsoftware.umbrella.core.api.UserService; |
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException; |
||||
import de.srsoftware.umbrella.core.model.Token; |
||||
|
||||
import java.io.IOException; |
||||
import java.util.Optional; |
||||
|
||||
import static de.srsoftware.tools.MimeType.MIME_HTML; |
||||
|
||||
public class MarkdownApi extends BaseHandler { |
||||
|
||||
private final UserService users; |
||||
|
||||
public MarkdownApi(UserService userService) { |
||||
users = userService; |
||||
} |
||||
|
||||
@Override |
||||
public boolean doPost(Path path, HttpExchange ex) throws IOException { |
||||
try { |
||||
addCors(ex); |
||||
Optional<Token> token = SessionToken.from(ex).map(Token::of); |
||||
var user = users.loadUser(token); |
||||
|
||||
if (user.isEmpty()) throw UmbrellaException.forbidden("You must be logged in to use the markdown renderer!"); |
||||
var rendered = Util.markdown(body(ex)); |
||||
ex.getResponseHeaders().add(CONTENT_TYPE,MIME_HTML); |
||||
return sendContent(ex,rendered); |
||||
} catch (UmbrellaException e){ |
||||
return send(ex,e); |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue