/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠAdam ĠK un ick i Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . adam k un ick i . vault . api Ċ Ċ import Ġcom . adam k un ick i . vault . Vault Configuration Ċ import Ġcom . adam k un ick i . vault . Vault Error Ċ import Ġcom . adam k un ick i . vault . Vault Exception Ċ import Ġcom . github . kit tin un f . fuel . http Get Ċ import Ġcom . github . kit tin un f . fuel . http Post Ċ import Ġcom . github . sal om on br ys . kot son . jsonObject Ċ import Ġcom . google . gson . Gson Ċ import Ġjava . net . URL Encoder Ċ Ċ @ Suppress (" UNUSED _ VARIABLE ") Ċ class ĠAuth enticate ( private Ġval Ġconf : ĠVault Configuration ) Ġ{ ĊĠ Ġval ĠUTF _ 8 Ġ= ĠChar sets . UTF _ 8 . name () ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAuth enticate Ġvia Ġthe Ġ" token " Ġauthentication Ġmethod . ĠThis Ġauthentication ĊĠĠ Ġ* Ġmethod Ġis Ġa Ġbit Ġb izar re Ġbecause Ġyou Ġalready Ġhave Ġa Ġtoken , Ġbut Ġhe y , ĊĠĠ Ġ* Ġwhatever Ġfloats Ġyour Ġbo at . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠThis Ġmethod Ġhits Ġthe Ġ`/ v 1 / auth / token / lookup - self ` Ġendpoint Ġafter Ġsetting ĊĠĠ Ġ* Ġthe ĠVault Ġclient 's Ġtoken Ġto Ġthe Ġgiven Ġtoken Ġparameter . ĠIf Ġthe Ġself Ġlookup ĊĠĠ Ġ* Ġsucceeds , Ġthe Ġtoken Ġis Ġreturned . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ return Ġa Ġ[ Secret ] Ġdeserialized Ġfrom Ġthe Ġresult . ĊĠĠ Ġ*/ ĊĠ Ġ@ Throws ( Vault Exception :: class ) ĊĠ Ġfun Ġtoken ( new Token : ĠString ): ĠSecret Ġ{ ĊĠĠĠ Ġval Ġ( request , Ġresponse , Ġresult ) Ġ= Ġ( conf . ad dd ress Ġ+ Ġ"/ v 1 / auth / token / lookup - self ") ĊĠĠĠĠĠĠĠ Ġ. http Get () ĊĠĠĠĠĠĠĠ Ġ. header (" X - Vault - Token " Ġto Ġnew Token ) ĊĠĠĠĠĠĠĠ Ġ. response Object ( Secret . Deserializer ()) ĊĊĠĠĠ Ġval Ġ( secret , Ġerror ) Ġ= Ġresult ĊĊĠĠĠ Ġif Ġ( secret Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsecret ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠerrorMessage Ġ= Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠGson (). fromJson ( String ( error . error Data ), ĠVault Error :: class . java ). errors . join ToString () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠVault Exception ( errorMessage ) ĊĠ Ġ} ĊĊĠ Ġ@ Jvm Over loads ĊĠ Ġ@ Throws ( Vault Exception :: class ) ĊĠ Ġfun ĠappId ( appId : ĠString , ĠuserId : ĠString , Ġoptions : ĠList < Pair < String , ĠAny ? >> Ġ= Ġempty List ()): ĠSecret Ġ{ ĊĠĠĠ Ġval Ġ( request , Ġresponse , Ġresult ) Ġ= Ġ( conf . ad dd ress Ġ+ Ġ"/ v 1 / auth / app - id / login ") ĊĠĠĠĠĠĠĠ Ġ. http Post () ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" app _ id " Ġto ĠappId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" user _ id " Ġto ĠuserId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* options . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChar sets . UTF _ 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. header ( Pair (" X - Vault - Token ", Ġconf . token )) ĊĠĠĠĠĠĠĠ Ġ. response Object ( Secret . Deserializer ()) ĊĊĠĠĠ Ġval Ġ( secret , Ġerror ) Ġ= Ġresult ĊĊĠĠĠ Ġif Ġ( secret Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsecret ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠerrorMessage Ġ= Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠGson (). fromJson ( String ( error . error Data ), ĠVault Error :: class . java ). errors . join ToString () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠVault Exception ( errorMessage ) ĊĠ Ġ} ĊĊĠ Ġ@ Jvm Over loads ĊĠ Ġ@ Throws ( Vault Exception :: class ) ĊĠ Ġfun Ġuser Pass ( username : ĠString , Ġpassword : ĠString , Ġoptions : ĠList < Pair < String , ĠAny ? >> Ġ= Ġempty List ()): ĠSecret Ġ{ ĊĠĠĠ Ġval Ġ( request , Ġresponse , Ġresult ) Ġ= Ġ( conf . ad dd ress Ġ+ Ġ"/ v 1 / auth / user pass / login /" Ġ+ ĠURL Encoder . encode ( username , ĠUTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġ. http Post () ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġto Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* options . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChar sets . UTF _ 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. header ( Pair (" X - Vault - Token ", Ġconf . token )) ĊĠĠĠĠĠĠĠ Ġ. response Object ( Secret . Deserializer ()) ĊĊĠĠĠ Ġval Ġ( secret , Ġerror ) Ġ= Ġresult ĊĊĠĠĠ Ġif Ġ( secret Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsecret ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠerrorMessage Ġ= Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠGson (). fromJson ( String ( error . error Data ), ĠVault Error :: class . java ). errors . join ToString () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠVault Exception ( errorMessage ) ĊĠ Ġ} ĊĊĠ Ġ@ Jvm Over loads ĊĠ Ġ@ Throws ( Vault Exception :: class ) ĊĠ Ġfun Ġldap ( username : ĠString , Ġpassword : ĠString , Ġoptions : ĠList < Pair < String , ĠAny ? >> Ġ= Ġempty List ()): ĠSecret Ġ{ ĊĠĠĠ Ġval Ġ( request , Ġresponse , Ġresult ) Ġ= Ġ( conf . ad dd ress Ġ+ Ġ"/ v 1 / auth / ldap / login /" Ġ+ ĠURL Encoder . encode ( username , ĠUTF _ 8 )) ĊĠĠĠĠĠĠĠ Ġ. http Post () ĊĠĠĠĠĠĠĠ Ġ. body ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠjsonObject ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġto Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* options . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChar sets . UTF _ 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. header ( Pair (" X - Vault - Token ", Ġconf . token )) ĊĠĠĠĠĠĠĠ Ġ. response Object ( Secret . Deserializer ()) ĊĊĠĠĠ Ġval Ġ( secret , Ġerror ) Ġ= Ġresult ĊĊĠĠĠ Ġif Ġ( secret Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsecret ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠerrorMessage Ġ= Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠGson (). fromJson ( String ( error . error Data ), ĠVault Error :: class . java ). errors . join ToString () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠVault Exception ( errorMessage ) ĊĠ Ġ} ĊĊĠ Ġ@ Throws ( Vault Exception :: class ) ĊĠ Ġfun Ġgithub ( github Token : ĠString ): ĠSecret Ġ{ ĊĠĠĠ Ġval Ġ( request , Ġresponse , Ġresult ) Ġ= Ġ( conf . ad dd ress Ġ+ Ġ"/ v 1 / auth / github / login ") ĊĠĠĠĠĠĠĠ Ġ. http Post () ĊĠĠĠĠĠĠĠ Ġ. body ( jsonObject (" token " Ġto Ġgithub Token ). toString (), ĠChar sets . UTF _ 8 ) ĊĠĠĠĠĠĠĠ Ġ. header ( Pair (" X - Vault - Token ", Ġconf . token )) ĊĠĠĠĠĠĠĠ Ġ. response Object ( Secret . Deserializer ()) ĊĊĠĠĠ Ġval Ġ( secret , Ġerror ) Ġ= Ġresult ĊĊĠĠĠ Ġif Ġ( secret Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġsecret ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠerrorMessage Ġ= Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠGson (). fromJson ( String ( error . error Data ), ĠVault Error :: class . java ). errors . join ToString () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠVault Exception ( errorMessage ) ĊĠ Ġ} Ċ }