package Ġorg . http 4 k . openapi . v 3 . client Ċ Ċ import Ġcom . squareup . kotlin po et . Code Block Ċ import Ġcom . squareup . kotlin po et . Code Block . Companion . of Ċ import Ġcom . squareup . kotlin po et . Fun Spec Ċ import Ġcom . squareup . kotlin po et . as ClassName Ċ import Ġorg . http 4 k . core . ContentType . Companion . APPLICATION _ FORM _ URL ENCODE D Ċ import Ġorg . http 4 k . core . Filter Ċ import Ġorg . http 4 k . core . Method Ċ import Ġorg . http 4 k . core . Request Ċ import Ġorg . http 4 k . core . Response Ċ import Ġorg . http 4 k . core . cookie . Cookie Ċ import Ġorg . http 4 k . openapi . v 3 . Open Api 3 Spec Ċ import Ġorg . http 4 k . openapi . v 3 . Parameter Spec Ċ import Ġorg . http 4 k . openapi . v 3 . Path Spec Ċ import Ġorg . http 4 k . openapi . v 3 . models . build Model Class Ċ import Ġorg . http 4 k . po et . Property Ċ import Ġorg . http 4 k . po et . Property . Companion . add ReturnType Ċ import Ġorg . http 4 k . po et . add Code Blocks Ċ import Ġorg . http 4 k . po et . as TypeName Ċ import Ġorg . http 4 k . po et . lens Declarations Ċ import Ġorg . http 4 k . po et . package Member Ċ import Ġorg . http 4 k . po et . quoted Name Ċ Ċ fun ĠOpen Api 3 Spec . function ( path : ĠString , Ġmethod : ĠMethod , Ġpath Spec : ĠPath Spec ): ĠFun Spec Ġ{ ĊĠĠĠ Ġval Ġfunction Name Ġ= Ġpath Spec . operation Id Ġ?: Ġmethod . name . toLowerCase () Ġ+ Ġpath . replace ('/', Ġ'_ ') ĊĊĠĠĠ Ġval Ġre ified Path Ġ= Ġpath . replace ("/ {", Ġ"/ \ ${ ") ĊĊĠĠĠ Ġval Ġmessage Bindings Ġ= Ġpath Spec . parameters . map NotNull Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġ"${ it . name } Lens Ġof Ġ${ it . name }" ĊĠĠĠĠĠĠĠ Ġval Ġwith Ġ= Ġpackage Member < Filter >(" with ") ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠParameter Spec . Cookie Spec Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoptional ity Ġ= Ġif Ġ( it . required ) Ġ"" Ġelse Ġ" Ġ?: Ġ\" \"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġof ("\ n .% M (${ it . name } Lens Ġof Ġ% T (${ it . quoted Name ()}, Ġ${ it . name }$ optional ity )) ", Ġwith , ĠCookie :: class . as ClassName ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠParameter Spec . Header Spec Ġ-> Ġof ("\ n .% M ($ binding )", Ġwith ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠParameter Spec . Query Spec Ġ-> Ġof ("\ n .% M ($ binding )", Ġwith ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrequest Ġ= Ġmessage Bindings ĊĠĠĠĠĠĠĠ Ġ. fold ( Code Block . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add (" val Ġrequest Ġ= Ġ% T (% T .$ method , Â· \" $ re ified Path \") ", ĠProperty < Request >(). type , ĠProperty < Method >(). type )) Ġ{ Ġacc , Ġnext Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc . add ( next ) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĊĠĠĠ Ġreturn ĠFun Spec . builder ( function Name ). addAll Parameters From ( path Spec ) ĊĠĠĠĠĠĠĠ Ġ. add ReturnType ( Property < Response >()) ĊĠĠĠĠĠĠĠ Ġ. add Code Blocks ( lens Declarations ( path Spec )) ĊĠĠĠĠĠĠĠ Ġ. add Code ( request ) ĊĠĠĠĠĠĠĠ Ġ. add Code ("\ n return Â· http Handler ( request )") ĊĠĠĠĠĠĠĠ Ġ. build () Ċ } Ċ Ċ private Ġfun ĠFun Spec . Builder . addAll Parameters From ( path Spec : ĠPath Spec ): ĠFun Spec . Builder Ġ{ ĊĠĠĠ Ġval Ġparameters Ġ= Ġpath Spec . parameters . map Ġ{ Ġit . name Ġto Ġit . as TypeName () !! Ġ} ĊĊĠĠĠ Ġval Ġform Params Ġ= Ġpath Spec . request Body ĊĠĠĠĠĠĠĠ Ġ? . content For ( APPLICATION _ FORM _ URL ENCODE D ) ĊĠĠĠĠĠĠĠ Ġ? . schema ĊĠĠĠĠĠĠĠ Ġ? . build Model Class (" form ", Ġempty Map (), Ġmutable Map Of ()) ĊĠĠĠĠĠĠĠ Ġ? . primary Constructor ?. parameters ?. map Ġ{ Ġit . name Ġto Ġit . type Ġ} Ġ?: Ġempty List () ĊĊĠĠĠ Ġreturn Ġ( parameters Ġ+ Ġform Params ). fold ( this ) Ġ{ Ġacc , Ġnext Ġ-> ĊĠĠĠĠĠĠĠ Ġacc . add Parameter ( next . first , Ġnext . second ) ĊĠĠĠ Ġ} Ċ } Ċ