package Ġcom . mn . data . tweets Ċ Ċ import Ġcom . mn . data . common . request Ċ import Ġcom . mn . data . common . with Network Ċ import Ġcom . mn . domain . Network Handler Ċ import Ġcom . mn . domain . common . Either Ċ import Ġcom . mn . domain . common . Failure Ċ import Ġcom . mn . domain . use case . tweets . Tweet Ċ import Ġcom . mn . domain . use case . tweets . T weets Repository Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠT weets Repository Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġtweets Api : ĠT weets Api , ĊĠĠĠ Ġprivate Ġval Ġnetwork Handler : ĠNetwork Handler Ċ ) Ġ: ĠT weets Repository Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtweets Mapper Ġby Ġlazy Ġ{ ĠTweet Mapper () Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget T weets ( count : ĠInt ): ĠEither < Failure , ĠList < Tweet >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnetwork Handler . with Network Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest ( tweets Api . get Home Time Line ( count )) Ġ{ Ġtweets Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtweets . map Ġ{ Ġtweets Mapper ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Tweet ( id : ĠString ): ĠEither < Failure , ĠTweet > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnetwork Handler . with Network Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest ( tweets Api . get Tweet ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtweets Mapper ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġret weet ( id : ĠString ): ĠEither < Failure , ĠUnit > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnetwork Handler . with Network Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest ( tweets Api . ret weet ( id )) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġun Re Tweet ( id : ĠString ): ĠEither < Failure , ĠUnit > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnetwork Handler . with Network Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest ( tweets Api . un ret weet ( id )) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }