implemented markdown renderer in backend and frontend

This commit is contained in:
2025-07-11 14:23:47 +02:00
parent c37b1de1b0
commit 86801e10c2
7 changed files with 70 additions and 4 deletions

View File

@@ -0,0 +1,6 @@
description = "Umbrella : MarkdownCompanies renderer"
dependencies{
implementation(project(":core"))
implementation("de.srsoftware:tools.mime:1.1.2")
}

View File

@@ -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);
}
}
}