diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/dao/LogsDao.kt b/app/src/main/java/com/idormy/sms/forwarder/database/dao/LogsDao.kt index 915e761a..ff429cfd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/dao/LogsDao.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/dao/LogsDao.kt @@ -44,6 +44,15 @@ interface LogsDao { ) fun updateStatus(id: Long, status: Int, response: String): Int + @Query( + "UPDATE Logs SET forward_response=CASE WHEN (trim(forward_response) = '' or trim(forward_response) = 'ok')" + + " THEN :response" + + " ELSE forward_response || '\n' || :response" + + " END" + + " where id=:id" + ) + fun updateResponse(id: Long, response: String): Int + @Query("SELECT * FROM Logs where id=:id") fun get(id: Long): Single diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/repository/LogsRepository.kt b/app/src/main/java/com/idormy/sms/forwarder/database/repository/LogsRepository.kt index a672fa3c..33c05d5e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/repository/LogsRepository.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/repository/LogsRepository.kt @@ -17,6 +17,9 @@ class LogsRepository(private val logsDao: LogsDao) { @WorkerThread fun updateStatus(id: Long, status: Int, response: String): Int = logsDao.updateStatus(id, status, response) + @WorkerThread + fun updateResponse(id: Long, response: String): Int = logsDao.updateResponse(id, response) + fun getOne(id: Long) = logsDao.getOne(id) } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/ClientFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/ClientFragment.kt index f7526bf0..e091f09d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/ClientFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/ClientFragment.kt @@ -25,7 +25,6 @@ import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -56,67 +55,31 @@ class ClientFragment : BaseFragment(), View.OnClickListe private var mCountDownHelper: CountDownButtonHelper? = null private var CLIENT_FRAGMENT_LIST = listOf( PageInfo( - getString(R.string.api_clone), - "com.idormy.sms.forwarder.fragment.client.CloneFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_clone + getString(R.string.api_clone), "com.idormy.sms.forwarder.fragment.client.CloneFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_clone ), PageInfo( - getString(R.string.api_sms_query), - "com.idormy.sms.forwarder.fragment.client.SmsQueryFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_sms_query + getString(R.string.api_sms_query), "com.idormy.sms.forwarder.fragment.client.SmsQueryFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_sms_query ), PageInfo( - getString(R.string.api_sms_send), - "com.idormy.sms.forwarder.fragment.client.SmsSendFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_sms_send + getString(R.string.api_sms_send), "com.idormy.sms.forwarder.fragment.client.SmsSendFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_sms_send ), PageInfo( - getString(R.string.api_call_query), - "com.idormy.sms.forwarder.fragment.client.CallQueryFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_call_query + getString(R.string.api_call_query), "com.idormy.sms.forwarder.fragment.client.CallQueryFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_call_query ), PageInfo( - getString(R.string.api_contact_query), - "com.idormy.sms.forwarder.fragment.client.ContactQueryFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_contact_query + getString(R.string.api_contact_query), "com.idormy.sms.forwarder.fragment.client.ContactQueryFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_contact_query ), PageInfo( - getString(R.string.api_contact_add), - "com.idormy.sms.forwarder.fragment.client.ContactAddFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_contact_add + getString(R.string.api_contact_add), "com.idormy.sms.forwarder.fragment.client.ContactAddFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_contact_add ), PageInfo( - getString(R.string.api_wol), - "com.idormy.sms.forwarder.fragment.client.WolSendFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_wol + getString(R.string.api_wol), "com.idormy.sms.forwarder.fragment.client.WolSendFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_wol ), PageInfo( - getString(R.string.api_location), - "com.idormy.sms.forwarder.fragment.client.LocationFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_location + getString(R.string.api_location), "com.idormy.sms.forwarder.fragment.client.LocationFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_location ), PageInfo( - getString(R.string.api_battery_query), - "com.idormy.sms.forwarder.fragment.client.BatteryQueryFragment", - "{\"\":\"\"}", - CoreAnim.slide, - R.drawable.icon_api_battery_query + getString(R.string.api_battery_query), "com.idormy.sms.forwarder.fragment.client.BatteryQueryFragment", "{\"\":\"\"}", CoreAnim.slide, R.drawable.icon_api_battery_query ), ) @@ -348,8 +311,7 @@ class ClientFragment : BaseFragment(), View.OnClickListe XToastUtils.error(getString(R.string.disabled_on_the_server)) return } - @Suppress("UNCHECKED_CAST") - PageOption.to(Class.forName(item.classPath) as Class).setNewActivity(true).open(this) + @Suppress("UNCHECKED_CAST") PageOption.to(Class.forName(item.classPath) as Class).setNewActivity(true).open(this) } catch (e: Exception) { e.printStackTrace() Log.e(TAG, "onItemClick error: ${e.message}") @@ -380,8 +342,7 @@ class ClientFragment : BaseFragment(), View.OnClickListe var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl).keepJson(true).timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt index d98de60b..48a02105 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt @@ -196,11 +196,11 @@ class LogsFragment : BaseFragment(), MsgPagingAdapter.OnIt .title(R.string.details) .content(detailStr.toString()) .cancelable(true) - .positiveText(R.string.del) + /*.positiveText(R.string.del) .onPositive { _: MaterialDialog?, _: DialogAction? -> viewModel.delete(item.id) XToastUtils.success(R.string.delete_log_toast) - } + }*/ .negativeText(R.string.resend) .onNegative { _: MaterialDialog?, _: DialogAction? -> XToastUtils.toast(R.string.resend_toast) diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/BatteryQueryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/BatteryQueryFragment.kt index 59729a57..1805043c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/BatteryQueryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/BatteryQueryFragment.kt @@ -14,10 +14,8 @@ import com.idormy.sms.forwarder.utils.HttpServerUtils import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.RSACrypt import com.idormy.sms.forwarder.utils.SM4Crypt -import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -66,11 +64,7 @@ class BatteryQueryFragment : BaseFragment() var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl) - .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) - .timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CallQueryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CallQueryFragment.kt index 7dcafec9..a47486ab 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CallQueryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CallQueryFragment.kt @@ -27,13 +27,11 @@ import com.idormy.sms.forwarder.utils.PhoneUtils import com.idormy.sms.forwarder.utils.PlaceholderHelper import com.idormy.sms.forwarder.utils.RSACrypt import com.idormy.sms.forwarder.utils.SM4Crypt -import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.jeremyliao.liveeventbus.LiveEventBus import com.scwang.smartrefresh.layout.api.RefreshLayout import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -221,11 +219,7 @@ class CallQueryFragment : BaseFragment() { var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl) - .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) - .timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt index dd53c340..905db299 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt @@ -359,8 +359,7 @@ class CloneFragment : BaseFragment(), View.OnClickL var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl).keepJson(true).timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactAddFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactAddFragment.kt index 65ff2bcb..7b8ad7d3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactAddFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactAddFragment.kt @@ -14,7 +14,6 @@ import com.idormy.sms.forwarder.utils.* import com.jeremyliao.liveeventbus.LiveEventBus import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -98,11 +97,7 @@ class ContactAddFragment : BaseFragment(), Vie var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl) - .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) - .timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactQueryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactQueryFragment.kt index 05071130..2590dc29 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactQueryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactQueryFragment.kt @@ -27,13 +27,11 @@ import com.idormy.sms.forwarder.utils.PhoneUtils import com.idormy.sms.forwarder.utils.PlaceholderHelper import com.idormy.sms.forwarder.utils.RSACrypt import com.idormy.sms.forwarder.utils.SM4Crypt -import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.jeremyliao.liveeventbus.LiveEventBus import com.scwang.smartrefresh.layout.api.RefreshLayout import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -198,11 +196,7 @@ class ContactQueryFragment : BaseFragment() var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl) - .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) - .timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/LocationFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/LocationFragment.kt index f0879a05..74bdf6bd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/LocationFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/LocationFragment.kt @@ -19,7 +19,6 @@ import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -98,8 +97,7 @@ class LocationFragment : BaseFragment(), View.On var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl).keepJson(true).timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsQueryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsQueryFragment.kt index 6e83dc57..271840aa 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsQueryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsQueryFragment.kt @@ -26,13 +26,11 @@ import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.PlaceholderHelper import com.idormy.sms.forwarder.utils.RSACrypt import com.idormy.sms.forwarder.utils.SM4Crypt -import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.jeremyliao.liveeventbus.LiveEventBus import com.scwang.smartrefresh.layout.api.RefreshLayout import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -209,11 +207,7 @@ class SmsQueryFragment : BaseFragment() { var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl) - .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) - .timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt index 425e6d15..4d8f8ac0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt @@ -15,7 +15,6 @@ import com.idormy.sms.forwarder.utils.* import com.jeremyliao.liveeventbus.LiveEventBus import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -116,11 +115,7 @@ class SmsSendFragment : BaseFragment(), View.OnCl var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl) - .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) - .timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/WolSendFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/WolSendFragment.kt index ef0ae5a4..bfb35fbb 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/WolSendFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/WolSendFragment.kt @@ -18,7 +18,6 @@ import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page @@ -152,11 +151,7 @@ class WolSendFragment : BaseFragment(), View.OnCl var requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - val postRequest = XHttp.post(requestUrl) - .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) - .timeStamp(true) + val postRequest = XHttp.post(requestUrl).keepJson(true).timeStamp(true) when (HttpServerUtils.clientSafetyMeasures) { 2 -> { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtils.kt index 94006403..7d2c9537 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/SendUtils.kt @@ -222,7 +222,7 @@ object SendUtils { if (logId == null || logId == 0L) { if (status == 2) { LiveEventBus.get(EVENT_TOAST_SUCCESS, String::class.java).post(getString(R.string.request_succeeded)) - } else { + } else if (status == 0) { LiveEventBus.get(EVENT_TOAST_ERROR, String::class.java).post(getString(R.string.request_failed) + response) } return diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/XBasicLibInit.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/XBasicLibInit.kt index 7a0dfb25..39305c9c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/XBasicLibInit.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/XBasicLibInit.kt @@ -3,9 +3,12 @@ package com.idormy.sms.forwarder.utils.sdkinit import android.app.Application import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.core.BaseActivity +import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.xuexiang.xaop.XAOP +import com.xuexiang.xhttp2.XHttp import com.xuexiang.xhttp2.XHttpSDK +import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xpage.PageConfig import com.xuexiang.xrouter.launcher.XRouter import com.xuexiang.xui.XUI @@ -61,13 +64,22 @@ class XBasicLibInit private constructor() { if (App.isDebug) { XHttpSDK.debug() } - // XHttpSDK.debug(new CustomLoggingInterceptor()); //设置自定义的日志打印拦截器 //设置网络请求的全局基础地址 XHttpSDK.setBaseUrl("https://gitee.com/") - // //设置动态参数添加拦截器 -// XHttpSDK.addInterceptor(new CustomDynamicInterceptor()); -// //请求失效校验拦截器 -// XHttpSDK.addInterceptor(new CustomExpiredInterceptor()); + //设置自定义的日志打印拦截器 + //XHttpSDK.debug(LoggingInterceptor()) + //设置动态参数添加拦截器 + //XHttpSDK.addInterceptor(CustomDynamicInterceptor()) + //请求失效校验拦截器 + //XHttpSDK.addInterceptor(CustomExpiredInterceptor()) + //设置全局超时时间 + XHttp.getInstance() + .debug(App.isDebug) + .setCacheMode(CacheMode.NO_CACHE) + .setTimeout(SettingUtils.requestTimeout * 1000L) //单次超时时间 + //.setRetryCount(SettingUtils.requestRetryTimes) //超时重试的次数 + //.setRetryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + //.setRetryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 } /** diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt index 6c1e1373..222186a8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt @@ -2,16 +2,15 @@ package com.idormy.sms.forwarder.utils.sender import android.text.TextUtils import android.util.Base64 -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.BarkResult import com.idormy.sms.forwarder.entity.setting.BarkSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import javax.crypto.Cipher @@ -98,12 +97,11 @@ class BarkUtils { request.ignoreHttpsCert() //忽略https证书 .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/DingtalkGroupRobotUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/DingtalkGroupRobotUtils.kt index b61449dc..9f7d4305 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/DingtalkGroupRobotUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/DingtalkGroupRobotUtils.kt @@ -2,16 +2,15 @@ package com.idormy.sms.forwarder.utils.sender import android.text.TextUtils import android.util.Base64 -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.DingtalkResult import com.idormy.sms.forwarder.entity.setting.DingtalkGroupRobotSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import java.net.URLEncoder @@ -100,12 +99,11 @@ class DingtalkGroupRobotUtils private constructor() { XHttp.post(requestUrl) .upJson(requestMsg) .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/DingtalkInnerRobotUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/DingtalkInnerRobotUtils.kt index 5d5a6f87..001be75c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/DingtalkInnerRobotUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/DingtalkInnerRobotUtils.kt @@ -1,18 +1,17 @@ package com.idormy.sms.forwarder.utils.sender import android.text.TextUtils -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.DingtalkInnerRobotResult import com.idormy.sms.forwarder.entity.setting.DingtalkInnerRobotSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SharedPreference import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xutil.net.NetworkUtils @@ -89,8 +88,15 @@ class DingtalkInnerRobotUtils private constructor() { } } - request.upJson(requestMsg).keepJson(true).ignoreHttpsCert().timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).timeStamp(true).execute(object : SimpleCallBack() { + request.upJson(requestMsg) + .keepJson(true) + .ignoreHttpsCert() + .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 + .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { Log.e(TAG, e.detailMessage) @@ -195,11 +201,12 @@ class DingtalkInnerRobotUtils private constructor() { request.upJson(requestMsg).headers("x-acs-dingtalk-access-token", accessToken) .keepJson(true) .ignoreHttpsCert() - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true).execute(object : SimpleCallBack() { + .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 + .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { Log.e(TAG, e.detailMessage) diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/FeishuAppUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/FeishuAppUtils.kt index 23293f35..bd9ac1b3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/FeishuAppUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/FeishuAppUtils.kt @@ -1,18 +1,17 @@ package com.idormy.sms.forwarder.utils.sender import android.text.TextUtils -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.FeishuAppResult import com.idormy.sms.forwarder.entity.setting.FeishuAppSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SharedPreference import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xutil.resource.ResUtils.getString @@ -47,8 +46,16 @@ class FeishuAppUtils private constructor() { val requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") - XHttp.post(requestUrl).upJson(requestMsg).keepJson(true).ignoreHttpsCert().timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).timeStamp(true).execute(object : SimpleCallBack() { + XHttp.post(requestUrl) + .upJson(requestMsg) + .keepJson(true) + .ignoreHttpsCert() + .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 + .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { Log.e(TAG, e.detailMessage) @@ -115,11 +122,12 @@ class FeishuAppUtils private constructor() { val accessToken: String by SharedPreference("feishu_access_token_" + setting.appId, "") XHttp.post(requestUrl).upJson(requestMsg).headers("Authorization", "Bearer $accessToken").keepJson(true) //.ignoreHttpsCert() - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true).execute(object : SimpleCallBack() { + .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 + .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { Log.e(TAG, e.detailMessage) diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/FeishuUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/FeishuUtils.kt index 31c8baee..fc962fea 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/FeishuUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/FeishuUtils.kt @@ -1,21 +1,21 @@ package com.idormy.sms.forwarder.utils.sender import android.util.Base64 -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.FeishuResult import com.idormy.sms.forwarder.entity.setting.FeishuSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import java.nio.charset.StandardCharsets import java.text.SimpleDateFormat -import java.util.* +import java.util.Date +import java.util.Locale import javax.crypto.Mac import javax.crypto.spec.SecretKeySpec @@ -135,12 +135,11 @@ class FeishuUtils private constructor() { XHttp.post(requestUrl) .upJson(requestMsg) .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/GotifyUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/GotifyUtils.kt index 6e14012a..3b7a5a5c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/GotifyUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/GotifyUtils.kt @@ -1,15 +1,14 @@ package com.idormy.sms.forwarder.utils.sender -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.GotifyResult import com.idormy.sms.forwarder.entity.setting.GotifySetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException @@ -55,12 +54,11 @@ class GotifyUtils { .params("priority", setting.priority) .ignoreHttpsCert() //忽略https证书 .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/LoggingInterceptor.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/LoggingInterceptor.kt new file mode 100644 index 00000000..346f60e9 --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/LoggingInterceptor.kt @@ -0,0 +1,130 @@ +package com.idormy.sms.forwarder.utils.sender + +import com.idormy.sms.forwarder.App +import com.idormy.sms.forwarder.utils.Log +import com.idormy.sms.forwarder.utils.SendUtils +import com.xuexiang.xhttp2.interceptor.HttpLoggingInterceptor +import com.xuexiang.xhttp2.utils.HttpUtils +import com.xuexiang.xutil.data.DateUtils +import okhttp3.Connection +import okhttp3.Protocol +import okhttp3.Request +import okhttp3.Response +import okhttp3.ResponseBody +import okhttp3.internal.http.HttpHeaders +import java.io.IOException +import java.text.SimpleDateFormat +import java.util.Locale + +@Suppress("PrivatePropertyName") +class LoggingInterceptor(private val logId: Long) : HttpLoggingInterceptor("custom") { + + private val TAG: String = LoggingInterceptor::class.java.simpleName + + init { + level = if (App.isDebug) Level.BODY else Level.PARAM + } + + override fun log(message: String) { + Log.d(TAG, message) + //状态=-1,不更新原状态 + SendUtils.updateLogs(logId, -1, message) + } + + /** + * 记录请求日志 + * + * @param request + * @param connection + * @throws IOException + */ + @Throws(IOException::class) + override fun logForRequest(request: Request, connection: Connection?) { + if (level != Level.PARAM) { + log("------REQUEST------" + "\nAt " + DateUtils.getNowString(SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()))) + } + val logBody = level == Level.BODY || level == Level.PARAM + val logHeaders = level == Level.BODY || level == Level.HEADERS + val requestBody = request.body() + val hasRequestBody = requestBody != null + val protocol = connection?.protocol() ?: Protocol.HTTP_1_1 + + try { + val requestStartMessage = "--> ${request.method()} ${request.url()} $protocol" + log(requestStartMessage) + + if (logHeaders) { + val headers = request.headers() + for (i in 0 until headers.size()) { + log("\t${headers.name(i)}: ${headers.value(i)}") + } + } + + if (logBody && hasRequestBody) { + if (HttpUtils.isPlaintext(requestBody?.contentType())) { + log("\tbody:" + bodyToString(request)) + } else { + log("\tbody: maybe [file part] , too large too print , ignored!") + } + } + } catch (e: Exception) { + onError(e) + } finally { + if (level != Level.PARAM) { + log("--> END ${request.method()}") + } + } + } + + /** + * 记录响应日志 + * + * @param response + * @param tookMs 请求花费的时间 + * @return + */ + override fun logForResponse(response: Response, tookMs: Long): Response { + if (level != Level.PARAM) { + log("------RESPONSE------" + "\nAt " + DateUtils.getNowString(SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()))) + } + val builder = response.newBuilder() + val clone = builder.build() + var responseBody = clone.body() + val logBody = level == Level.BODY || level == Level.PARAM + val logHeaders = level == Level.BODY || level == Level.HEADERS + + try { + log("<-- ${clone.code()} ${clone.message()} ${clone.request().url()} ($tookMs ms)") + if (logHeaders) { + log(" ") + val headers = clone.headers() + for (i in 0 until headers.size()) { + log("\t${headers.name(i)}: ${headers.value(i)}") + } + log(" ") + } + + if (logBody && HttpHeaders.hasBody(clone)) { + if (HttpUtils.isPlaintext(responseBody?.contentType())) { + val body = responseBody?.string() + log("\tbody:$body") + responseBody = ResponseBody.create(responseBody?.contentType(), body ?: "") + return response.newBuilder().body(responseBody).build() + } else { + log("\tbody: maybe [file part] , too large too print , ignored!") + } + if (level != Level.PARAM) { + log(" ") + } + } + } catch (e: Exception) { + onError(e) + } finally { + if (level != Level.PARAM) { + log("<-- END HTTP") + } + } + return response + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/PushplusUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/PushplusUtils.kt index 844c19ad..8dd1449d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/PushplusUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/PushplusUtils.kt @@ -1,17 +1,16 @@ package com.idormy.sms.forwarder.utils.sender import android.text.TextUtils -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.PushplusResult import com.idormy.sms.forwarder.entity.setting.PushplusSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xutil.resource.ResUtils.getString @@ -69,12 +68,11 @@ class PushplusUtils private constructor() { XHttp.post(requestUrl) .upJson(requestMsg) .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/ServerchanUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/ServerchanUtils.kt index 72843fc6..6216ed10 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/ServerchanUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/ServerchanUtils.kt @@ -1,16 +1,15 @@ package com.idormy.sms.forwarder.utils.sender import android.text.TextUtils -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.ServerchanResult import com.idormy.sms.forwarder.entity.setting.ServerchanSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException @@ -49,12 +48,11 @@ class ServerchanUtils { if (!TextUtils.isEmpty(setting.openid)) request.params("group", setting.openid) request.keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/TelegramUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/TelegramUtils.kt index 945cef6d..96b3069c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/TelegramUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/TelegramUtils.kt @@ -1,23 +1,26 @@ package com.idormy.sms.forwarder.utils.sender import android.text.TextUtils -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.TelegramResult import com.idormy.sms.forwarder.entity.setting.TelegramSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xutil.net.NetworkUtils import okhttp3.Credentials import okhttp3.Response import okhttp3.Route -import java.net.* +import java.net.Authenticator +import java.net.InetSocketAddress +import java.net.PasswordAuthentication +import java.net.Proxy +import java.net.URLEncoder class TelegramUtils private constructor() { companion object { @@ -106,12 +109,11 @@ class TelegramUtils private constructor() { request.keepJson(true) //.ignoreHttpsCert() - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WebhookUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WebhookUtils.kt index 7bd92822..2db86e9d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WebhookUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WebhookUtils.kt @@ -3,16 +3,15 @@ package com.idormy.sms.forwarder.utils.sender import android.annotation.SuppressLint import android.text.TextUtils import android.util.Base64 -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.setting.WebhookSetting import com.idormy.sms.forwarder.utils.AppUtils +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import java.net.URLEncoder @@ -182,12 +181,11 @@ class WebhookUtils { } request.ignoreHttpsCert() //忽略https证书 - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkAgentUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkAgentUtils.kt index 5d755484..3ec04d17 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkAgentUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkAgentUtils.kt @@ -1,19 +1,17 @@ package com.idormy.sms.forwarder.utils.sender import android.text.TextUtils -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo -import com.idormy.sms.forwarder.entity.result.DingtalkResult import com.idormy.sms.forwarder.entity.result.WeworkAgentResult import com.idormy.sms.forwarder.entity.setting.WeworkAgentSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.idormy.sms.forwarder.utils.SharedPreference import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xutil.net.NetworkUtils @@ -87,8 +85,14 @@ class WeworkAgentUtils private constructor() { } } - request.keepJson(true).ignoreHttpsCert().timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).timeStamp(true).execute(object : SimpleCallBack() { + request.keepJson(true) + .ignoreHttpsCert() + .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 + .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { Log.e(TAG, e.detailMessage) @@ -181,11 +185,15 @@ class WeworkAgentUtils private constructor() { } } - request.upJson(requestMsg).keepJson(true).ignoreHttpsCert().timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE).retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true).execute(object : SimpleCallBack() { + request.upJson(requestMsg) + .keepJson(true) + .ignoreHttpsCert() + .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 + .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { Log.e(TAG, e.detailMessage) @@ -197,7 +205,7 @@ class WeworkAgentUtils private constructor() { override fun onSuccess(response: String) { Log.i(TAG, response) - val resp = Gson().fromJson(response, DingtalkResult::class.java) + val resp = Gson().fromJson(response, WeworkAgentResult::class.java) val status = if (resp?.errcode == 0L) 2 else 0 SendUtils.updateLogs(logId, status, response) SendUtils.senderLogic(status, msgInfo, rule, senderIndex, msgId) diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkRobotUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkRobotUtils.kt index bea17616..ef37f782 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkRobotUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/WeworkRobotUtils.kt @@ -1,15 +1,14 @@ package com.idormy.sms.forwarder.utils.sender -import com.idormy.sms.forwarder.utils.Log import com.google.gson.Gson import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.result.WeworkRobotResult import com.idormy.sms.forwarder.entity.setting.WeworkRobotSetting +import com.idormy.sms.forwarder.utils.Log import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.SettingUtils import com.xuexiang.xhttp2.XHttp -import com.xuexiang.xhttp2.cache.model.CacheMode import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException @@ -63,12 +62,11 @@ class WeworkRobotUtils private constructor() { XHttp.post(requestUrl) .upJson(requestMsg) .keepJson(true) - .timeOut((SettingUtils.requestTimeout * 1000).toLong()) //超时时间10s - .cacheMode(CacheMode.NO_CACHE) .retryCount(SettingUtils.requestRetryTimes) //超时重试的次数 - .retryDelay(SettingUtils.requestDelayTime) //超时重试的延迟时间 - .retryIncreaseDelay(SettingUtils.requestDelayTime) //超时重试叠加延时 - .timeStamp(true) + .retryDelay(SettingUtils.requestDelayTime * 1000) //超时重试的延迟时间 + .retryIncreaseDelay(SettingUtils.requestDelayTime * 1000) //超时重试叠加延时 + .timeStamp(true) //url自动追加时间戳,避免缓存 + .addInterceptor(LoggingInterceptor(logId)) //增加一个log拦截器, 记录请求日志 .execute(object : SimpleCallBack() { override fun onError(e: ApiException) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/workers/UpdateLogsWorker.kt b/app/src/main/java/com/idormy/sms/forwarder/workers/UpdateLogsWorker.kt index 6ed6ef01..d7500ad6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/workers/UpdateLogsWorker.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/workers/UpdateLogsWorker.kt @@ -21,8 +21,20 @@ class UpdateLogsWorker( override suspend fun doWork(): Result = withContext(Dispatchers.IO) { try { val sendResponseJson = inputData.getString(Worker.updateLogs) + Log.d("UpdateLogsWorker", "UpdateLogsWorker sendResponseJson: $sendResponseJson") val sendResponse = Gson().fromJson(sendResponseJson, SendResponse::class.java) - Core.logs.updateStatus(sendResponse.logId, sendResponse.status, sendResponse.response + "\nAt " + DateUtils.getNowString(SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()))) + if (sendResponse.logId == 0L) { + Log.e("UpdateLogsWorker", "UpdateLogsWorker error: logId is 0") + return@withContext Result.failure() + } + if (sendResponse.status >= 0) { + val response = sendResponse.response + "\nAt " + DateUtils.getNowString(SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())) + Thread.sleep(100) //让status=-1的日志先更新 + Core.logs.updateStatus(sendResponse.logId, sendResponse.status, response) + } else { + Core.logs.updateResponse(sendResponse.logId, sendResponse.response) + } + return@withContext Result.success() } catch (e: Exception) { e.printStackTrace()