package Ġcom . mad re ain . lib h ulk . config Ċ Ċ import Ġcom . mad re ain . lib h ulk . http . interceptor . I Return Code Error Interceptor Ċ import Ġcom . mad re ain . lib h ulk . http . interceptor . I Version D if Interceptor Ċ import Ġcom . mad re ain . lib h ulk . utils . Log Utils Ċ import Ġokhttp 3 . Http Url Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ import Ġokhttp 3 . Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġjava . lang . RuntimeException Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . collections . HashMap Ċ Ċ /** Ċ Ġ* Ġ@ author Ġmad re ain Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 3 / 1 3 . Ċ Ġ* Ġmodule ï¼ļ Ċ Ġ* Ġdescription ï¼ļ Ċ Ġ*/ Ċ object ĠH ulk Config Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġretrofit : ĠRet rofit ? Ġ= Ġnull ĊĠĠĠ Ġ// æľįåĬ¡ åľ°åĿĢ ĊĠĠĠ Ġprivate Ġvar ĠbaseUrl : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ// return Code Ġ æŃ£å¸¸ æĢģ çļĦåĢ¼ Ġ çľŁ å¯¹ ä¸įåĲĮ æİ¥åı£ è¿ĶåĽŀ æĶ¯æĮģ åįķ æŃ£å¸¸ æĢģ åĢ¼çļĦ è¿ĶåĽŀ ï¼Į ä¹Ł æĶ¯æĮģ å¢ŀ åĪł æĶ¹ æŁ¥ ä¸įåĲĮ æŃ£å¸¸ æĢģ åĢ¼çļĦ è¿ĶåĽŀ ĊĠĠĠ Ġprivate Ġvar Ġret Success : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġret Success List : ĠList < String >? Ġ= Ġnull ĊĠĠĠ Ġ// ç½ĳç»ľ çĽ¸åħ³ ĊĠĠĠ Ġ// æĹ¥å¿Ĺ å¼Ģ åħ³ ĊĠĠĠ Ġprivate Ġvar Ġlog Open Ġ= Ġfalse ĊĠĠĠ Ġ// è¿ŀæİ¥ è¶ħæĹ¶ æĹ¶éĹ´ Ġ åįķä½į ç§Ĵ ĊĠĠĠ Ġprivate Ġvar Ġconnect Timeout : ĠLong Ġ= Ġ 1 0 ĊĠĠĠ Ġ// è¯» è¶ħæĹ¶ æĹ¶éĹ´ ĊĠĠĠ Ġprivate Ġvar Ġread Timeout : ĠLong Ġ= Ġ 1 0 ĊĠĠĠ Ġ// åĨĻ è¶ħæĹ¶ æĹ¶éĹ´ ĊĠĠĠ Ġprivate Ġvar Ġwrite Timeout : ĠLong Ġ= Ġ 1 0 ĊĠĠĠ Ġ// å¼Ĥå¸¸ å¤ĦçĲĨ çļĦ Ġ çĽ¸åħ³ æĭ ¦ æĪª åĻ¨ ĊĠĠĠ Ġ// o K Http æĭ ¦ æĪª åĻ¨ ĊĠĠĠ Ġprivate Ġvar Ġok Http Intercept ors : ĠMutable List < Interceptor >? Ġ= Ġnull ĊĠĠĠ Ġ// æİ¥åı£ è¿ĶåĽŀ Return Code ä¸įæĺ¯ æŃ£å¸¸ æĢģ æĭ ¦ æĪª åĻ¨ ĊĠĠĠ Ġprivate Ġvar Ġret Code Intercept ors : ĠMutable List < I Return Code Error Interceptor >? Ġ= Ġnull ĊĠĠĠ Ġ// æľįåĬ¡ ç«¯ çīĪæľ¬ åĴĮ æľ¬åľ° çīĪæľ¬ ä¸į ä¸Ģèĩ´ æĭ ¦ æĪª åĻ¨ ĊĠĠĠ Ġprivate Ġvar Ġversion D if Intercept ors : ĠMutable List < I Version D if Interceptor >? Ġ= Ġnull ĊĠĠĠ Ġ// æĺ¯åĲ¦ å¼ĢåĲ¯ ç¼ĵåŃĺ ĊĠĠĠ Ġprivate Ġvar Ġcache Open Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġconfig Builder : ĠConfig Builder ? Ġ= Ġnull ĊĠĠĠ Ġ// æĺ¯åĲ¦ å¼ĢåĲ¯ ar outer ĊĠĠĠ Ġprivate Ġvar Ġar outer Open Ġ= Ġtrue ĊĠĠĠ Ġ// è®¾ç½® å¤ļä¸ª BaseUrl ï¼Į éħį åĲĪ é»ĺè®¤ çļĦ DOMAIN _ NAME ĊĠĠĠ Ġprivate Ġvar Ġm DomainName Hub : ĠHashMap < String , ĠHttp Url >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis More BaseUrl Ġ= Ġfalse ĊĠĠĠ Ġ// è®¾ç½® é»ĺè®¤ çļĦ DOMAIN _ NAME ĊĠĠĠ Ġconst Ġval ĠDO MAIN _ NAME Ġ= Ġ" H UL K _ DOMAIN _ NAME " ĊĠĠĠ Ġconst Ġval ĠDO MAIN _ NAME _ HEADER Ġ= ĠDO MAIN _ NAME Ġ+ Ġ": Ġ" ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå¦Ĥæŀľ åľ¨ ĠUrl Ġ åľ°åĿĢ ä¸Ń åĬłåħ¥ æŃ¤ æłĩè¯Ĩ ç¬¦ , Ġæ Ħ ı åĳ³ çĿĢ æĤ¨ æĥ³ å¯¹ æŃ¤ ĠUrl Ġ å¼ĢåĲ¯ è¶ħ çº§ æ¨¡å¼ı , Ġæ ¡ Ĩ æŀ¶ ä¼ļ å°Ĩ Ġ'=' Ġ åĲİ éĿ¢çļĦ æķ°åŃĹ ä½ľä¸º ĠPath Size , ĠæĿ¥ ç¡®è®¤ æľĢç»Ī éľĢè¦ģ è¢« è¶ħ çº§ æ¨¡å¼ı æĽ¿æį¢ çļĦ ĠBase Url ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconst Ġval ĠIDENT IFICATION _ PATH _ SIZE Ġ= Ġ"# baseurl _ path _ size =" ĊĠĠĠ Ġ// å¤ļä¸ª baseurl å°± å¯¹åºĶçļĦ ä¸įåĲĮ return Code Ġ æŃ£å¸¸ æĢģ çļĦåĢ¼ ĊĠĠĠ Ġprivate Ġvar Ġret Success Map : ĠHashMap < String , ĠList < String >> ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġbuilder (): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( config Builder Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Builder Ġ= ĠConfig Builder () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig Builder Ġas ĠConfig Builder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġget Ġset æĸ¹æ³ķ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Ret rofit (): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit Ġ?: Ġthrow ĠRuntimeException (" ret rofit Ġis Ġnull ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget BaseUrl (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠbaseUrl Ġ?: Ġthrow ĠRuntimeException (" baseUrl Ġis Ġnull ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Ret Success (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġret Success ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Ret Success List (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġret Success List Ġ?: ĠArrayList < String >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis A router Open (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġar outer Open ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Connect Timeout (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconnect Timeout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Read Timeout (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread Timeout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Write Timeout (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwrite Timeout ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget Ok Http Intercept ors (): ĠList < Interceptor > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġok Http Intercept ors Ġ?: ĠArrayList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Ret Code Intercept ors (): ĠList < I Return Code Error Interceptor > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġret Code Intercept ors Ġas ĠMutable List < I Return Code Error Interceptor > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Version D if Intercept ors (): ĠList < I Version D if Interceptor >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġversion D if Intercept ors ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Cache Open (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcache Open ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetConfig Builder (): ĠConfig Builder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig Builder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget M DomainName Hub (): ĠHashMap < String , ĠHttp Url >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm DomainName Hub ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget More BaseUrl (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis More BaseUrl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget DomainName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDO MAIN _ NAME ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget DomainName Header (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDO MAIN _ NAME _ HEADER ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Ret Success Map (): ĠHashMap < String , ĠList < String >> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġret Success Map ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġset Ret rofit ( ret rofit : ĠRet rofit ?): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . ret rofit Ġ= Ġretrofit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset BaseUrl ( baseUrl : ĠString ?): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . baseUrl Ġ= ĠbaseUrl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Ret Success ( ret Success : ĠString ?): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . ret Success Ġ= Ġret Success ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Ret Success List ( ret Success List : ĠList < String >? ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . ret Success List Ġ= Ġret Success List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Ret Success List ( ret Success List : ĠString ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . ret Success List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . asList (* ret Success List . split ("," ). to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Log Open ( log Open : ĠBoolean ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . log Open Ġ= Ġlog Open ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset A router Open ( ar outer Open : ĠBoolean ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . ar outer Open Ġ= Ġar outer Open ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Connect Timeout ( connect Timeout : ĠLong ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . connect Timeout Ġ= Ġconnect Timeout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Read Timeout ( read Timeout : ĠLong ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . read Timeout Ġ= Ġread Timeout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Write Timeout ( write Timeout : ĠLong ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . write Timeout Ġ= Ġwrite Timeout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Ok Http Interceptor ( ok Http Interceptor : ĠInter ceptor ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ok Http Intercept ors Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok Http Intercept ors Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġok Http Intercept ors ?. add ( ok Http Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Ok Http Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Switch : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterceptor : ĠInter ceptor ĊĠĠĠĠĠĠĠ Ġ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Switch ) Ġif Ġ( ok Http Intercept ors Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġok Http Intercept ors Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġok Http Intercept ors ?. add ( interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Ret Code Intercept ors ( ret Code Interceptor : ĠI Return Code Error Interceptor ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ret Code Intercept ors Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret Code Intercept ors Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Code Intercept ors ?. add ( ret Code Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Version D if Intercept ors ( version D if Interceptor : ĠI Version D if Interceptor ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( version D if Intercept ors Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion D if Intercept ors Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion D if Intercept ors ?. add ( version D if Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Cache Open ( cache Open : ĠBoolean ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . cache Open Ġ= Ġcache Open ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Config Builder ( config Builder : ĠConfig Builder ?): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH ulk Config . config Builder Ġ= Ġconfig Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Domain ( domain Name : ĠString , Ġdomain Url : ĠString ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m DomainName Hub Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm DomainName Hub Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdomain Url . to Http Url OrNull ()?. let Ġ{ Ġm DomainName Hub ?. put ( domain Name , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// è®¾ç½®ä¸º å¤ļ baseurl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis More BaseUrl Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġfun Ġget Ret Success Map (): ĠHashMap < String , ĠList < String >> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret Success Map Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġadd Ret Success ( domain Name Key : ĠString , Ġret Success : ĠString ): ĠConfig Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ret Success Map Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġret Success Map Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Success List Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . asList (* ret Success . split ("," ). to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Success Map ?. put ( domain Name Key , Ġret Success List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ{} ĊĠĠĠ Ġ} Ċ }