|
@@ -2,6 +2,7 @@ package com.acdp.transceivr;
|
|
|
|
|
|
import okhttp3.*;
|
|
|
import okio.BufferedSink;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
@@ -9,31 +10,43 @@ import java.io.InputStream;
|
|
|
public class LoadTools {
|
|
|
public static final MediaType MEDIA_TYPE_BINARY
|
|
|
= MediaType.parse("application/octet-stream");
|
|
|
+ public static final MediaType MEDIA_TYPE_JSON
|
|
|
+ = MediaType.get("application/json; charset=utf-8");
|
|
|
+ private final static org.slf4j.Logger logger = LoggerFactory.getLogger(LoadTools.class);
|
|
|
+
|
|
|
+ private static void finishTransfer(Transfer t) {
|
|
|
+ t.finishedAT=System.currentTimeMillis();
|
|
|
+ t.finished=true;
|
|
|
+ }
|
|
|
|
|
|
private static void download(Transfer t, ProgressListener progressListener) throws IOException {
|
|
|
Request request = new Request.Builder()
|
|
|
- .url(t.from)
|
|
|
- .build();
|
|
|
+ .url(t.from)
|
|
|
+ .build();
|
|
|
|
|
|
OkHttpClient client = new OkHttpClient.Builder()
|
|
|
- .addNetworkInterceptor(chain -> {
|
|
|
- Response originalResponse = chain.proceed(chain.request());
|
|
|
- return originalResponse.newBuilder()
|
|
|
- .body(new ProgressResponseBody(originalResponse.body(), progressListener))
|
|
|
- .build();
|
|
|
- })
|
|
|
- .build();
|
|
|
- var call=client.newCall(request);
|
|
|
- t.call=call;
|
|
|
+ .addNetworkInterceptor(chain -> {
|
|
|
+ Response originalResponse = chain.proceed(chain.request());
|
|
|
+ return originalResponse.newBuilder()
|
|
|
+ .body(new ProgressResponseBody(originalResponse.body(), progressListener))
|
|
|
+ .build();
|
|
|
+ })
|
|
|
+ .build();
|
|
|
+ var call = client.newCall(request);
|
|
|
+ t.call = call;
|
|
|
call.enqueue(new Callback() {
|
|
|
@Override
|
|
|
public void onFailure(Call call, IOException e) {
|
|
|
- t.uploadError=e.toString();
|
|
|
+ t.uploadError = e.toString();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void onResponse(Call call, Response response) throws IOException {
|
|
|
- if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
|
|
|
+ t.downloadCode = response.code();
|
|
|
+ if (!response.isSuccessful()) {
|
|
|
+ finishTransfer(t);
|
|
|
+ return;
|
|
|
+ }
|
|
|
try {
|
|
|
upload(t, response.body().byteStream());
|
|
|
} catch (IOException e) {
|
|
@@ -56,7 +69,6 @@ public class LoadTools {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-
|
|
|
OkHttpClient client = new OkHttpClient();
|
|
|
Request request = new Request.Builder()
|
|
|
.url(t.to)
|
|
@@ -64,22 +76,45 @@ public class LoadTools {
|
|
|
.build();
|
|
|
|
|
|
client.newCall(request).enqueue(
|
|
|
- new Callback() {
|
|
|
- @Override
|
|
|
- public void onFailure(Call call, IOException e) {
|
|
|
- t.uploadError = e.toString();
|
|
|
- }
|
|
|
+ new Callback() {
|
|
|
+ @Override
|
|
|
+ public void onFailure(Call call, IOException e) {
|
|
|
+ t.uploadError = e.toString();
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void onResponse(Call call, Response response) throws IOException {
|
|
|
- if (!response.isSuccessful()) {
|
|
|
- t.uploadError = response.toString();
|
|
|
+ @Override
|
|
|
+ public void onResponse(Call call, Response response) throws IOException {
|
|
|
+ if (!response.isSuccessful()) {
|
|
|
+ t.uploadError = response.toString();
|
|
|
+ finishTransfer(t);
|
|
|
+ }
|
|
|
t.uploadCode = response.code();
|
|
|
+ t.uploadResponseBody = response.body().string();
|
|
|
+ t.uploadDone = true;
|
|
|
+ if (t.cpeeCallback != null) {
|
|
|
+ try {
|
|
|
+ OkHttpClient client = new OkHttpClient();
|
|
|
+ Request request = new Request.Builder()
|
|
|
+ .url(t.cpeeCallback + "/")
|
|
|
+ .put(RequestBody.create(MEDIA_TYPE_JSON, "[{}]"))
|
|
|
+ .build();
|
|
|
+ logger.info("putting to {}", t.cpeeCallback);
|
|
|
+ Response res = client.newCall(request).execute();
|
|
|
+ logger.info("result {}", res.toString());
|
|
|
+ t.cpeeCallbackResult = res.body().string();
|
|
|
+ t.cpeeCallbackCode = res.code();
|
|
|
+ t.cpeeCallbackMessage = res.message();
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.warn("cpee callback failed", e);
|
|
|
+ t.cpeeCallbackError = e.getMessage();
|
|
|
+ finishTransfer(t);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ finishTransfer(t);
|
|
|
+ }
|
|
|
}
|
|
|
- t.uploadResponseBody = response.body().string();
|
|
|
- t.uploadDone = true;
|
|
|
}
|
|
|
- }
|
|
|
);
|
|
|
}
|
|
|
|