package Ġmy utils Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . lang . Exception Ċ import Ġjava . net . URL Ċ import Ġjava . time . LocalDate Ċ import Ġjava . util .* Ċ import Ġjavax . net . ssl . Https URLConnection Ċ Ċ enum Ġclass ĠUser Rights Ġ{ ĊĠĠĠ ĠUNKNOWN _ USER , ĠAUTHOR , ĠWAIT ING ; ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Int ( i : ĠInt ) Ġ= Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠUNKNOWN _ USER ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠAUTHOR ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠWAIT ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unexpected Ġrights Ġvalue .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠChannel State Ġ{ ĊĠĠĠ ĠNEW , ĠA VA IL ABLE , ĠU NA VA IL ABLE ; ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Int ( i : ĠInt ) Ġ= Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠNEW ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠA VA IL ABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠU NA VA IL ABLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠArticle State Ġ{ ĊĠĠĠ ĠTEST ING , ĠTEST ED , ĠB AN N ED , ĠU NA VA IL ABLE ; ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Int ( i : ĠInt ) Ġ= Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠTEST ING ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠTEST ED ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠB AN N ED ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> ĠU NA VA IL ABLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unexpected Ġarticle Ġstate Ġvalue .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠZ en User ( val ĠuserId : ĠInt , Ġval Ġusername : ĠString , Ġvar Ġrights : ĠUser Rights ) Ċ data Ġclass ĠZ en Channel ( val Ġauthor Id : ĠInt , Ġval Ġchannel Id : ĠString , Ġvar Ġstate : ĠChannel State ) Ċ data Ġclass ĠZ en Article ( val Ġauthor Id : ĠInt , Ġval Ġchannel Id : ĠString , Ġval Ġtitle : ĠString , Ġval Ġurl : ĠString , Ġvar Ġstate : ĠArticle State , Ġval Ġend Of Testing : ĠLocalDate ) Ċ Ċ suspend Ġfun Ġread Url ( url String : ĠString ): ĠString ? Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( url String ) ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġurl . open Connection () Ġas ĠHttp s URLConnection ĊĠĠĠĠĠĠĠ Ġif Ġ( connection . response Code Ġ!= Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscanner Ġ= ĠScanner ( connection . inputStream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscanner . use Delimiter ("\\ Z ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġscanner . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscanner . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( ex n : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ }