package Ġcom . by but ter . sis y ph us . starter . grpc . trans coding . support . swagger . utils Ċ Ċ import Ġcom . by but ter . sis y ph us . protobuf . Proto Types Ċ import Ġcom . by but ter . sis y ph us . protobuf . primitives . Descriptor Proto Ċ import Ġcom . by but ter . sis y ph us . protobuf . primitives . Enum Descriptor Proto Ċ import Ġcom . by but ter . sis y ph us . protobuf . primitives . EnumValue Options Ċ import Ġcom . by but ter . sis y ph us . protobuf . primitives . FieldDescriptor Proto Ċ import Ġcom . by but ter . sis y ph us . protobuf . string Ċ import Ġcom . by but ter . sis y ph us . starter . grpc . trans coding . support . swagger . Swagger Router Function Ċ import Ġcom . google . protobuf . Descriptor Protos Ċ import Ġio . swagger . v 3 . o as . models . media . Array Schema Ċ import Ġio . swagger . v 3 . o as . models . media . Boolean Schema Ċ import Ġio . swagger . v 3 . o as . models . media . Integer Schema Ċ import Ġio . swagger . v 3 . o as . models . media . Number Schema Ċ import Ġio . swagger . v 3 . o as . models . media . Object Schema Ċ import Ġio . swagger . v 3 . o as . models . media . Schema Ċ import Ġio . swagger . v 3 . o as . models . media . String Schema Ċ Ċ object ĠSwagger Schema Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠFetch Ġswagger Ġschema . ĊĠĠĠĠ Ġ* Ġ ĠIf Ġproto Ġfield Ġtype Ġis ĠMessage , field Ġtype Ġname Ġis Ġreturned Ġfor Ġnext Ġgeneration . ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġfetch Schema Model ( path : ĠString ): ĠSchema Model Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠfileDescriptor Ġ= ĠProto Types . getFile Containing Symbol ( path ) ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= ĠProto Types . get Descriptor By Symbol ( path ) Ġas ĠDescriptor Proto ĊĠĠĠĠĠĠĠ Ġval Ġfield Descriptors Ġ= Ġdescriptor . field ĊĠĠĠĠĠĠĠ Ġval Ġsub Type Names Ġ= Ġmutable Set Of < String >() ĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠObject Schema (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Path Ġ= ĠlistOf ( Descriptor Protos . FileDescriptor Proto . MESSAGE _ TYPE _ FIELD _ NUMBER , ĠfileDescriptor ?. message Type ?. indexOf ( descriptor )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( field Ġin Ġfield Descriptors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhether Ġthe Ġfield Ġis Ġdecor ated Ġby Ġ' repeated '. ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepeated Ġ= Ġfield . label Ġ== ĠField Descriptor Proto . Label . RE PE ATED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Schema Ġ= Ġif Ġ( field . type Ġ== ĠField Descriptor Proto . Type . MESSAGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Type Names . add ( field . typeName . trim ('. ')) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Schema (). `$ ref `( Swagger Router Function . COMPONENTS _ SCH EM AS _ PREFIX Ġ+ Ġfield . typeName . trim ('. ')) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Schema ( field . type , Ġfield . typeName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . add Properties ( field . json Name , Ġ( if Ġ( repeated ) ĠArray Schema (). items ( field Schema ) Ġelse Ġfield Schema ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSwagger Description . fetch Description ( message Path Ġ+ ĠlistOf ( Descriptor Protos . FileDescriptor Proto . PACKAGE _ FIELD _ NUMBER , Ġfield Descriptors . indexOf ( field )), ĠfileDescriptor )?. let Ġ{ Ġdescription Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġdescriptor . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠSwagger Description . fetch Description ( message Path , ĠfileDescriptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSchema Model ( schema , Ġsub Type Names ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠGet Ġschema Ġother Ġthan ĠField Descriptor Proto . Type . MESSAGE . ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġfetch Schema ( type : ĠField Descriptor Proto . Type , ĠtypeName : ĠString ): ĠSchema < out ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Descriptor Proto . Type . INT 3 2 Ġ-> ĠInteger Schema (). format (" int 3 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Descriptor Proto . Type . INT 6 4 Ġ-> ĠInteger Schema (). format (" int 6 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Descriptor Proto . Type . DOUBLE Ġ-> ĠNumber Schema (). format (" double ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Descriptor Proto . Type . FLOAT Ġ-> ĠNumber Schema (). format (" float ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Descriptor Proto . Type . BOOL Ġ-> ĠBoolean Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Descriptor Proto . Type . ENUM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUse ĠString Schema Ġif Ġthe Ġenum Ġcontains Ġstring Ġextensions , Ġotherwise Ġuse ĠInteger Schema ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenum Value Descriptions Ġ= Ġ( Proto Types . get Descriptor By Symbol ( typeName ) Ġas ĠEnum Descriptor Proto ). value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenum Values Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Options Ġ= Ġenum Value Descriptions . last OrNull ()?. has Options () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenum Value Descriptions . forEach Ġ{ Ġdescription Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Options ) Ġenum Values . add ( EnumValue Options . parse ( description . options !!. to Proto ()). string ) Ġelse Ġenum Values . add ( description . number . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Options ) ĠString Schema (). _ enum ( enum Values ) Ġelse ĠInteger Schema (). format (" int 3 2 "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġenum Values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Enum Item ( value . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠString Schema () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠSchema Model ( ĊĠĠĠ Ġvar Ġschema : ĠSchema <* >, ĊĠĠĠ Ġvar Ġsub Type Names : ĠSet < String > Ċ ) Ċ