package Ġbr . com . h oo v . don ations . Store Ċ Ċ import Ġandroid . os . Build Ċ import Ġbr . com . h oo v . don ations . Model . Comment Ċ import Ġbr . com . h oo v . don ations . Model . Don ation Ċ import Ġbr . com . h oo v . don ations . Utilities . Void Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . http .* Ċ import Ġcom . google . gson . Gson Builder Ċ Ċ private Ġval Ġserver : ĠServer Interface Ġby Ġlazy Ġ{ ĊĠĠĠ Ġval Ġinterceptor Ġ= ĠHttp Logging Interceptor (). setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient . Builder (). add Interceptor ( interceptor ). build () ĊĊĠĠĠ Ġval Ġgson Ġ= ĠGson Builder () ĊĠĠĠĠĠĠĠ Ġ. set DateFormat (" yyyy - MM - dd ĠHH : mm : ss . SSSS SS ") ĊĠĠĠĠĠĠĠ Ġ. create () ĊĊĠĠĠ Ġval Ġretrofit : ĠRet rofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( gson )) ĊĠĠĠĠĠĠĠ Ġ. baseUrl ( Server . base URL ) ĊĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġretrofit . create ( Server Interface :: class . java ) Ċ } Ċ Ċ class ĠServer Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġlocalhost Ġdomain , Ġwhether Ġwe 're Ġusing Ġsimulator Ġor Ġa Ġphysical Ġdevice . ĠNote Ġthat Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġphysical Ġdevice Ġdomain Ġmust Ġbe Ġupdated Ġalways Ġthat Ġwe Ġchange Ġnetwork Ġor Ġrenew Ġthe Ġserver ĊĠĠĠĠĠĠĠĠ Ġ* Ġlease Ġin Ġthe Ġnetwork . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdomain Ġ= Ġif Ġ( Build . F ING ER PRINT . contains (" generic ")) Ġ" 1 0 . 0 . 2 . 2 " Ġelse Ġ" 1 9 2 . 1 6 8 . 1 5 . 1 6 " ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġbase URL Ġ= Ġ" http :// $ domain : 8 0 8 0 / JSON Rest WebService Example / Java Code G eek s /" ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġfetch Don ations ( completion Handler : Ġ( List < Don ation > ?, ĠThrowable ?) Ġ-> ĠVoid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver . get Don ations (). enqueue ( object Ġ: ĠCallback < List < Don ation >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( p 0 : ĠCall < List < Don ation >>, Ġresponse : ĠResponse < List < Don ation >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġresponse . body () Ġ?: Ġreturn Ġcompletion Handler ( null , ĠError (" An Ġunknown Ġresponse Ġwas Ġreceived .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ( results , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( p 0 : ĠCall < List < Don ation >> ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ( null , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġfetch Don ation Comments ( don ation ID : ĠInt , Ġcompletion Handler : Ġ( List < Comment > ?, ĠThrowable ?) Ġ-> ĠVoid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver . get Don ation Comments ( don ation ID ). enqueue ( object Ġ: ĠCallback < List < Comment >> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( p 0 : ĠCall < List < Comment >>, Ġresponse : ĠResponse < List < Comment >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomments Ġ= Ġresponse . body () Ġ?: Ġreturn Ġcompletion Handler ( null , ĠError (" An Ġunknown Ġresponse Ġwas Ġreceived .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted Comments Ġ= Ġcomments . sorted By Ġ{ Ġit . creation Date Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ( sorted Comments , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( p 0 : ĠCall < List < Comment >> ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ( null , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġpost Comment For Don ation ( don ation ID : ĠInt , Ġcomment : ĠString , Ġcompletion Handler : Ġ( Comment ?, ĠThrowable ?) Ġ-> ĠVoid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver . post Comment For Don ation ( don ation ID , Ġcomment ). enqueue ( object Ġ: ĠCallback < Comment > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" NAME _ SH ADO WING ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( p 0 : ĠCall < Comment >, Ġresponse : ĠResponse < Comment >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġresponse . body () Ġ?: Ġreturn Ġcompletion Handler ( null , ĠError (" An Ġunknown Ġresponse Ġwas Ġreceived .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ( comment , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( p 0 : ĠCall < Comment > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion Handler ( null , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġinterface ĠServer Interface Ġ{ ĊĠĠĠ Ġ@ GET (" don ations ") ĊĠĠĠ Ġfun Ġget Don ations (): ĠCall < List < Don ation >> ĊĠĠĠ Ġ@ GET (" don ations /{ id }/ comments ") ĊĠĠĠ Ġfun Ġget Don ation Comments (@ Path (" id ") Ġdon ation ID : ĠInt ): ĠCall < List < Comment >> ĊĠĠĠ Ġ@ Form Url Encoded ĊĠĠĠ Ġ@ POST (" don ations /{ id }/ comments ") ĊĠĠĠ Ġfun Ġpost Comment For Don ation (@ Path (" id ") Ġid : ĠInt , Ġ@ Field (" comment ") Ġcomment : ĠString ): ĠCall < Comment > Ċ } Ċ