package Ġcom . example . am ir sk ii . ws atl ant test . repository Ċ Ċ import Ġandroid . arch . lifecycle . LiveData Ċ import Ġandroid . util . Log Ċ import Ġcom . example . am ir sk ii . ws atl ant test . Model . Login Response Ċ import Ġcom . example . am ir sk ii . ws atl ant test . Model . Resource Ċ import Ġcom . example . am ir sk ii . ws atl ant test . api . ApiResponse Ċ import Ġcom . example . am ir sk ii . ws atl ant test . api . ApiService Ċ import Ġokhttp 3 . RequestBody Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton ĊĊ Ċ @ Singleton Ċ class ĠMy Repository Ġ@ Inject Ġconstructor ( val Ġservice : ĠApi Service , Ġval Ġsession Manager : ĠSession Manager ) Ġ{ ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > get Network Data ( service Call : Ġ() Ġ-> ĠLive Data < ApiResponse < T >> ): ĠLive Data < Resource < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject : ĠNetwork Only Repository < T , ĠT >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsave Loaded Data ( item : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfetch Service (): ĠLive Data < ApiResponse < T >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġservice Call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Fetch Failed ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" 1 1 1 ", Ġ" on Fetch Failed Ġ: Ġ$ error ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}. as LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġjson 2 Body ( json : ĠString ) Ġ= ĠRequest Body . create ( okhttp 3 . MediaType . parse (" application / json ; Ġcharset = utf - 8 "), Ġjson ) ĊĊĠĠĠ Ġfun Ġlogin ( email : ĠString , Ġpassword : ĠString ): ĠLive Data < Resource < Login Response >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġjson 2 Body ("{ Ġ\" email \": Ġ\"$ email \", Ġ\" password \": Ġ\"$ password \" Ġ} ") ĊĠĠĠĠĠĠĠ Ġreturn Ġget Network Data { Ġservice . login ( body ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Token ( token : ĠString , ĠuserInfo : ĠString ) Ġ= Ġsession Manager . save Token ( token , ĠuserInfo ) ĊĠĠĠ Ġfun Ġget Session () Ġ= Ġsession Manager . sessionId ĊĠĠĠ Ġfun ĠgetUser Info () Ġ= Ġsession Manager . userInfo ĊĊĠĠĠ Ġfun Ġdelete Token () Ġ= Ġsession Manager . delete Token () Ċ } Ċ