/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 . Ċ Ġ*/ Ċ package Ġaws . smithy . kotlin . runtime . http Ċ Ċ import Ġaws . smithy . kotlin . runtime . content . Byte Stream Ċ import Ġaws . smithy . kotlin . runtime . http . content . ByteArray Content Ċ import Ġaws . smithy . kotlin . runtime . http . request . HttpRequest Ċ import Ġaws . smithy . kotlin . runtime . http . request . HttpRequest Builder Ċ import Ġaws . smithy . kotlin . runtime . http . request . dump Request Ċ import Ġaws . smithy . kotlin . runtime . http . request . header Ċ import Ġaws . smithy . kotlin . runtime . http . request . headers Ċ import Ġaws . smithy . kotlin . runtime . http . request . to Builder Ċ import Ġaws . smithy . kotlin . runtime . http . request . url Ċ import Ġaws . smithy . kotlin . runtime . io . Sdk Byte Read Channel Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class ) Ċ class ĠHttpRequest Builder Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġit Build s () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠHttpRequest Builder () ĊĠĠĠĠĠĠĠ Ġbuilder . headers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" x - foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder . url Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" test . amazon . com " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder . header (" x - baz ", Ġ" qu ux ") ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠ ĠassertEquals (" bar ", Ġrequest . headers [" x - foo "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" qu ux ", Ġrequest . headers [" x - baz "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" test . amazon . com ", Ġrequest . url . host ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Http Body . Empty , Ġrequest . body ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Dump Request () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġ" M om ! ... D ad ! ... B ingo ! ... Blue y !" ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠHttpRequest Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġ" test . amazon . com " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ debug / test " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . append (" foo ", Ġ" bar ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" x - baz ", Ġ" qu ux ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" x - baz ", Ġ" qu x ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtest Ġstreaming Ġbodies Ġget Ġreplaced ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchan Ġ= ĠS dk Byte Read Channel ( content . encode To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Ġ= Ġobject Ġ: ĠByte Stream . One Shot Stream () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġcontent Length : ĠLong Ġ= Ġcontent . length . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġread From (): ĠS dk Byte Read Channel Ġ= Ġchan ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġstream . to Http Body () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( builder . body Ġis ĠHttp Body . Streaming ) ĊĠĠĠĠĠĠĠ Ġdump Request ( builder , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( builder . body Ġis ĠHttp Body . Streaming ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġdump Request ( builder , Ġtrue ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( builder . body Ġis ĠHttp Body . Bytes ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" GET Ġ/ debug / test ? foo = bar \ r \ n Host : Ġtest . amazon . com \ r \ n Content - Length : Ġ${ content . length }\ r \ nx - baz : Ġqu ux ; qu x \ r \ n \ r \ n $ content " ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġactual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Request To Builder () Ġ= Ġrun Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠHttpRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod Ġ= ĠHttpMethod . POST , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= ĠUrl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtocol . HTTPS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test . amazon . com ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġ"/ debug / test ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠQuery Parameters Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" q 1 ", Ġ" foo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheaders Ġ= ĠHeaders Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" x - baz ", Ġ" bar ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" x - qu ux ", Ġ" qu x ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= ĠByteArray Content (" foobar ". encode To ByteArray ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġdump Request ( req . to Builder (), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" POST Ġ/ debug / test ? q 1 = foo \ r \ n Host : Ġtest . amazon . com \ r \ n Content - Length : Ġ 6 \ r \ nx - baz : Ġbar \ r \ nx - qu ux : Ġqu x \ r \ n \ r \ n foobar " ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġactual ) ĊĠĠĠ Ġ} Ċ } Ċ