package Ġcom . mo sp oly tech . mo sp oly helper . data . schedule . api Ċ Ċ import Ġio . ktor . client .* Ċ import Ġio . ktor . client . call .* Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . client . statement .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . utils . io .* Ċ Ċ class ĠSchedule Client ( ĊĠĠĠ Ġprivate Ġval Ġclient : ĠHttpClient Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL Ġ= Ġ" https :// r asp . dm ami . ru " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGET _ SCHED ULE Ġ= Ġ"$ BASE _ URL / site / group " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGET _ SCHED ULES _ ALL Ġ= Ġ"$ BASE _ URL / semester . json " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGET _ SCHED ULES _ SESSION _ ALL Ġ= Ġ"$ BASE _ URL / session . json " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL _ TE AC HER Ġ= Ġ" https :// k af . dm ami . ru " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGET _ SCHED ULE _ TE AC HER Ġ= Ġ"$ BASE _ URL _ TE AC HER / lessons / teacher - html " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Schedule By Group ( group Title : ĠString , Ġis Session : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . get ( GET _ SCHED ULE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" refer er ", ĠBASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġjson Ġerror Ġstatus Ġif Ġschedule Ġis Ġnot Ġready Ġinstead Ġhtml ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" X - Requested - With ", Ġ" XML HttpRequest ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameter (" group ", Ġgroup Title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameter (" session ", Ġif Ġ( is Session ) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Schedule By Teacher ( teacher Id : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . get ( GET _ SCHED ULE _ TE AC HER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" refer er ", ĠBASE _ URL _ TE AC HER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" X - Requested - With ", Ġ" XML HttpRequest ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameter (" id ", Ġteacher Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Schedules ( is Session : ĠBoolean , Ġon Progress : Ġ( Float ) Ġ-> ĠUnit Ġ= Ġ{ Ġ}): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . get < Http Statement >( if Ġ( is Session ) ĠGET _ SCHED ULES _ SESSION _ ALL Ġelse ĠGET _ SCHED ULES _ ALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" refer er ", ĠBASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor Ġjson Ġerror Ġstatus Ġif Ġschedule Ġis Ġnot Ġready Ġinstead Ġhtml ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" X - Requested - With ", Ġ" XML HttpRequest ") ĊĠĠĠĠĠĠĠ Ġ}. execute Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġresponse . receive < Byte Read Channel >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Length Ġ= Ġresponse . content Length ()?. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( content Length ) Ġ{ Ġ" Header Ġneeds Ġto Ġbe Ġset Ġby Ġserver " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġread Bytes : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( content Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Bytes Ġ= Ġchannel . read Available ( buffer , Ġtotal , Ġ 4 0 9 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ+= Ġread Bytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Progress ( total . toFloat () Ġ/ Ġcontent Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( read Bytes Ġ> Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠString ( buffer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }