提交 c21a3706 编写于 作者: 如梦技术's avatar 如梦技术 🐛

Merge branch 'mica-v2.4.x'

......@@ -18,7 +18,6 @@ package net.dreamlu.mica.http;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Request;
import okhttp3.Response;
import javax.annotation.ParametersAreNonnullByDefault;
......@@ -39,8 +38,7 @@ public class AsyncCallback implements Callback {
@Override
public void onFailure(Call call, IOException e) {
Request request = call.request();
exchange.onFailure(request, new HttpException(request, e));
exchange.onFailure(call.request(), e);
}
@Override
......@@ -50,7 +48,7 @@ public class AsyncCallback implements Callback {
if (response.isSuccessful()) {
exchange.onSuccessful(httpResponse);
} else {
exchange.onFailure(call.request(), new HttpException(httpResponse));
exchange.onFailure(httpResponse);
}
}
}
......
......@@ -19,6 +19,8 @@ package net.dreamlu.mica.http;
import okhttp3.Call;
import okhttp3.Request;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import java.io.IOException;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
......@@ -28,19 +30,21 @@ import java.util.function.Consumer;
*
* @author L.cm
*/
@ParametersAreNonnullByDefault
public class AsyncExchange {
private final static Consumer<ResponseSpec> DEFAULT_CONSUMER = (r) -> {};
private final static BiConsumer<Request, HttpException> DEFAULT_FAIL_CONSUMER = (r, e) -> {};
private final Call call;
@Nullable
private Consumer<ResponseSpec> successConsumer;
@Nullable
private Consumer<ResponseSpec> responseConsumer;
@Nullable
private BiConsumer<Request, HttpException> failedBiConsumer;
AsyncExchange(Call call) {
this.call = call;
this.successConsumer = DEFAULT_CONSUMER;
this.responseConsumer = DEFAULT_CONSUMER;
this.failedBiConsumer = DEFAULT_FAIL_CONSUMER;
this.successConsumer = null;
this.responseConsumer = null;
this.failedBiConsumer = null;
}
public void onSuccessful(Consumer<ResponseSpec> consumer) {
......@@ -62,16 +66,28 @@ public class AsyncExchange {
call.enqueue(new AsyncCallback(this));
}
protected void onResponse(HttpResponse httpResponse) {
responseConsumer.accept(httpResponse);
protected void onResponse(HttpResponse response) {
if (responseConsumer != null) {
responseConsumer.accept(response);
}
}
protected void onSuccessful(HttpResponse httpResponse) {
successConsumer.accept(httpResponse);
protected void onSuccessful(HttpResponse response) {
if (successConsumer != null) {
successConsumer.accept(response);
}
}
protected void onFailure(Request request, HttpException e) {
failedBiConsumer.accept(request, e);
protected void onFailure(Request request, IOException e) {
if (failedBiConsumer != null) {
failedBiConsumer.accept(request, new HttpException(request, e));
}
}
protected void onFailure(HttpResponse response) {
if (failedBiConsumer != null) {
failedBiConsumer.accept(response.rawRequest(), new HttpException(response));
}
}
}
......@@ -18,7 +18,6 @@ package net.dreamlu.mica.http;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.RequiredArgsConstructor;
import net.dreamlu.mica.core.utils.Exceptions;
import net.dreamlu.mica.core.utils.JsonUtil;
import okhttp3.Call;
......@@ -41,11 +40,15 @@ import java.util.function.Function;
*
* @author L.cm
*/
@RequiredArgsConstructor
public class Exchange {
private BiConsumer<Request, HttpException> failedBiConsumer = (r, e) -> {
};
private final Call call;
@Nullable
private BiConsumer<Request, HttpException> failedBiConsumer;
public Exchange(Call call) {
this.call = call;
this.failedBiConsumer = null;
}
public Exchange onFailed(BiConsumer<Request, HttpException> failConsumer) {
this.failedBiConsumer = failConsumer;
......@@ -65,8 +68,7 @@ public class Exchange {
try (HttpResponse response = new HttpResponse(call.execute())) {
return func.apply(response);
} catch (IOException e) {
Request request = call.request();
failedBiConsumer.accept(request, new HttpException(request, e));
onFailure(call.request(), e);
return null;
}
}
......@@ -77,11 +79,10 @@ public class Exchange {
if (response.isOk()) {
return func.apply(response);
} else {
failedBiConsumer.accept(call.request(), new HttpException(response));
onFailure(response);
}
} catch (IOException e) {
Request request = call.request();
failedBiConsumer.accept(request, new HttpException(request, e));
onFailure(call.request(), e);
}
return null;
}
......@@ -236,4 +237,16 @@ public class Exchange {
return onResponse(responseSpec -> responseSpec.toFile(path));
}
private void onFailure(Request request, IOException e) {
if (failedBiConsumer != null) {
failedBiConsumer.accept(request, new HttpException(request, e));
}
}
private void onFailure(HttpResponse response) {
if (failedBiConsumer != null) {
failedBiConsumer.accept(response.rawRequest(), new HttpException(response));
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册