package Ġcom . ap ol log raph ql . apollo 3 . api Ċ Ċ import Ġok io . Buffered Sink Ċ import Ġok io . Buffered Source Ċ import Ġok io . ByteString Ċ import Ġok io . ByteString . Companion . encode Utf 8 Ċ import Ġok io . ByteString . Companion . to ByteString Ċ import Ġok io . use Ċ Ċ /** Ċ Ġ* ĠAn Ġ[ Upload ] Ġthat Ġwrites Ġdata Ġfrom Ġthe Ġprovided Ġcontent Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġcontent Ġis Ġa Ġ[ buffered Source ], Ġthe Ġ[ Default Upload ] Ġwill Ġclose Ġit Ġonce Ġuploaded Ċ Ġ* ĠIf Ġthe Ġcontent Ġis Ġa Ġ[ byte String ], Ġthe Ġ[ Default Upload ] Ġcan Ġbe Ġreused Ċ Ġ*/ Ċ class ĠDefault Upload Ġinternal Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġbuffered Source : ĠBuffered Source ?, ĊĠĠĠ Ġprivate Ġval Ġbyte String : ĠByte String ?, ĊĠĠĠ Ġoverride Ġval ĠcontentType : ĠString , ĊĠĠĠ Ġoverride Ġval Ġcontent Length : ĠLong , ĊĠĠĠ Ġoverride Ġval ĠfileName : ĠString ?, Ċ ) Ġ: ĠUpload Ġ{ ĊĠ Ġoverride Ġfun ĠwriteTo ( sink : ĠBuffered Sink ) Ġ{ ĊĠĠĠ Ġif Ġ( buffered Source Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġbuffered Source . use Ġ{ ĊĠĠĠĠĠĠĠ Ġsink . write All ( it ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġif Ġ( byte String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġsink . write ( byte String ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġerror (" No Ġupload Ġcontent Ġfound ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġclass ĠBuilder Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġbuffered Source : ĠBuffered Source ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbyte String : ĠByte String ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠcontentType : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcontent Length : ĠLong Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar ĠfileName : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġhas Content : ĠBoolean ĊĠĠĠĠĠ Ġget () Ġ= Ġbuffered Source Ġ!= Ġnull Ġ|| Ġbyte String Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġcontent ( content : ĠBuffered Source ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġcheck (! has Content ) Ġ{ Ġ" content () Ġcan Ġonly Ġbe Ġcalled Ġonce " Ġ} ĊĠĠĠĠĠ Ġthis . buffered Source Ġ= Ġcontent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcontent ( content : ĠString ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġcheck (! has Content ) Ġ{ Ġ" content () Ġcan Ġonly Ġbe Ġcalled Ġonce " Ġ} ĊĠĠĠĠĠ Ġthis . byte String Ġ= Ġcontent . encode Utf 8 () ĊĠĠĠĠĠ Ġthis . content Length Ġ= Ġcontent . length . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcontent ( byte String : ĠByte String ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġcheck (! has Content ) Ġ{ Ġ" content () Ġcan Ġonly Ġbe Ġcalled Ġonce " Ġ} ĊĠĠĠĠĠ Ġthis . byte String Ġ= Ġbyte String ĊĠĠĠĠĠ Ġthis . content Length Ġ= Ġbyte String . size . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcontent ( byteArray : ĠByteArray ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġcheck (! has Content ) Ġ{ Ġ" content () Ġcan Ġonly Ġbe Ġcalled Ġonce " Ġ} ĊĠĠĠĠĠ Ġthis . byte String Ġ= ĠbyteArray . to ByteString () ĊĠĠĠĠĠ Ġthis . content Length Ġ= ĠbyteArray . size . to Long () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠcontentType ( contentType : ĠString ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġthis . contentType Ġ= ĠcontentType ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcontent Length ( content Length : ĠLong ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġthis . content Length Ġ= Ġcontent Length ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠfileName ( fileName : ĠString ): ĠBuilder Ġ= Ġapply Ġ{ ĊĠĠĠĠĠ Ġthis . fileName Ġ= ĠfileName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild (): ĠDefault Upload Ġ{ ĊĠĠĠĠĠ Ġreturn ĠDefault Upload ( ĊĠĠĠĠĠĠĠĠĠ Ġbuffered Source , ĊĠĠĠĠĠĠĠĠĠ Ġbyte String , ĊĠĠĠĠĠĠĠĠĠ ĠcontentType Ġ?: Ġ" application / octet - stream ", ĊĠĠĠĠĠĠĠĠĠ Ġcontent Length , ĊĠĠĠĠĠĠĠĠĠ ĠfileName ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }