Skip to content

Commit

Permalink
Deprecate HttpRequest in favor of native JDK HttpClient
Browse files Browse the repository at this point in the history
  • Loading branch information
me4502 committed Feb 18, 2025
1 parent ad872f8 commit a9fc1ab
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;

/**
* @deprecated Use the native JDK HttpClient API instead.
*/
@Deprecated(forRemoval = true)
public class HttpRequest implements Closeable {

private static final int CONNECT_TIMEOUT = 1000 * 5;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.sk89q.worldedit.util.net.HttpRequest;

import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Map;
import java.util.concurrent.Callable;

Expand All @@ -49,47 +51,49 @@ private PasteTask(String content, PasteMetadata metadata) {

@Override
public URL call() throws IOException, InterruptedException {
URL initialUrl = HttpRequest.url("https://paste.enginehub.org/signed_paste");

HttpRequest requestBuilder = HttpRequest.get(initialUrl);

requestBuilder.header("x-paste-meta-from", "EngineHub");
if (metadata.name != null) {
requestBuilder.header("x-paste-meta-name", metadata.name);
}
if (metadata.author != null) {
requestBuilder.header("x-paste-meta-author", metadata.author);
try (HttpClient client = HttpClient.newHttpClient()) {
HttpRequest.Builder signRequestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://paste.enginehub.org/signed_paste_v2"))
.header("x-paste-meta-from", "EngineHub");

if (metadata.name != null) {
signRequestBuilder = signRequestBuilder.header("x-paste-meta-name", metadata.name);
}
if (metadata.author != null) {
signRequestBuilder = signRequestBuilder.header("x-paste-meta-author", metadata.author);
}
if (metadata.extension != null) {
signRequestBuilder = signRequestBuilder.header("x-paste-meta-extension", metadata.extension);
}

SignedPasteResponse response = GSON.fromJson(
client.send(signRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()).body(),
TypeToken.get(SignedPasteResponse.class).getType()
);

HttpRequest.Builder uploadRequestBuilder = HttpRequest.newBuilder()
.uri(URI.create(response.uploadUrl))
.method("PUT", HttpRequest.BodyPublishers.ofString(content));

for (Map.Entry<String, String> entry : response.headers.entrySet()) {
uploadRequestBuilder = uploadRequestBuilder.header(entry.getKey(), entry.getValue());
}

// If this succeeds, it will not return any data aside from a 204 status.
HttpResponse<String> uploadResponse = client.send(uploadRequestBuilder.build(), HttpResponse.BodyHandlers.ofString());

if (uploadResponse.statusCode() != 200 && uploadResponse.statusCode() != 204) {
throw new IOException("Failed to upload paste: " + uploadResponse.statusCode());
}

return URI.create(response.viewUrl).toURL();
}
if (metadata.extension != null) {
requestBuilder.header("x-paste-meta-extension", metadata.extension);
}

SignedPasteResponse response = GSON.fromJson(requestBuilder
.execute()
.expectResponseCode(200)
.returnContent()
.asString("UTF-8"), TypeToken.get(SignedPasteResponse.class).getType());

HttpRequest.Form form = HttpRequest.Form.create();
for (Map.Entry<String, String> entry : response.uploadFields.entrySet()) {
form.add(entry.getKey(), entry.getValue());
}
form.add("file", content);

URL url = HttpRequest.url(response.uploadUrl);
// If this succeeds, it will not return any data aside from a 204 status.
HttpRequest.post(url)
.bodyMultipartForm(form)
.execute()
.expectResponseCode(200, 204);

return URI.create(response.viewUrl).toURL();
}
}

private static final class SignedPasteResponse {
String viewUrl;
String uploadUrl;
Map<String, String> uploadFields;
Map<String, String> headers;
}
}

0 comments on commit a9fc1ab

Please sign in to comment.