package Ġio . github . k ong pf 8 8 4 8 . rx http . request Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġio . github . k ong pf 8 8 4 8 . rx http . ByteArray RequestBody Ċ import Ġio . github . k ong pf 8 8 4 8 . rx http . Http Constants Ċ import Ġio . github . k ong pf 8 8 4 8 . rx http . Platform Ċ import Ġio . github . k ong pf 8 8 4 8 . rx http . Progress RequestBody Ċ import Ġio . github . k ong pf 8 8 4 8 . rx http . callback . Progress Callback Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . Multipart Body Ċ import Ġokhttp 3 . RequestBody Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ class ĠUpload Request Ġ: ĠPost Request Ġ{ ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( activity : ĠActivity ) Ġ: Ġsuper ( activity ) ĊĠĠĠ Ġconstructor ( fragment : ĠFragment ) Ġ: Ġsuper ( fragment ) ĊĊĠĠĠ Ġoverride Ġfun Ġbuild RequestBody (): ĠRequest Body ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠMultip art Body . Builder (). setType ( Multipart Body . FORM ) ĊĠĠĠĠĠĠĠ Ġval Ġparams : ĠMap < String , ĠAny ?> ? Ġ= Ġget Params () ĊĠĠĠĠĠĠĠ Ġif Ġ(! params . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor (( key , value ) Ġin Ġparams ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġis ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add FormData Part ( key , Ġvalue . name , ĠRequest Body . create ( Http Constants . MIME _ TYPE _ BINARY . to MediaType OrNull (), Ġvalue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( value Ġis ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġactual Context !!. content Resolver . open InputStream ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( inputStream Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠinputStream . read Bytes () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add FormData Part ( key , Ġkey , ĠByteArray RequestBody ( Http Constants . MIME _ TYPE _ BINARY . to MediaType OrNull (), Ġbytes )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add FormData Part ( key , Ġvalue . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠProgress RequestBody ( builder . build (), Ġobject Ġ: ĠProgress Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress ( read Bytes : ĠLong , Ġtotal Bytes : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . get (). default Callback Executor ()?. execute Ġ{ Ġcallback ?. on Progress ( read Bytes , Ġtotal Bytes ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }