package Ġeu . ant on ink riz . k riz ici . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . util . Log Ċ import Ġeu . ant on ink riz . k riz ici . exceptions . network . Failed Download Exception Ċ import Ġjava . io . OutputStream Writer Ċ import Ġjava . net . Http URLConnection Ċ import Ġjava . net . URL Ċ import Ġjavax . net . ssl . Https URLConnection Ċ Ċ object ĠNetwork Ġ{ ĊĠĠĠ Ġclass ĠResult Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġsuccess : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġresult : ĠByteArray ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġexception : ĠFailed Download Exception ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval Ġencoding : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġval ĠcontentType : ĠString ?) ĊĊĠĠĠ Ġfun Ġdown loader ( request Url : ĠString , Ġmethod : ĠMETHOD , Ġdata : ĠString ?, Ġauth : ĠString ?, ĠcontentType : ĠString ?): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInit Ġconnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( request Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcon Ġ= Ġif Ġ( url . protocol Ġ== Ġ" https ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . open Connection () Ġas ĠHttp s URLConnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . open Connection () Ġas ĠHttp URLConnection ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcon . setRequest Property (" Content - Type ", ĠcontentType Ġ?: Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcon . request Method Ġ= Ġmethod . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcon . connect Timeout Ġ= ĠConst s . SERVER _ TIMEOUT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcon . read Timeout Ġ= ĠConst s . SERVER _ TIMEOUT ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd ĠJWT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( auth Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcon . setRequest Property (" Authorization ", Ġ" Bearer Ġ$ auth ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpost : ĠOutputStream Writer ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd ĠPOST Ġrequest Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( method Ġ== ĠMETHOD . POST Ġ&& Ġdata Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Ġ= ĠOutputStream Writer ( con . output Stream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . write ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost . flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Code Ġ= Ġcon . response Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Code Ġ== ĠHttp s URLConnection . HTTP _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġcon . inputStream ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRead Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġinput . read Bytes () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult ( true , Ġresponse , Ġnull , Ġcon . content Encoding , Ġcon . contentType ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" NETWORK ", Ġ" Response Ġcode : Ġ$ response Code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" NETWORK ", Ġcon . response Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ?. close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" NETWORK ", Ġe . message Ġ?: Ġ"< no Ġmessage Ġprovided >") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResult ( false , Ġnull , ĠFailed Download Exception (" Failed Ġto Ġdownload Ġfile Ġ'$ request Url '", Ġ 0 ), Ġnull , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Network Connection ( c : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnectivity Manager Ġ= Ġc . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( connectivity Manager Ġis ĠConnect ivity Manager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Info : ĠNetwork Info ? Ġ= Ġconnectivity Manager . active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Info ?. isConnected Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠMETHOD Ġ{ ĊĠĠĠĠĠĠĠ ĠGET , ĊĠĠĠĠĠĠĠ ĠPOST ĊĠĠĠ Ġ} Ċ } Ċ