package Ġch . r my . android . http _ shortcuts . activities . editor Ċ Ċ import Ġandroid . app . Application Ċ import Ġch . r my . android . http _ shortcuts . R Ċ import Ġch . r my . android . http _ shortcuts . data . Repository Ċ import Ġch . r my . android . http _ shortcuts . data . Transactions Ċ import Ġch . r my . android . http _ shortcuts . data . enums . Shortcut Execution Type Ċ import Ġch . r my . android . http _ shortcuts . data . models . Header Ċ import Ġch . r my . android . http _ shortcuts . data . models . Parameter Ċ import Ġch . r my . android . http _ shortcuts . data . models . Response Handling Ċ import Ġch . r my . android . http _ shortcuts . data . models . Shortcut Ċ import Ġch . r my . android . http _ shortcuts . data . models . Shortcut . Companion . TEMP OR ARY _ ID Ċ import Ġch . r my . android . http _ shortcuts . extensions . get Case Ins ensitive Ċ import Ġch . r my . android . http _ shortcuts . extensions . get Quantity String Ċ import Ġch . r my . android . http _ shortcuts . extensions . getString Ċ import Ġch . r my . android . http _ shortcuts . extensions . type Ċ import Ġch . r my . android . http _ shortcuts . http . HttpHeaders Ċ import Ġch . r my . android . http _ shortcuts . icons . Icons Ċ import Ġch . r my . android . http _ shortcuts . icons . Shortcut Icon Ċ import Ġch . r my . android . http _ shortcuts . script ing . shortcuts . Trigger Shortcut Manager Ċ import Ġch . r my . android . http _ shortcuts . utils . Rx Utils Ċ import Ġch . r my . android . http _ shortcuts . utils . UUID Utils . new UUID Ċ import Ġch . r my . android . http _ shortcuts . utils . Validation Ċ import Ġch . r my . curl command . Curl Command Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġio . realm . Realm Ċ import Ġjava . net . URL Decoder Ċ Ċ class ĠShort cut Editor ViewModel ( application : ĠApplication ) Ġ: ĠBasic Shortcut Editor ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġvar Ġis Initialized : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġvar Ġis Saving : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġcategory Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġshortcut Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġinitial Icon : ĠShort cut Icon Ġ= ĠShort cut Icon . No Icon ĊĠĠĠ Ġprivate Ġvar Ġexecution Type : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġinit ( categoryId : ĠString ?, Ġshortcut Id : ĠString ?, Ġcurl Command : ĠC url Command ?, Ġexecution Type : ĠString ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠComp letable . complete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . categoryId Ġ= Ġcategory Id ĊĠĠĠĠĠĠĠ Ġthis . shortcut Id Ġ= Ġshortcut Id ĊĠĠĠĠĠĠĠ Ġthis . execution Type Ġ= Ġexecution Type ĊĠĠĠĠĠĠĠ Ġreturn ĠTransactions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Ġ{ Ġrealm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshortcut Ġ= Ġif Ġ( shortcut Id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Icon Ġ= ĠIcons . getRandom Initial Icon ( getApplication ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrealm . copy To Realm OrUpdate ( createNew Shortcut ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository . copy Shortcut ( realm , ĠRepository . get Shortcut ById ( realm , Ġshortcut Id ) !! , ĠTEMP OR ARY _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurl Command ?. let Ġ{ Ġcurl Command Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport From Curl ( realm , Ġshortcut , Ġcurl Command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Complete Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Initialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate New Shortcut (): ĠShort cut Ġ= ĊĠĠĠĠĠĠĠ ĠShort cut ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠTEMP OR ARY _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġinitial Icon , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Type Ġ= Ġexecution Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Handling Ġ= Ġif Ġ( execution Type Ġ== ĠShort cut Execution Type . APP . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Handling () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġhas Changes (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Shortcut Ġ= Ġshortcut Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠRepository . get Shortcut ById ( pers isted Realm , Ġit ) Ġ?: Ġreturn Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġcreate New Shortcut () ĊĠĠĠĠĠĠĠ Ġval Ġnew Shortcut Ġ= Ġget Shortcut ( pers isted Realm ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġ! new Shortcut . is Same As ( old Shortcut ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetName And Description ( name : ĠString , Ġdescription : ĠString ): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ ĠTransactions . commit Ġ{ Ġrealm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Shortcut ( realm )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname . trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . description Ġ= Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Icon ( icon : ĠShort cut Icon ): ĠComp letable Ġ= ĊĠĠĠĠĠĠĠ ĠTransactions . commit Ġ{ Ġrealm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Shortcut ( realm )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . icon Ġ= Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtry Save (): ĠSingle < Save Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġshortcut Id Ġ?: Ġnew UUID () ĊĠĠĠĠĠĠĠ Ġvar Ġname : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġicon : ĠShort cut Icon ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠTransactions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit Ġ{ Ġrealm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshortcut Ġ= ĠRepository . get Shortcut ById ( realm , ĠTEMP OR ARY _ ID ) Ġ?: Ġreturn @ commit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġshortcut . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġshortcut . icon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Shortcut ( shortcut ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Shortcut Ġ= ĠRepository . copy Shortcut ( realm , Ġshortcut , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( shortcut Id Ġ== Ġnull Ġ&& Ġcategory Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository . get Category ById ( realm , Ġcategory Id !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . shortcuts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . add ( new Shortcut ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepository . delete Shortcut ( realm , ĠTEMP OR ARY _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Then ( Rx Utils . single Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSave Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon Ġ= Ġicon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Saving Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Event Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Saving Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Shortcut ( shortcut : ĠShort cut ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( shortcut . name . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠShort cut ValidationError ( VALIDATION _ ERROR _ EMPTY _ NAME ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( shortcut . type . requires Http Url Ġ&& Ġ! Validation . is Accept able Http Url ( shortcut . url )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ( shortcut . type . uses Url Ġ&& Ġ! shortcut . type . requires Http Url Ġ&& Ġ! Validation . is Accept able Url ( shortcut . url )) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠShort cut ValidationError ( VALIDATION _ ERROR _ INVALID _ URL ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Toolbar Subtitle ( shortcut : ĠShort cut ): ĠCharSequence ? Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( shortcut . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Execution Type . BROWSER Ġ-> ĠgetString ( R . string . subtitle _ editor _ toolbar _ browser _ shortcut ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Execution Type . SCRIPT ING Ġ-> ĠgetString ( R . string . subtitle _ editor _ toolbar _ script ing _ shortcut ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Execution Type . TRIGGER Ġ-> ĠgetString ( R . string . subtitle _ editor _ toolbar _ trigger _ shortcut ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Basic Settings Subtitle ( shortcut : ĠShort cut ): ĠCharSequence Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( shortcut . type Ġ== ĠShort cut Execution Type . BROWSER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( shortcut . url . isEmpty () Ġ|| Ġshortcut . url Ġ== Ġ" http :// ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . subtitle _ basic _ request _ settings _ url _ only _ prompt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( shortcut . url . isEmpty () Ġ|| Ġshortcut . url Ġ== Ġ" http :// ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . subtitle _ basic _ request _ settings _ prompt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . subtitle _ basic _ request _ settings _ pattern , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . method , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Headers Settings Subtitle ( shortcut : ĠShort cut ): ĠCharSequence Ġ= ĊĠĠĠĠĠĠĠ Ġget Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . headers . size , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . subtitle _ request _ headers _ none , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . subtitle _ request _ headers _ pattern , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget RequestBody Settings Subtitle ( shortcut : ĠShort cut ): ĠCharSequence Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( shortcut . allows Body ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( shortcut . request Body Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut . REQUEST _ BODY _ TYPE _ FORM _ DATA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut . REQUEST _ BODY _ TYPE _ X _ WW W _ FORM _ URL ENCODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġget Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . parameters . size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . subtitle _ request _ body _ params _ none , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . subtitle _ request _ body _ params _ pattern , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut . REQUEST _ BODY _ TYPE _ FILE Ġ-> ĠgetString ( R . string . subtitle _ request _ body _ file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġif Ġ( shortcut . body Content . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . subtitle _ request _ body _ none ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . subtitle _ request _ body _ custom , Ġshortcut . contentType ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . subtitle _ request _ body _ not _ available , Ġshortcut . method ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Authentication Settings Subtitle ( shortcut : ĠShort cut ): ĠCharSequence Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( shortcut . authentication ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut . AUTHENT ICATION _ BASIC Ġ-> ĠgetString ( R . string . subtitle _ authentication _ basic ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut . AUTHENT ICATION _ DIG EST Ġ-> ĠgetString ( R . string . subtitle _ authentication _ digest ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut . AUTHENT ICATION _ BE AR ER Ġ-> ĠgetString ( R . string . subtitle _ authentication _ bearer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠgetString ( R . string . subtitle _ authentication _ none ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Script ing Subtitle ( shortcut : ĠShort cut ): ĠCharSequence Ġ= ĊĠĠĠĠĠĠĠ ĠgetString ( when Ġ( shortcut . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Execution Type . SCRIPT ING Ġ-> ĠR . string . label _ script ing _ script ing _ shortcuts _ subtitle ĊĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut Execution Type . BROWSER Ġ-> ĠR . string . label _ script ing _ browser _ shortcuts _ subtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . label _ script ing _ subtitle ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġfun Ġget Trigger Shortcut s Subtitle ( shortcut : ĠShort cut ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠTrigger Shortcut Manager . get Triggered Shortcut s From Code ( shortcut . code On Prepare ). size ĊĠĠĠĠĠĠĠ Ġreturn Ġget Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . label _ trigger _ shortcuts _ subtitle _ none , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . label _ trigger _ shortcuts _ subtitle ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠSave Result ( val Ġid : ĠString , Ġval Ġname : ĠString ?, Ġval Ġicon : ĠShort cut Icon ?) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠVALID ATION _ ERROR _ EMPTY _ NAME Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠVALID ATION _ ERROR _ INVALID _ URL Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġimport From Curl ( realm : ĠRealm , Ġshortcut : ĠShort cut , Ġcurl Command : ĠC url Command ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . method Ġ= Ġcurl Command . method ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . url Ġ= Ġcurl Command . url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . username Ġ= Ġcurl Command . username ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . password Ġ= Ġcurl Command . password ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( curl Command . username . isNotEmpty () Ġ|| Ġcurl Command . password . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . authentication Ġ= ĠShort cut . AUTHENT ICATION _ BASIC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . timeout Ġ= Ġcurl Command . timeout ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( curl Command . uses Binary Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . request Body Type Ġ= ĠShort cut . REQUEST _ BODY _ TYPE _ FILE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( curl Command . is FormData Ġ|| Ġcurl Command . data . all Ġ{ Ġdata Ġ-> Ġdata . count Ġ{ Ġit Ġ== Ġ'=' Ġ} Ġ== Ġ 1 Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . request Body Type Ġ= Ġif Ġ( curl Command . is FormData ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut . REQUEST _ BODY _ TYPE _ FORM _ DATA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShort cut . REQUEST _ BODY _ TYPE _ X _ WW W _ FORM _ URL ENCODE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Parameters ( realm , Ġcurl Command , Ġshortcut ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . body Content Ġ= Ġcurl Command . data . join ToString ( separator Ġ= Ġ"& ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . request Body Type Ġ= ĠShort cut . REQUEST _ BODY _ TYPE _ CUSTOM _ TEXT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurl Command . headers . get Case Ins ensitive ( HttpHeaders . CONTENT _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . contentType Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurl Command . headers . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! key . equals ( HttpHeaders . CONTENT _ TYPE , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . headers . add ( realm . copy To Realm ( Header ( key Ġ= Ġkey , Ġvalue Ġ= Ġvalue ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġprepare Parameters ( realm : ĠRealm , Ġcurl Command : ĠC url Command , Ġshortcut : ĠShort cut ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurl Command . data . forEach Ġ{ Ġpotential Parameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpotential Parameter . split (" =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit . size Ġ== Ġ 2 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġparameter Parts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġparameter Parts [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġparameter Parts [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= Ġif Ġ( value . startsWith ("@ ") Ġ&& Ġcurl Command . is FormData ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġdecode ( key ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠParameter . TYPE _ FILE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġdecode ( key ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġdecode ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshortcut . parameters . add ( realm . copy To Realm ( parameter )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdecode ( text : ĠString ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠURL Decoder . decode ( text , Ġ" utf - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }