package Ġcom . wis nia . vide oo o . repository . login Ċ Ċ import Ġcom . wis nia . vide oo o . data . authentication . Guest Session Ċ import Ġcom . wis nia . vide oo o . data . authentication . Session Ċ import Ġcom . wis nia . vide oo o . repository . authentication . Login Repository Ċ import Ġcom . wis nia . vide oo o . repository . session . Http Session Repository Ċ import Ġcom . wis nia . vide oo o . repository . token . Http Token Repository Ċ import Ġio . reactivex . Single Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠLogin Data Repository Ġ@ Inject Ġconstructor ( private Ġval Ġhttp Login Repository : ĠHttp Login Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġhttp Token Repository : ĠHttp Token Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġhttp Session Repository : ĠHttp Session Repository ) Ġ: ĠLogin Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġsign In ( username : ĠString , Ġpassword : ĠString ): ĠSingle < Session > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhttp Token Repository . token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġhttp Login Repository . signIn ( username , Ġpassword , Ġit . token ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġhttp Session Repository . session ( it . token ) Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġsign In As Guest : ĠSingle < Guest Session > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhttp Session Repository . guest Session Ċ } Ċ