Implement basic functionality for Waifu endpoint

pull/5/head
Hammy 4 years ago
parent fc9bf53620
commit e3d187d142

@ -1,5 +1,7 @@
package org.goudham.me; package org.goudham.me;
import org.goudham.me.api.entity.waifu.Waifu;
import org.goudham.me.exception.APIResponseException;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.net.ssl.SSLParameters; import javax.net.ssl.SSLParameters;
@ -47,12 +49,12 @@ public class MyWaifuClient {
return myWaifuClient; return myWaifuClient;
} }
public void getWaifu(String slug) { public Response<Waifu> getWaifu(String slug) throws APIResponseException {
myWaifuWrapper.getWaifu(httpClient, slug); return myWaifuWrapper.getWaifu(httpClient, slug);
} }
public void getWaifu(Integer id) { public Response<Waifu> getWaifu(Integer id) throws APIResponseException {
myWaifuWrapper.getWaifu(httpClient, String.valueOf(id)); return myWaifuWrapper.getWaifu(httpClient, String.valueOf(id));
} }
/** /**
@ -60,7 +62,7 @@ public class MyWaifuClient {
* *
* @param httpClient HttpClient for executing API requests * @param httpClient HttpClient for executing API requests
*/ */
public void setHttpClient(HttpClient httpClient) { void setHttpClient(HttpClient httpClient) {
this.httpClient = httpClient; this.httpClient = httpClient;
} }

@ -1,6 +1,10 @@
package org.goudham.me; package org.goudham.me;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.goudham.me.api.entity.waifu.Waifu;
import org.goudham.me.exception.APIResponseException;
import java.net.URI; import java.net.URI;
import java.net.http.HttpClient; import java.net.http.HttpClient;
@ -8,12 +12,13 @@ import java.net.http.HttpRequest;
import java.net.http.HttpResponse; import java.net.http.HttpResponse;
import java.time.Duration; import java.time.Duration;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/** /**
* Returns API information to {@link MyWaifuClient} * Returns API information to {@link MyWaifuClient}
*/ */
class MyWaifuWrapper { public class MyWaifuWrapper {
private final String version = "1.0"; private final String version = "1.0";
private static final String host = "https://mywaifulist.moe/api/v1/"; private static final String host = "https://mywaifulist.moe/api/v1/";
private final String apiKey; private final String apiKey;
@ -28,7 +33,13 @@ class MyWaifuWrapper {
this.apiKey = apiKey; this.apiKey = apiKey;
} }
private void sendRequest(HttpClient httpClient, String param) { /**
*
*
* @param httpClient The {@link HttpClient} to use for sending {@link HttpRequest}'s
* @param param The end of the endpoint appended onto the host
*/
private Result sendRequest(HttpClient httpClient, String param) throws APIResponseException {
HttpRequest request = HttpRequest.newBuilder() HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(host + param)) .uri(URI.create(host + param))
.version(httpClient.version()) .version(httpClient.version())
@ -40,32 +51,38 @@ class MyWaifuWrapper {
CompletableFuture<HttpResponse<String>> response = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString()); CompletableFuture<HttpResponse<String>> response = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response); int responseCode;
String responseBody;
try {
responseCode = response.thenApply(HttpResponse::statusCode).get();
responseBody = response.thenApply(HttpResponse::body).get();
} catch (InterruptedException | ExecutionException exp) {
throw new APIResponseException(exp.getMessage(), exp);
}
// String resultBody = ""; return new Result(responseCode, responseBody);
// int resultStatusCode = 0;
// try {
// resultBody = response.thenApply(HttpResponse::body).get();
// resultStatusCode = response.thenApply(HttpResponse::statusCode).get();
//
// } catch (InterruptedException | ExecutionException e) {
// e.printStackTrace();
// }
//
// System.out.println(resultStatusCode);
// System.out.println(resultBody);
//
// try {
// JsonNode parent = objectMapper.readTree(resultBody);
// String waifuData = parent.get("data").toString();
// Waifu waifu = objectMapper.readValue(waifuData, Waifu.class);
// System.out.println(waifu);
// } catch (JsonProcessingException e) {
// e.printStackTrace();
// }
} }
void getWaifu(HttpClient httpClient, String param) { Response<Waifu> getWaifu(HttpClient httpClient, String param) throws APIResponseException {
sendRequest(httpClient, "waifu/" + param); Result waifuResult = sendRequest(httpClient, "waifu/" + param);
Integer statusCode = waifuResult.getStatusCode();
String body = waifuResult.getBody();
Waifu waifu = null;
if (statusCode == 200) {
try {
JsonNode parent = objectMapper.readTree(body);
String waifuData = parent.get("data").toString();
waifu = objectMapper.readValue(waifuData, Waifu.class);
} catch (JsonProcessingException jpe) {
jpe.printStackTrace();
statusCode = 100;
body = "{\"message\":\"If you are seeing this message, this is more than likely a fault in my logic. " +
"Please raise an issue with the printed stacktrace :D\",\"code\":Custom 100}";
}
}
return new Response<>(statusCode, body, waifu);
} }
} }

Loading…
Cancel
Save