/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠCopyright Ġ( c ) Ġ 2 0 1 7 - 2 0 2 0 ĠSt arry Blue Sky Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" UNUSED ") Ċ Ċ package Ġblue . st arry . pen ic ill in . endpoints . oauth 2 Ċ Ċ import Ġblue . st arry . pen ic ill in . core . auth . Authorization Type Ċ import Ġblue . st arry . pen ic ill in . core . request . action . JsonObject Api Action Ċ import Ġblue . st arry . pen ic ill in . core . request . form Body Ċ import Ġblue . st arry . pen ic ill in . core . session . post Ċ import Ġblue . st arry . pen ic ill in . endpoints . OAuth 2 Ċ import Ġblue . st arry . pen ic ill in . endpoints . Option Ċ import Ġblue . st arry . pen ic ill in . models . OAuth Token Ċ Ċ /** Ċ Ġ* ĠAllows Ġa Ġregistered Ġapplication Ġto Ġobtain Ġan ĠOAuth Ġ 2 ĠBearer ĠToken , Ġwhich Ġcan Ġbe Ġused Ġto Ġmake ĠAPI Ġrequests Ġon Ġan Ġapplication 's Ġown Ġbehalf , Ġwithout Ġa Ġuser Ġcontext . ĠThis Ġis Ġcalled Ġ[ Application - only Ġauthentication ]( https :// developer . twitter . com / en / docs / basics / authentication / overview / application - only ). Ċ Ġ* ĠA ĠBearer ĠToken Ġmay Ġbe Ġinvalid ated Ġusing Ġoauth 2 / invalidate _ token . ĠOnce Ġa ĠBearer ĠToken Ġhas Ġbeen Ġinvalid ated , Ġnew Ġcreation Ġattempts Ġwill Ġyield Ġa Ġdifferent ĠBearer ĠToken Ġand Ġusage Ġof Ġthe Ġprevious Ġtoken Ġwill Ġno Ġlonger Ġbe Ġallowed . Ċ Ġ* ĠOnly Ġone Ġbe arer Ġtoken Ġmay Ġexist Ġoutstanding Ġfor Ġan Ġapplication , Ġand Ġrepeated Ġrequests Ġto Ġthis Ġmethod Ġwill Ġyield Ġthe Ġsame Ġalready - existent Ġtoken Ġuntil Ġit Ġhas Ġbeen Ġinvalid ated . Ċ Ġ* ĠSuccessful Ġresponses Ġinclude Ġa ĠJSON - structure Ġdescribing Ġthe Ġa warded ĠBearer ĠToken . Ċ Ġ* ĠTokens Ġreceived Ġby Ġthis Ġmethod Ġshould Ġbe Ġcached . ĠIf Ġattempted Ġtoo Ġfrequently , Ġrequests Ġwill Ġbe Ġrejected Ġwith Ġa ĠHTTP Ġ 4 0 3 Ġwith Ġcode Ġ 9 9 . Ċ Ġ* ĠĊ Ġ* Ġ[ Twitter ĠAPI Ġreference ]( https :// developer . twitter . com / en / docs / basics / authentication / api - reference / token ) Ċ Ġ* ĠĊ Ġ* Ġ@ param Ġgrant Type ĠSpecifies Ġthe Ġtype Ġof Ġgrant Ġbeing Ġrequested Ġby Ġthe Ġapplication . ĠAt Ġthis Ġtime , Ġonly Ġclient _ credentials Ġis Ġallowed . ĠSee Ġ[ Application - Only ĠAuthentication ]( https :// developer . twitter . com / oauth / application - only ) Ġfor Ġmore Ġinformation . Ċ Ġ* Ġ@ param Ġoptions ĠOptional . ĠCustom Ġparameters Ġof Ġthis Ġrequest . Ċ Ġ* Ġ@ receiver Ġ[ OAuth 2 ] Ġendpoint Ġinstance . Ċ Ġ* Ġ@ return Ġ[ JsonObject Api Action ] Ġfor Ġ[ OAuth Token ] Ġmodel . Ċ Ġ*/ Ċ public Ġfun ĠOAuth 2 . bearer Token ( ĊĠĠĠ Ġgrant Type : ĠString Ġ= Ġ" client _ credentials ", ĊĠĠĠ Ġvar arg Ġoptions : ĠOption Ċ ): ĠJsonObject Api Action < OAuth Token > Ġ= Ġclient . session . post ("/ oauth 2 / token ") Ġ{ ĊĠĠĠ Ġauthorization Type Ġ= ĠAuthorization Type . OAuth 2 Request Token ĊĊĠĠĠ Ġform Body ( ĊĠĠĠĠĠĠĠ Ġ" grant _ type " Ġto Ġgrant Type , ĊĠĠĠĠĠĠĠ Ġ* options ĊĠĠĠ Ġ) Ċ }. jsonObject Ġ{ ĠOAuth Token ( it , Ġclient ) Ġ} ĊĊ Ġ/** Ċ Ġ* ĠSh orthand Ġproperty Ġto Ġ[ OAuth 2 . bearer Token ]. Ċ Ġ* Ġ@ see ĠOAuth 2 . bearer Token Ċ Ġ*/ Ċ public Ġval ĠOAuth 2 . bearer Token : ĠJsonObject Api Action < OAuth Token > ĊĠĠĠĠ Ġget () Ġ= Ġbe arer Token () Ċ