package Ġcom . un ib g . mage ll an us . app . user . model Ċ Ċ import Ġcom . un ib g . mage ll an us . app . common . network . Auth Interceptor Ċ import Ġcom . un ib g . mage ll an us . app . auth . Authentication Provider Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . http .* ĊĊ Ċ interface ĠUser Account API Ġ{ ĊĠĠĠ Ġ@ HEAD ("{ uid }") ĊĠĠĠ Ġ@ Headers ( Auth Interceptor . NO _ AUTH _ HEADER ) ĊĠĠĠ Ġsuspend Ġfun Ġcheck IfExists (@ Path (" uid ") Ġuid : ĠString ): ĠResponse < Void > ĊĊĠĠĠ Ġ@ POST (".") ĊĠĠĠ Ġ@ Headers ( Auth Interceptor . NO _ AUTH _ HEADER ) ĊĠĠĠ Ġsuspend Ġfun Ġsign Up (@ Body Ġuser : ĠUser ): ĠResponse < Void > ĊĊĠĠĠ Ġ@ DELETE (" me ") ĊĠĠĠ Ġsuspend Ġfun Ġdelete (): ĠResponse < Void > ĊĊĠĠĠ Ġ@ PATCH (" me / preferences ") ĊĠĠĠ Ġsuspend Ġfun Ġupdate Preferences (@ Body Ġpreferences : ĠMap < String , Ġ@ Jvm Suppress W ild cards ĠAny ?> ): ĠResponse < Void > ĊĊĠĠĠ Ġ@ GET (" me / preferences ") ĊĠĠĠ Ġsuspend Ġfun Ġget Preferences (): ĠMap < String , ĠAny >? ĊĊĠĠĠ Ġdata Ġclass ĠUser ( val Ġuid : ĠString , Ġval Ġemail : ĠString ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL Ġ= Ġ" http :// 1 0 . 0 . 2 . 2 : 8 0 8 0 / api / users /" ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( provider : ĠAuthentication Provider ): ĠUser Account API Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth Interceptor Ġ= ĠAuth Interceptor ( provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp Interceptor Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Logging Interceptor (). apply Ġ{ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BODY Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( auth Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( http Interceptor ). build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( User Account API :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ