package cc.fascinated.bat.common; import cc.fascinated.bat.BatApplication; import cc.fascinated.bat.common.model.token.paste.PasteUploadToken; import lombok.SneakyThrows; import lombok.experimental.UtilityClass; import lombok.extern.log4j.Log4j2; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; /** * @author Fascinated (fascinated7) */ @UtilityClass @Log4j2(topic = "PasteUtils") public class PasteUtils { private static final String PASTE_URL = "https://paste.fascinated.cc/"; private static final String PASTE_UPLOAD_URL = PASTE_URL + "api/upload?expires=" + 60 * 60 * 24 * 30; // 30 days private static final HttpClient httpClient = HttpClient.newHttpClient(); /** * Uploads a paste to the paste server * * @param content the content of the paste * @return the paste upload token */ @SneakyThrows public static PasteUploadToken uploadPaste(String content) { HttpResponse response = httpClient.send(HttpRequest.newBuilder() .uri(URI.create(PASTE_UPLOAD_URL)) .POST(HttpRequest.BodyPublishers.ofString(content)) .build(), HttpResponse.BodyHandlers.ofString()); PasteUploadToken paste = BatApplication.GSON.fromJson(response.body(), PasteUploadToken.class); paste.setUrl(PASTE_URL + paste.getKey()); log.info("Created paste with key \"{}\" ({})", paste.getKey(), paste.getUrl()); return paste; } }