package Ġorg . p anta . miss key nest . repository Ċ Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . p anta . miss key nest . constant . Follow Follower Type Ċ import Ġorg . p anta . miss key nest . entity . Connection Property Ċ import Ġorg . p anta . miss key nest . entity . Follow Property Ċ import Ġorg . p anta . miss key nest . interfaces . I Item Repository Ċ import Ġorg . p anta . miss key nest . network . Ok Http Connection Ċ import Ġorg . p anta . miss key nest . use case . Follow ViewData Maker Ċ import Ġorg . p anta . miss key nest . view data . Follow ViewData Ċ import Ġjava . net . URL Ċ Ċ class ĠFollow Follower Repository ( private Ġval ĠuserId : ĠString , Ġprivate Ġval Ġtype : ĠFollow Follower Type , Ġprivate Ġval Ġconnection Info : ĠConnection Property ) Ġ: ĠI Item Repository < Follow ViewData >{ ĊĊĠĠĠ Ġprivate Ġval Ġhttps Connection Ġ= ĠOk Http Connection () ĊĠĠĠ Ġ/* private Ġval Ġurl Ġ= if ( type Ġ== ĠFollow Follower Type . FOLLOW ING ){ ĊĠĠĠĠĠĠĠ ĠURL ("${ connection Info . domain }/ api / users / followers ") ĊĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠ ĠURL ("${ connection Info . domain }/ api / users / following ") ĊĠĠĠ Ġ}*/ ĊĠĠĠ Ġprivate Ġval Ġfollowing Url Ġ= ĠURL ("${ connection Info . domain }/ api / users / following ") ĊĠĠĠ Ġprivate Ġval Ġfollow er Url Ġ= ĠURL ("${ connection Info . domain }/ api / users / followers ") ĊĊĊĊĠĠĠ Ġoverride Ġfun Ġget Items ( call Back : Ġ( timeline : ĠList < Follow ViewData > ?) Ġ-> ĠUnit ) Ġ= ĠGlobal Scope . launch { ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" userId "] Ġ= ĠuserId ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Back ( getView Data ( map )) ĊĠĠĠĠĠĠĠ Ġ} catch ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Items Use Since Id ( since Id : ĠString , Ġcall Back : Ġ( timeline : ĠList < Follow ViewData > ?) Ġ-> ĠUnit ) Ġ= ĠGlobal Scope . launch { ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" since Id "] Ġ= Ġsince Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" userId "] Ġ= ĠuserId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Back ( getView Data ( map )) ĊĠĠĠĠĠĠĠ Ġ} catch ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Items Use Until Id ( until Id : ĠString , Ġcall Back : Ġ( timeline : ĠList < Follow ViewData > ?) Ġ-> ĠUnit ) Ġ= ĠGlobal Scope . launch { ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" until Id "] Ġ= Ġuntil Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" userId "] Ġ= ĠuserId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Back ( getView Data ( map )) ĊĠĠĠĠĠĠĠ Ġ} catch ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Follow Follower Info ( map : ĠMap < String , ĠString >, Ġurl : ĠURL ): ĠList < Follow Property >? { ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġj ack son ObjectMapper (). writeValue AsString ( map ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġhttps Connection . post String ( url , Ġjson ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif ( result Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ Ġj ack son ObjectMapper (). readValue ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget ViewData ( map : ĠMap < String , ĠString >): ĠList < Follow ViewData >? { ĊĠĠĠĠĠĠĠ Ġval Ġfollow er List Ġ= Ġget Follow Follower Info ( map , Ġfollow er Url ) ĊĠĠĠĠĠĠĠ Ġval Ġfollowing List Ġ= Ġget Follow Follower Info ( map , Ġfollowing Url ) ĊĠĠĠĠĠĠĠ Ġif ( follow er List Ġ== Ġnull Ġ|| Ġfollowing List Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( type Ġ== ĠFollow Follower Type . FOL LOWER ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFollow ViewData Maker (). create Follower View DataList ( following List Ġ= Ġfollowing List , Ġfollow er List Ġ= Ġfollow er List ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFollow ViewData Maker (). create Following View DataList ( following List Ġ= Ġfollowing List , Ġfollow er List Ġ= Ġfollow er List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }