package Ġco . mo el ten . burn down . server Ċ Ċ import Ġio . ktor . client . HttpClient Ċ import Ġio . ktor . client . features . Response Exception Ċ import Ġio . ktor . client . request . get Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġjava . time . LocalDate Ċ Ċ fun ĠHttpClient . authorize To Fit bit ( session Data : ĠFit bit Session Data ) Ġ= ĠFit bit Api ( this , Ġsession Data ) Ċ Ċ private Ġconst Ġval Ġbase Fit bit Url Ġ= Ġ" https :// api . fit bit . com /" Ċ private Ġconst Ġval Ġbase Api Url Ġ= Ġ"$ base Fit bit Url / 1 / user /- /" Ċ Ċ class ĠFit bit Api ( ĊĠ Ġprivate Ġval Ġclient : ĠHttpClient , ĊĠ Ġsession Data : ĠFit bit Session Data Ċ ) Ġ{ ĊĊĠ Ġprivate Ġval ĠaccessToken Ġ= Ġsession Data . accessToken ĊĊĠ Ġprivate Ġsuspend Ġinline Ġfun Ġ< re ified ĠT > Ġget From Fit bit ( url String : ĠString ): ĠResult < T > Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠ ĠResult . Success ( client . get ( url String ) Ġ{ ĊĠĠĠĠĠĠĠ Ġheaders . append (" Authorization ", Ġ" Bearer Ġ$ accessToken ") ĊĠĠĠĠĠĠĠ Ġheaders . append (" Accept - Language ", Ġ" en _ US ") ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ġcatch Ġ( response Exception : ĠResponse Exception ) Ġ{ ĊĠĠĠĠĠ ĠResult . Error ( response Exception ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġsuspend Ġfun Ġget Weight For The Last Month ( endDate : ĠLocalDate ): ĠResult < Weight Response > Ġ{ ĊĠĠĠ Ġreturn Ġget From Fit bit ("${ base Api Url } body / log / weight / date /$ endDate / 1 m . json ") ĊĠ Ġ} Ċ } Ċ Ċ sealed Ġclass ĠResult < out ĠValue > Ġ{ ĊĠ Ġdata Ġclass ĠSuccess < out ĠValue >( val Ġvalue : ĠValue ) Ġ: ĠResult < Value >() ĊĠ Ġdata Ġclass ĠError < Value >( val Ġerror : ĠResponse Exception ) Ġ: ĠResult < Value >() Ċ } Ċ Ċ @ Serializable Ċ data Ġclass ĠWeight Response ( ĊĠ Ġval Ġweight : ĠList < Weight Measurement > Ċ ) Ċ Ċ @ Serializable Ċ data Ġclass ĠWeight Measurement ( ĊĠ Ġval Ġb mi : ĠDouble , ĊĠ Ġval Ġweight : ĠDouble , ĊĠ Ġval Ġfat : ĠDouble , ĊĠ Ġ@ Serializable ( with Ġ= ĠLocalDate Serializer :: class ) Ġval Ġdate : ĠLocalDate , ĊĠ Ġval Ġlog Id : ĠLong , ĊĠ Ġval Ġtime : ĠString , ĊĠ Ġval Ġsource : ĠString Ċ ) Ċ