package Ġs unday . movie . data . api Ċ Ċ import Ġio . ktor . client . HttpClient Ċ import Ġio . ktor . client . engine . HttpClient Engine Ċ import Ġio . ktor . client . features . json . Json Feature Ċ import Ġio . ktor . client . features . json . serializer . Kotlin x Serializer Ċ import Ġio . ktor . client . request . get Ċ import Ġio . ktor . client . request . header Ċ import Ġio . ktor . client . request . parameter Ċ import Ġio . ktor . client . response . HttpResponse Ċ import Ġio . ktor . client . response . read Text Ċ import Ġio . ktor . http . URL Protocol Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġs unday . movie . data . model . ApiError Ċ import Ġs unday . movie . data . model . Auth Ċ import Ġs unday . movie . data . model . Either Ċ import Ġs unday . movie . data . model . Movie Api DTO Ċ Ċ private Ġconst Ġval ĠBASE _ URL Ġ= Ġ" api . the mov ied b . org / 4 " Ċ private Ġconst Ġval ĠHEADER _ AUTHORIZATION Ġ= Ġ" Authorization " Ċ private Ġconst Ġval ĠEN CODE D _ PATH Ġ= Ġ"/ discover / movie " Ċ private Ġconst Ġval ĠBE AR ER Ġ= Ġ" Bearer Ġ" Ċ private Ġconst Ġval ĠSORT _ BY Ġ= Ġ" sort _ by " Ċ private Ġconst Ġval ĠDESC Ġ= Ġ" pop ularity . desc " Ċ Ċ @ Suppress (" EXPERIMENT AL _ API _ USAGE ") Ċ class ĠMovie Api Impl ( client Engine : ĠHttpClient Engine ) Ġ: ĠMovie Api Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġclient Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHttpClient ( client Engine ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( Json Feature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠKotlin x Serializer ( Json . non strict ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Movies (): ĠEither < ApiError , ĠMovie Api DTO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . get < HttpResponse > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Ġ= ĠURL Protocol . HTTPS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= ĠBASE _ URL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoded Path Ġ= ĠEN CODE D _ PATH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameter ( SORT _ BY , ĠDESC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( HEADER _ AUTHORIZATION , ĠBE AR ER Ġ+ ĠAuth . TOKEN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Body Ġ= Ġresponse . read Text () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠJson . parse ( Movie Api DTO . serializer (), Ġjson Body ) ĊĠĠĠĠĠĠĠ Ġreturn ĠEither . Right ( result ) ĊĠĠĠ Ġ} Ċ }