package Ġcom . ap ol log raph ql . apollo . kotlin sample . data Ċ Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo Call Ċ import Ġcom . ap ol log raph ql . apollo . A pol lo Client Ċ import Ġcom . ap ol log raph ql . apollo . api . Response Ċ import Ġcom . ap ol log raph ql . apollo . api . cache . http . Http Cache Policy Ċ import Ġcom . ap ol log raph ql . apollo . exception . A pol lo Exception Ċ import Ġcom . ap ol log raph ql . apollo . kotlin sample . Github Repositories Query Ċ import Ġcom . ap ol log raph ql . apollo . kotlin sample . Github Repository Commits Query Ċ import Ġcom . ap ol log raph ql . apollo . kotlin sample . Github Repository Detail Query Ċ import Ġcom . ap ol log raph ql . apollo . kotlin sample . type . Order Direction Ċ import Ġcom . ap ol log raph ql . apollo . kotlin sample . type . PullRequest State Ċ import Ġcom . ap ol log raph ql . apollo . kotlin sample . type . Repository Order Field Ċ Ċ /** Ċ Ġ* ĠAn Ġimplementation Ġof Ġa Ġ[ GitHub DataSource ] Ġthat Ġshows Ġhow Ġto Ġfetch Ġdata Ġusing Ġcallbacks . Ċ Ġ*/ Ċ class ĠApollo Callback Service ( apollo Client : ĠApollo Client ) Ġ: ĠGitHub DataSource ( apollo Client ) Ġ{ ĊĠ Ġoverride Ġfun Ġfetch Repositories () Ġ{ ĊĠĠĠ Ġval Ġrepositories Query Ġ= ĠGithub Repositories Query ( ĊĠĠĠĠĠĠĠ Ġrepositories Count Ġ= Ġ 5 0 , ĊĠĠĠĠĠĠĠ ĠorderBy Ġ= ĠRepository Order Field . UPDATED _ AT , ĊĠĠĠĠĠĠĠ Ġorder Direction Ġ= ĠOrder Direction . DESC ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġcallback Ġ= Ġobject Ġ: ĠApollo Call . Callback < Github Repositories Query . Data >() Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠApollo Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexception Subject . onNext ( e ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠResponse < Github Repositories Query . Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepositories Subject . onNext ( map Repositories Response To Repositories ( response )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġap ollo Client ĊĠĠĠĠĠĠĠ Ġ. query ( repositories Query ) ĊĠĠĠĠĠĠĠ Ġ. http Cache Policy ( Http Cache Policy . CACHE _ FIRST ) ĊĠĠĠĠĠĠĠ Ġ. enqueue ( callback ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġfetch Repository Detail ( repository Name : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġrepository Detail Query Ġ= ĠGithub Repository Detail Query ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġrepository Name , ĊĠĠĠĠĠĠĠ Ġpull Request States Ġ= ĠlistOf ( PullRequest State . OPEN ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġcallback Ġ= Ġobject Ġ: ĠApollo Call . Callback < Github Repository Detail Query . Data >() Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠApollo Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexception Subject . onNext ( e ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠResponse < Github Repository Detail Query . Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository Detail Subject . onNext ( response ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġap ollo Client ĊĠĠĠĠĠĠĠ Ġ. query ( repository Detail Query ) ĊĠĠĠĠĠĠĠ Ġ. http Cache Policy ( Http Cache Policy . CACHE _ FIRST ) ĊĠĠĠĠĠĠĠ Ġ. enqueue ( callback ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġfetch Commits ( repository Name : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġcommits Query Ġ= ĠGithub Repository Commits Query ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġrepository Name ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġcallback Ġ= Ġobject Ġ: ĠApollo Call . Callback < Github Repository Commits Query . Data >() Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠApollo Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexception Subject . onNext ( e ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠResponse < Github Repository Commits Query . Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhead Commit Ġ= Ġresponse . data ?. viewer ?. repository ?. ref ?. target ?. as Commit ĊĠĠĠĠĠĠĠ Ġval Ġcommits Ġ= Ġhead Commit ?. history ?. edges ?. filter NotNull (). or Empty () ĊĠĠĠĠĠĠĠ Ġcommits Subject . onNext ( commits ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġap ollo Client ĊĠĠĠĠĠĠĠ Ġ. query ( commits Query ) ĊĠĠĠĠĠĠĠ Ġ. http Cache Policy ( Http Cache Policy . CACHE _ FIRST ) ĊĠĠĠĠĠĠĠ Ġ. enqueue ( callback ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcancel Fetching () Ġ{ ĊĠĠĠ Ġ// TODO : ĠDetermine Ġhow Ġto Ġcancel Ġthis Ġwhen Ġthere 's Ġcallbacks ĊĠ Ġ} Ċ } Ċ