Implement basic functionality for Waifu endpoint

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

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

@ -1,6 +1,10 @@
package org.goudham.me;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
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.http.HttpClient;
@ -8,12 +12,13 @@ import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
/**
* Returns API information to {@link MyWaifuClient}
*/
class MyWaifuWrapper {
public class MyWaifuWrapper {
private final String version = "1.0";
private static final String host = "https://mywaifulist.moe/api/v1/";
private final String apiKey;
@ -28,7 +33,13 @@ class MyWaifuWrapper {
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()
.uri(URI.create(host + param))
.version(httpClient.version())
@ -40,32 +51,38 @@ class MyWaifuWrapper {
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 = "";
// 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();
// }
return new Result(responseCode, responseBody);
}
void getWaifu(HttpClient httpClient, String param) {
sendRequest(httpClient, "waifu/" + param);
Response<Waifu> getWaifu(HttpClient httpClient, String param) throws APIResponseException {
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