package Ġio . fresh d roid . v iny l . core . network Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġokhttp 3 . Multipart Body Ċ import Ġretrofit 2 . Response Ċ import Ġjavax . inject . Inject Ċ Ċ const Ġval ĠKEY _ HEADER _ CONTENT _ TYPE Ġ= Ġ" Content - Type " Ċ const Ġval ĠDEFAULT _ CONTENT _ TYPE Ġ= Ġ" application / json " Ċ Ċ class ĠHttp Transition Factory Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapi Service : ĠApi Service Ċ ) Ġ: ĠHttp Transition Factory Type Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ( headers : ĠMap < String , ĠString > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition : ĠHttp Transition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultipart Body : ĠMultip art Body . Part ? ĊĠĠĠ Ġ): ĠObservable < Response < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( transition . verb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Verb . GET Ġ-> Ġthis . get ( headers , Ġtransition , Ġparameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Verb . POST Ġ-> Ġthis . post ( headers , Ġtransition , Ġparameters , Ġmultipart Body ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Verb . PUT Ġ-> Ġthis . put ( headers , Ġtransition , Ġparameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Verb . PATCH Ġ-> Ġthis . patch ( headers , Ġtransition , Ġparameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Verb . DELETE Ġ-> Ġthis . delete ( headers , Ġtransition , Ġparameters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget ( headers : ĠMap < String , ĠString > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Transition : ĠHttp Transition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠqueryParams : ĠString ? ĊĠĠĠ Ġ): ĠObservable < Response < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġhttp Transition . accept Ġ?: ĠDEFAULT _ CONTENT _ TYPE ĊĠĠĠĠĠĠĠ Ġval Ġheader Map Ġ= Ġhash Map Of ( Pair ( KEY _ HEADER _ CONTENT _ TYPE , ĠcontentType )) ĊĠĠĠĠĠĠĠ Ġheaders ?. let Ġ{ Ġheader Map . put All ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠqueryParams ?. let Ġ{ Ġ"${ http Transition . url } ?$ it " Ġ} Ġ?: Ġhttp Transition . url ĊĊĠĠĠĠĠĠĠ Ġreturn Ġapi Service . get ( header Map , Ġurl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpost ( headers : ĠMap < String , ĠString > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Transition : ĠHttp Transition , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmultipart Body : ĠMultip art Body . Part ? ĊĠĠĠ Ġ): ĠObservable < Response < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġhttp Transition . accept Ġ?: ĠDEFAULT _ CONTENT _ TYPE ĊĠĠĠĠĠĠĠ Ġval Ġheader Map Ġ= Ġhash Map Of ( Pair ( KEY _ HEADER _ CONTENT _ TYPE , ĠcontentType )) ĊĠĠĠĠĠĠĠ Ġheaders ?. let Ġ{ Ġheader Map . put All ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( multipart Body Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . post ( header Map , Ġhttp Transition . url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . post ( header Map , Ġhttp Transition . url , Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . post ( http Transition . url , Ġmultipart Body ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġput ( headers : ĠMap < String , ĠString > ?, Ġhttp Transition : ĠHttp Transition , Ġbody : ĠString ?): ĠObservable < Response < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġhttp Transition . accept Ġ?: ĠDEFAULT _ CONTENT _ TYPE ĊĠĠĠĠĠĠĠ Ġval Ġheader Map Ġ= Ġhash Map Of ( Pair ( KEY _ HEADER _ CONTENT _ TYPE , ĠcontentType )) ĊĠĠĠĠĠĠĠ Ġheaders ?. let Ġ{ Ġheader Map . put All ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( body Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . put ( header Map , Ġhttp Transition . url ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . put ( header Map , Ġhttp Transition . url , Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpatch ( headers : ĠMap < String , ĠString > ?, Ġhttp Transition : ĠHttp Transition , Ġbody : ĠString ?): ĠObservable < Response < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġhttp Transition . accept Ġ?: ĠDEFAULT _ CONTENT _ TYPE ĊĠĠĠĠĠĠĠ Ġval Ġheader Map Ġ= Ġhash Map Of ( Pair ( KEY _ HEADER _ CONTENT _ TYPE , ĠcontentType )) ĊĠĠĠĠĠĠĠ Ġheaders ?. let Ġ{ Ġheader Map . put All ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( body Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . patch ( header Map , Ġhttp Transition . url ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . patch ( header Map , Ġhttp Transition . url , Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete ( headers : ĠMap < String , ĠString > ?, Ġhttp Transition : ĠHttp Transition , Ġbody : ĠString ?): ĠObservable < Response < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠcontentType Ġ= Ġhttp Transition . accept Ġ?: ĠDEFAULT _ CONTENT _ TYPE ĊĠĠĠĠĠĠĠ Ġval Ġheader Map Ġ= Ġhash Map Of ( Pair ( KEY _ HEADER _ CONTENT _ TYPE , ĠcontentType )) ĊĠĠĠĠĠĠĠ Ġheaders ?. let Ġ{ Ġheader Map . put All ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( body Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . delete ( header Map , Ġhttp Transition . url ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . delete ( header Map , Ġhttp Transition . url , Ġbody ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }