Skip to content

Commit 52f037f

Browse files
committed
Deprecate HttpRequest in favor of native JDK HttpClient
1 parent ad872f8 commit 52f037f

File tree

2 files changed

+41
-36
lines changed

2 files changed

+41
-36
lines changed

worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import java.util.Map;
4646
import java.util.concurrent.ThreadLocalRandom;
4747

48+
@Deprecated
4849
public class HttpRequest implements Closeable {
4950

5051
private static final int CONNECT_TIMEOUT = 1000 * 5;

worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121

2222
import com.google.gson.Gson;
2323
import com.google.gson.reflect.TypeToken;
24-
import com.sk89q.worldedit.util.net.HttpRequest;
2524

2625
import java.io.IOException;
2726
import java.net.URI;
2827
import java.net.URL;
28+
import java.net.http.HttpClient;
29+
import java.net.http.HttpRequest;
30+
import java.net.http.HttpResponse;
2931
import java.util.Map;
3032
import java.util.concurrent.Callable;
3133

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

5052
@Override
5153
public URL call() throws IOException, InterruptedException {
52-
URL initialUrl = HttpRequest.url("https://paste.enginehub.org/signed_paste");
53-
54-
HttpRequest requestBuilder = HttpRequest.get(initialUrl);
55-
56-
requestBuilder.header("x-paste-meta-from", "EngineHub");
57-
if (metadata.name != null) {
58-
requestBuilder.header("x-paste-meta-name", metadata.name);
59-
}
60-
if (metadata.author != null) {
61-
requestBuilder.header("x-paste-meta-author", metadata.author);
54+
try (HttpClient client = HttpClient.newHttpClient()) {
55+
HttpRequest.Builder signRequestBuilder = HttpRequest.newBuilder()
56+
.uri(URI.create("https://paste.enginehub.org/signed_paste_v2"))
57+
.header("x-paste-meta-from", "EngineHub");
58+
59+
if (metadata.name != null) {
60+
signRequestBuilder = signRequestBuilder.header("x-paste-meta-name", metadata.name);
61+
}
62+
if (metadata.author != null) {
63+
signRequestBuilder = signRequestBuilder.header("x-paste-meta-author", metadata.author);
64+
}
65+
if (metadata.extension != null) {
66+
signRequestBuilder = signRequestBuilder.header("x-paste-meta-extension", metadata.extension);
67+
}
68+
69+
SignedPasteResponse response = GSON.fromJson(
70+
client.send(signRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()).body(),
71+
TypeToken.get(SignedPasteResponse.class).getType()
72+
);
73+
74+
HttpRequest.Builder uploadRequestBuilder = HttpRequest.newBuilder()
75+
.uri(URI.create(response.uploadUrl))
76+
.method("PUT", HttpRequest.BodyPublishers.ofString(content));
77+
78+
for (Map.Entry<String, String> entry : response.headers.entrySet()) {
79+
uploadRequestBuilder = uploadRequestBuilder.header(entry.getKey(), entry.getValue());
80+
}
81+
82+
// If this succeeds, it will not return any data aside from a 204 status.
83+
HttpResponse<String> uploadResponse = client.send(uploadRequestBuilder.build(), HttpResponse.BodyHandlers.ofString());
84+
85+
if (uploadResponse.statusCode() != 200 && uploadResponse.statusCode() != 204) {
86+
throw new IOException("Failed to upload paste: " + uploadResponse.statusCode());
87+
}
88+
89+
return URI.create(response.viewUrl).toURL();
6290
}
63-
if (metadata.extension != null) {
64-
requestBuilder.header("x-paste-meta-extension", metadata.extension);
65-
}
66-
67-
SignedPasteResponse response = GSON.fromJson(requestBuilder
68-
.execute()
69-
.expectResponseCode(200)
70-
.returnContent()
71-
.asString("UTF-8"), TypeToken.get(SignedPasteResponse.class).getType());
72-
73-
HttpRequest.Form form = HttpRequest.Form.create();
74-
for (Map.Entry<String, String> entry : response.uploadFields.entrySet()) {
75-
form.add(entry.getKey(), entry.getValue());
76-
}
77-
form.add("file", content);
78-
79-
URL url = HttpRequest.url(response.uploadUrl);
80-
// If this succeeds, it will not return any data aside from a 204 status.
81-
HttpRequest.post(url)
82-
.bodyMultipartForm(form)
83-
.execute()
84-
.expectResponseCode(200, 204);
85-
86-
return URI.create(response.viewUrl).toURL();
8791
}
8892
}
8993

9094
private static final class SignedPasteResponse {
9195
String viewUrl;
9296
String uploadUrl;
93-
Map<String, String> uploadFields;
97+
Map<String, String> headers;
9498
}
9599
}

0 commit comments

Comments
 (0)