|
|
|
@ -7,14 +7,10 @@ import androidx.annotation.NonNull;
|
|
|
|
|
|
|
|
|
|
import com.idormy.sms.forwarder.model.vo.GotifySettingVo;
|
|
|
|
|
import com.idormy.sms.forwarder.utils.LogUtil;
|
|
|
|
|
import com.idormy.sms.forwarder.utils.SettingUtil;
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
|
|
|
|
import io.reactivex.rxjava3.core.Observable;
|
|
|
|
|
import io.reactivex.rxjava3.core.ObservableEmitter;
|
|
|
|
|
import okhttp3.Call;
|
|
|
|
|
import okhttp3.Callback;
|
|
|
|
|
import okhttp3.FormBody;
|
|
|
|
@ -23,7 +19,6 @@ import okhttp3.Request;
|
|
|
|
|
import okhttp3.RequestBody;
|
|
|
|
|
import okhttp3.Response;
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings({"ResultOfMethodCallIgnored"})
|
|
|
|
|
public class SenderGotifyMsg extends SenderBaseMsg {
|
|
|
|
|
|
|
|
|
|
static final String TAG = "SenderGotifyMsg";
|
|
|
|
@ -33,62 +28,40 @@ public class SenderGotifyMsg extends SenderBaseMsg {
|
|
|
|
|
//具体消息内容
|
|
|
|
|
if (message == null || message.isEmpty()) return;
|
|
|
|
|
|
|
|
|
|
final RequestBody formBody = new FormBody.Builder()
|
|
|
|
|
RequestBody formBody = new FormBody.Builder()
|
|
|
|
|
.add("title", title)
|
|
|
|
|
.add("message", message)
|
|
|
|
|
.add("priority", gotifySettingVo.getPriority())
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
final String requestUrl = gotifySettingVo.getWebServer();
|
|
|
|
|
String requestUrl = gotifySettingVo.getWebServer();
|
|
|
|
|
Log.i(TAG, "requestUrl:" + requestUrl);
|
|
|
|
|
|
|
|
|
|
Observable
|
|
|
|
|
.create((ObservableEmitter<Object> emitter) -> {
|
|
|
|
|
Toast(handError, TAG, "开始请求接口...");
|
|
|
|
|
|
|
|
|
|
final Request request = new Request.Builder()
|
|
|
|
|
.url(requestUrl)
|
|
|
|
|
.post(formBody)
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
OkHttpClient client = new OkHttpClient();
|
|
|
|
|
Call call = client.newCall(request);
|
|
|
|
|
call.enqueue(new Callback() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
|
|
|
|
|
LogUtil.updateLog(logId, 0, e.getMessage());
|
|
|
|
|
Toast(handError, TAG, "发送失败:" + e.getMessage());
|
|
|
|
|
emitter.onError(new RuntimeException("请求接口异常..."));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
|
|
|
|
|
final String responseStr = Objects.requireNonNull(response.body()).string();
|
|
|
|
|
Log.d(TAG, "Response:" + response.code() + "," + responseStr);
|
|
|
|
|
Toast(handError, TAG, "发送状态:" + responseStr);
|
|
|
|
|
|
|
|
|
|
//TODO:粗略解析是否发送成功
|
|
|
|
|
if (response.code() == 200) {
|
|
|
|
|
LogUtil.updateLog(logId, 2, responseStr);
|
|
|
|
|
} else {
|
|
|
|
|
LogUtil.updateLog(logId, 0, responseStr);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}).retryWhen((Observable<Throwable> errorObservable) -> errorObservable
|
|
|
|
|
.zipWith(Observable.just(
|
|
|
|
|
SettingUtil.getRetryDelayTime(1),
|
|
|
|
|
SettingUtil.getRetryDelayTime(2),
|
|
|
|
|
SettingUtil.getRetryDelayTime(3),
|
|
|
|
|
SettingUtil.getRetryDelayTime(4),
|
|
|
|
|
SettingUtil.getRetryDelayTime(5)
|
|
|
|
|
), (Throwable e, Integer time) -> time)
|
|
|
|
|
.flatMap((Integer delay) -> {
|
|
|
|
|
Toast(handError, TAG, "请求接口异常," + delay + "秒后重试");
|
|
|
|
|
return Observable.timer(delay, TimeUnit.SECONDS);
|
|
|
|
|
}))
|
|
|
|
|
.subscribe(System.out::println);
|
|
|
|
|
Request request = new Request.Builder().url(requestUrl).post(formBody).build();
|
|
|
|
|
OkHttpClient client = new OkHttpClient();
|
|
|
|
|
Call call = client.newCall(request);
|
|
|
|
|
call.enqueue(new Callback() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(@NonNull Call call, @NonNull final IOException e) {
|
|
|
|
|
LogUtil.updateLog(logId, 0, e.getMessage());
|
|
|
|
|
Toast(handError, TAG, "发送失败:" + e.getMessage());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
|
|
|
|
|
final String responseStr = Objects.requireNonNull(response.body()).string();
|
|
|
|
|
Log.d(TAG, "Response:" + response.code() + "," + responseStr);
|
|
|
|
|
Toast(handError, TAG, "发送状态:" + responseStr);
|
|
|
|
|
|
|
|
|
|
//TODO:粗略解析是否发送成功
|
|
|
|
|
if (response.code() == 200) {
|
|
|
|
|
LogUtil.updateLog(logId, 2, responseStr);
|
|
|
|
|
} else {
|
|
|
|
|
LogUtil.updateLog(logId, 1, responseStr);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|