Commit 0286388b authored by tongzifang's avatar tongzifang

add kick out

parent b9b8c23b
...@@ -63,7 +63,7 @@ repositories { ...@@ -63,7 +63,7 @@ repositories {
mavenCentral() mavenCentral()
} }
group 'com.qmai.android.fetch' group 'com.qmai.android.fetch'
version '1.0.007' version '1.0.010'
gradlePublish { gradlePublish {
......
...@@ -3,6 +3,7 @@ package com.qimai.android.fetch.convert ...@@ -3,6 +3,7 @@ package com.qimai.android.fetch.convert
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.TypeAdapter import com.google.gson.TypeAdapter
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import com.qimai.android.fetch.interceptors.AppKickOut
import com.qimai.android.fetch.interceptors.ApprovalNode import com.qimai.android.fetch.interceptors.ApprovalNode
import com.qimai.android.fetch.interceptors.GsonParseError import com.qimai.android.fetch.interceptors.GsonParseError
import com.qimai.android.fetch.interceptors.ServerError import com.qimai.android.fetch.interceptors.ServerError
...@@ -24,7 +25,8 @@ import java.lang.reflect.Type ...@@ -24,7 +25,8 @@ import java.lang.reflect.Type
class StandardGsonConvertFactory constructor( class StandardGsonConvertFactory constructor(
private var gson: Gson, private var gson: Gson,
var expire: TokenExpire?, var expire: TokenExpire?,
var approval: ApprovalNode? = null var approval: ApprovalNode? = null,
var appKickOut: AppKickOut? = null
) : ) :
Converter.Factory() { Converter.Factory() {
lateinit var adapter: TypeAdapter<out Any> lateinit var adapter: TypeAdapter<out Any>
...@@ -35,9 +37,14 @@ class StandardGsonConvertFactory constructor( ...@@ -35,9 +37,14 @@ class StandardGsonConvertFactory constructor(
return StandardGsonConvertFactory(gson, null) return StandardGsonConvertFactory(gson, null)
} }
fun create(gson: Gson, expire: TokenExpire, approval: ApprovalNode? = null): StandardGsonConvertFactory { fun create(
gson: Gson,
expire: TokenExpire,
approval: ApprovalNode? = null,
appKickOut: AppKickOut? = null
): StandardGsonConvertFactory {
if (gson == null) throw Throwable("gson == null") if (gson == null) throw Throwable("gson == null")
return StandardGsonConvertFactory(gson, expire, approval) return StandardGsonConvertFactory(gson, expire, approval, appKickOut)
} }
} }
...@@ -47,7 +54,7 @@ class StandardGsonConvertFactory constructor( ...@@ -47,7 +54,7 @@ class StandardGsonConvertFactory constructor(
retrofit: Retrofit retrofit: Retrofit
): Converter<ResponseBody, *>? { ): Converter<ResponseBody, *>? {
adapter = gson.getAdapter(TypeToken.get(type)) adapter = gson.getAdapter(TypeToken.get(type))
return StandardGsonResponseBodyConverter(adapter, gson, type, expire, approval) return StandardGsonResponseBodyConverter(adapter, gson, type, expire, approval, appKickOut)
} }
} }
...@@ -4,6 +4,7 @@ import android.text.TextUtils ...@@ -4,6 +4,7 @@ import android.text.TextUtils
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.JsonSyntaxException import com.google.gson.JsonSyntaxException
import com.google.gson.TypeAdapter import com.google.gson.TypeAdapter
import com.qimai.android.fetch.interceptors.AppKickOut
import com.qimai.android.fetch.interceptors.ApprovalNode import com.qimai.android.fetch.interceptors.ApprovalNode
import com.qimai.android.fetch.interceptors.TokenExpire import com.qimai.android.fetch.interceptors.TokenExpire
import com.qimai.android.fetch.model.BaseData import com.qimai.android.fetch.model.BaseData
...@@ -26,7 +27,8 @@ class StandardGsonResponseBodyConverter<T> constructor( ...@@ -26,7 +27,8 @@ class StandardGsonResponseBodyConverter<T> constructor(
var gson: Gson, var gson: Gson,
var type: Type, var type: Type,
var expire: TokenExpire?, var expire: TokenExpire?,
var approvalNode: ApprovalNode? = null var approvalNode: ApprovalNode? = null,
var appKickOut: AppKickOut? = null
) : ) :
Converter<ResponseBody, T> { Converter<ResponseBody, T> {
...@@ -34,13 +36,17 @@ class StandardGsonResponseBodyConverter<T> constructor( ...@@ -34,13 +36,17 @@ class StandardGsonResponseBodyConverter<T> constructor(
val reponseString = value.string() val reponseString = value.string()
// throw TOKENExpireException("token过期") // throw TOKENExpireException("token过期")
val baseData = gson.fromJson(reponseString, BaseData::class.java) ?: throw UnknownHostException() val baseData =
gson.fromJson(reponseString, BaseData::class.java) ?: throw UnknownHostException()
if (TextUtils.equals("false", baseData.status)) { if (TextUtils.equals("false", baseData.status)) {
value.close() value.close()
if (baseData.code == 9001L) { if (baseData.code == 9001L) {
//这里如果先结束 //这里如果先结束
expire?.expre() expire?.expre()
throw TOKENExpireException("登录超时", reponseString) throw TOKENExpireException("登录超时", reponseString)
} else if (baseData.code == 9010L) {
appKickOut?.kickOut(reponseString)
throw TOKENExpireException("", reponseString)
} else if (baseData.code == 230630L || baseData.code == 999999999L) { } else if (baseData.code == 230630L || baseData.code == 999999999L) {
approvalNode?.approval(reponseString) approvalNode?.approval(reponseString)
throw ApprovalNodeException("", reponseString) throw ApprovalNodeException("", reponseString)
......
package com.qimai.android.fetch.interceptors
interface AppKickOut {
fun kickOut(resStr :String)
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment