package Ġcom . dav oh . oauth 2 _ twitch . data Ċ Ċ import Ġcom . dav oh . oauth 2 _ twitch . domain . AccessToken Ċ import Ġcom . dav oh . oauth 2 _ twitch . domain . Game Ċ import Ġcom . dav oh . oauth 2 _ twitch . domain . RefreshToken Ċ import Ġcom . dav oh . oauth 2 _ twitch . domain . Top Games Ċ import Ġio . reactivex . rx java 3 . core . Comp letable Ċ import Ġio . reactivex . rx java 3 . core . Flow able Ċ import Ġio . reactivex . rx java 3 . core . Maybe Ċ import Ġio . reactivex . rx java 3 . core . Single Ċ Ċ class ĠTop Games Repository ( ĊĠĠĠ Ġprivate Ġval Ġremote Top Games DataSource : ĠRemote Top Games DataSource , ĊĠĠĠ Ġprivate Ġval Ġlocal Game DataSource : ĠLocal Game DataSource Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġget Top Games ( auth Header : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclientId : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbefore : String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst : Int ): ĠSingle < Top Games > Ġ= ĊĠĠĠĠĠĠĠ Ġremote Top Games DataSource . get Top Games ( auth Header , clientId , Ġafter , before , first ) ĊĊĠĠĠ Ġfun ĠgetAll Favorite Games (): ĠFlow able < List < Game >> Ġ= ĊĠĠĠĠĠĠĠ Ġlocal Game DataSource . getAll Favorite Games () ĊĊĠĠĠ Ġfun Ġget Favorite Game Status ( game Id : ĠInt ): ĠMaybe < Boolean > Ġ= ĊĠĠĠĠĠĠĠ Ġlocal Game DataSource . get Favorite Game Status ( game Id ) ĊĊĠĠĠ Ġfun Ġupdate Favorite Game Status ( game : Game ): ĠMaybe < Boolean > Ġ= ĊĠĠĠĠĠĠĠ Ġlocal Game DataSource . update Game Status ( game ) Ċ Ċ } Ċ Ċ class ĠOAuth 2 Tw itch Repository ( ĊĠĠĠ Ġprivate Ġval Ġremote OAuth 2 Tw itch DataSource : ĠRemote OAuth 2 Tw itch DataSource Ċ ){ ĊĠĠĠ Ġfun ĠgetToken ( clientId : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Secret : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Type : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġredirect Uri : ĠString ): ĠSingle < AccessToken > Ġ= ĊĠĠĠĠĠĠĠ Ġremote OAuth 2 Tw itch DataSource . getToken ( clientId , Ġclient Secret , Ġcode , Ġgrant Type , Ġredirect Uri ) ĊĊĠĠĠ Ġfun Ġre voke Token ( clientId : String , ĊĠĠĠ Ġtoken : String ): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ Ġremote OAuth 2 Tw itch DataSource . revoke Token ( clientId , Ġtoken ) ĊĊĠĠĠ Ġfun Ġrefresh Token ( grant Type : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Token : String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclientId : String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Secret : String ): Single < RefreshToken > Ġ= ĊĠĠĠĠĠĠĠ Ġremote OAuth 2 Tw itch DataSource . refresh Token ( grant Type , Ġrefresh Token , ĠclientId , Ġclient Secret ) Ċ }