package org.restler.http;
import org.restler.client.Call;
import org.restler.client.CallExecutor;
public class HttpCallExecutor implements CallExecutor {
private final RequestExecutor executor;
public HttpCallExecutor(RequestExecutor executor) {
this.executor = executor;
}
@Override
public Object execute(Call call) {
Response responseEntity = executor.execute(call);
if (responseEntity instanceof SuccessfulResponse) {
return ((SuccessfulResponse) responseEntity).getResult();
} else if (responseEntity instanceof FailedResponse) {
FailedResponse failedResponse = (FailedResponse) responseEntity;
throw new HttpExecutionException("Could not execute request", failedResponse.getCause(), failedResponse.getStatus(), failedResponse.getResponseBody().orElse(""));
} else {
throw new AssertionError("Should never happen");
}
}
}