package Ġcom . jay ch ang . s ac . demo Ċ Ċ import Ġandroid . net . Uri Ċ import Ġcom . google . gson . annotations . SerializedName Ċ import Ġcom . jay ch ang . s ac .* Ċ import Ġcom . jay ch ang . s ac . annotation . Mock Response Ċ import Ġcom . jay ch ang . s ac . annotation . Multi Part Ċ import Ġcom . jay ch ang . s ac . annotation . Response Key Path Ċ import Ġcom . jay ch ang . s ac . demo . model . Image Ċ import Ġcom . jay ch ang . s ac . demo . model . Repo Ċ import Ġcom . jay ch ang . s ac . demo . model . User Ċ import Ġio . reactivex . Observable Ċ import Ġretrofit 2 . http .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠApi Result < T Ġ: ĠAny > Ġ: ĠSimple Api Result < T > Ġ{ ĊĠ Ġ@ SerializedName (" items ") ĊĠ Ġoverride Ġlateinit Ġvar Ġresult : ĠT Ċ } Ċ Ċ class ĠApi Error Ġ: ĠSimple ApiError Ġ{ ĊĠ Ġ@ SerializedName (" message ") ĊĠ Ġoverride Ġlateinit Ġvar Ġmessage : ĠString Ċ } Ċ Ċ interface ĠGithub Api Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġcreate (): ĠGithub Api Ġ= ĊĠĠĠĠĠ ĠSimple ApiClient . create Ġ{ ĊĠĠĠĠĠĠĠ ĠbaseUrl Ġ= Ġ" https :// api . github . com " ĊĠĠĠĠĠĠĠ ĠerrorMessage Key Path Ġ= Ġ" message " ĊĠĠĠĠĠĠĠ Ġdefault Parameters Ġ= Ġmap Of () ĊĠĠĠĠĠĠĠ Ġdefault Headers Ġ= Ġmap Of () ĊĠĠĠĠĠĠĠ Ġconnect Timeout Ġ= ĠTimeUnit . MIN UTES . to Millis ( 1 ) ĊĠĠĠĠĠĠĠ Ġread Timeout Ġ= ĠTimeUnit . MIN UTES . to Millis ( 1 ) ĊĠĠĠĠĠĠĠ Ġwrite Timeout Ġ= ĠTimeUnit . MIN UTES . to Millis ( 1 ) ĊĠĠĠĠĠĠĠ Ġis St eth o Enabled Ġ= Ġtrue Ġ// Ġdefault : Ġtrue ĊĠĠĠĠĠĠĠ Ġlog Level Ġ= ĠLogLevel . BASIC Ġ// Ġdefault : ĠNONE ĊĠĠĠĠĠĠĠ Ġis Mock Data Enabled Ġ= Ġtrue Ġ// Ġdefault : Ġfalse ĊĠĠĠĠĠĠĠ Ġcertificate P ins Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠ ĠCertificate Pin ( hostname Ġ= Ġ" api . foo . com ", Ġsha 1 PublicKey Hash Ġ= Ġ" 0 be ec 7 b 5 ea 3 f 0 f dbc 9 5 d 0 dd 4 7 f 3 c 5 bc 2 7 5 da 8 a 3 3 "), ĊĠĠĠĠĠĠĠĠĠ ĠCertificate Pin ( hostname Ġ= Ġ" api . bar . com ", Ġsha 2 5 6 PublicKey Hash Ġ= Ġ" fc de 2 b 2 ed ba 5 6 bf 4 0 8 6 0 1 fb 7 2 1 fe 9 b 5 c 3 3 8 d 1 0 ee 4 2 9 ea 0 4 fae 5 5 1 1 b 6 8 fbf 8 fb 9 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġjson Parser Ġ= ĠGson Parser () Ġ// Ġdefault : ĠGson Parser ĊĠĠĠĠĠĠĠ ĠerrorHandler Ġ= Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAuthentication Error Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠClient Error Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠServer Error Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNetwork Error Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSS LError Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ GET ("/ search / users ") Ċ // Ġ Ġ@ Un wrap ( Api Result :: class ) ĊĠ Ġ@ Response Key Path (" foo . bar . items ") ĊĠ Ġ@ Mock Response ( R . raw . get _ users ) ĊĠ Ġfun Ġget Users (@ Query (" q ") Ġquery : ĠString ): ĠObservable < List < User >> ĊĊĠ Ġ@ GET ("/ repos /{ user }/{ repo }") ĊĠ Ġfun Ġget Repo (@ Path (" user ") Ġuser : ĠString , Ġ@ Path (" repo ") Ġrepo : ĠString ): ĠObservable < Repo > ĊĊĠ Ġ@ POST ("/ upload ") ĊĠ Ġfun Ġupload Photo (@ Body Ġ@ Multi Part ( name Ġ= Ġ" image ", ĠmimeType Ġ= Ġ" image / jpeg ") Ġfile : ĠUri ): ĠObservable < Image > ĊĊĠ Ġ// Ġretrofit Ġdoesn 't Ġsupport Ġwildcard Ġparameter Ġlike ĠList < out ĠT >, ĊĠ Ġ// Ġyou Ġcan Ġsolve Ġit Ġby Ġusing Ġ@ Jvm Suppress W ild cards , ĊĠ Ġ// Ġor Ġyou Ġcan Ġuse ĠArrayList < T > Ġwhich Ġis Ġnot Ġwildcard ĊĠ Ġ@ POST ("/ upload ") ĊĠ Ġfun Ġupload Photos (@ Body Ġ@ Multi Part ( name Ġ= Ġ" image ", ĠmimeType Ġ= Ġ" image / jpeg ") Ġfiles : ĠArrayList < Uri >): ĠObservable < Image > Ċ Ċ } Ċ