package Ġcom . github . v ansp o . t us . interceptor Ċ Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . RequestBody Ċ import Ġok io . Buffered Sink Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ class ĠT us Upload RequestBody ( ĊĠĠĠ Ġval Ġmedia Type : ĠMediaType ?, ĊĠĠĠ Ġval Ġfile : ĠFile , ĊĠĠĠ Ġval Ġfingerprint : ĠString Ġ= Ġ"% s -% d ". format ( file . absolute Path , Ġfile . length ()), ĊĠĠĠ Ġprivate Ġval Ġmetadata : ĠMap < String , ĠString > Ġ= Ġmap Of () Ċ ) Ġ: ĠRequest Body () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠcontentType (): ĠMediaType ? Ġ= Ġmedia Type ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo ( sink : ĠBuffered Sink ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġshould Ġnot Ġbe Ġused Ġdirectly ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Encoded Metadata (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( metadata . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġencoded Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġfirst Element Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġmetadata . entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! first Element ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencoded Ġ+= Ġ"," ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoded Ġ+= Ġkey Ġ+ Ġ" Ġ" Ġ+ Ġbase 6 4 Encode ( value . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Element Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġencoded ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbase 6 4 Encode ( input : ĠByteArray ): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ ĠBase 6 4 . get Encoder (). encode ToString ( input ) Ċ } Ċ