Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dependency-reduced-pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.mymetaverse.sdk</groupId>
<artifactId>java-sdk</artifactId>
<version>2.5.0</version>
<version>2.5.2</version>
<build>
<defaultGoal>package install</defaultGoal>
<finalName>${project.name}-${project.version}</finalName>
Expand Down
3 changes: 2 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@

<groupId>io.mymetaverse.sdk</groupId>
<artifactId>java-sdk</artifactId>
<version>2.5.1</version>
<version>2.5.2</version>


<properties>
<maven.compiler.source>8</maven.compiler.source>
Expand Down
11 changes: 9 additions & 2 deletions src/main/java/io/mymetavese/metaapi/api/RestAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import io.mymetavese.metaapi.MetaAPIImpl;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;

public interface RestAction<T> {
Expand All @@ -23,7 +25,6 @@ public interface RestAction<T> {
/**
* Submits a request for execution in asynchronous logic.
*
*
* @param success The success callback from the request.
* @param failure The callback error from the request.
*/
Expand All @@ -32,7 +33,6 @@ public interface RestAction<T> {
/**
* Submits a request for execution in asynchronous logic.
*
*
* @param success The success callback from the request.
*/
default void queue(Consumer<? super T> success) {
Expand All @@ -46,6 +46,13 @@ default void queue(Consumer<? super T> success) {
*/
T complete();

/**
* Submits a Request in synchronous logic with a Timeout
*
* @return The response of the Request.
*/
T complete(long timeout, TimeUnit timeUnit) throws ExecutionException, InterruptedException, TimeoutException;

/**
* Submits a request for execution after some time delay.
* @param time The time
Expand Down
25 changes: 13 additions & 12 deletions src/main/java/io/mymetavese/metaapi/requests/RequestGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import okhttp3.internal.http.HttpMethod;

import java.io.IOException;
import java.util.Objects;

public class RequestGenerator {

Expand All @@ -29,6 +28,7 @@ public void asyncRequest(Request<?> request) {
}

public void request(Request<?> request) {

String route = request.getCompiledRoute();

okhttp3.Request.Builder builder = new okhttp3.Request.Builder();
Expand All @@ -52,28 +52,29 @@ else if(bodyObject != null)
if (request.getHeaders() != null && !request.getHeaders().isEmpty())
request.getHeaders().forEach(builder::addHeader);

// Maybe should add attempts here.

try(Response response = httpClient.newCall(builder.build()).execute()) {
try (Response response = httpClient.newCall(builder.build()).execute()) {

if (response.code() >= 500) {
throw new IOException("Internal server error: " + Objects.requireNonNull(response.body()).string());
String responseBodyString = response.peekBody(Long.MAX_VALUE).string();
request.handleResponse(response);
throw new IOException("Internal server error: " + responseBodyString);
}

if(response.code() == 401 && request.getAttempts() < 2) {
// Try to Re-authenticate if the token is invalid and the re-authentication has not been attempted for more
// than 2 times.
if (response.code() == 401 && request.getAttempts() < 2) {

request.addAttempt();
api.getTokenHandler().authenticate();
this.request(request);
return;

} else {
request.handleResponse(response);
}

request.handleResponse(response);
} catch (IOException ex) {
ex.printStackTrace();

if(request.getAttempts() < 2) {
request.addAttempt();
this.request(request);
}
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Consumer;

public abstract class RestActionImpl<T> extends Transformable<T> implements RestAction<T> {
Expand Down Expand Up @@ -104,5 +107,11 @@ public void queue(Consumer<? super T> success, Consumer<? super RequestError> fa
public T complete() {
return submit().join();
}

@Override
public T complete(long timeout, TimeUnit timeUnit) throws ExecutionException, InterruptedException, TimeoutException {
return submit().get(timeout, timeUnit);
}

}