/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 3 Ġy vol k Ġ( Y uri ĠVol kov ), Ġhttp :// y ur iv olk ov . com Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . and status . app . net . http Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . github . scribe java . core . oauth . OAuth 2 0 Service Ċ import Ġorg . and status . app . account . Account Data Writer Ċ import Ġorg . and status . app . net . social . Api Routine Enum Ċ import Ġorg . and status . app . util . My Log Ċ import Ġorg . and status . app . util . Uri Utils Ċ Ċ abstract Ġclass ĠHttp Connection OAuth Ġ: ĠHttp Connection (), ĠOAuth Service Ġ{ ĊĠĠĠ Ġvar Ġlog Me Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġfun Ġuser Token Key (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" user _ token " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġuser SecretKey (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" user _ secret " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġuser Token : ĠString Ġ= Ġ"" ĊĠĠĠ Ġoverride Ġvar Ġuser Secret : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ// ĠTODO : ĠDo Ġwe Ġneed Ġthis ? ĊĠĠĠ Ġoverride Ġvar Ġpassword : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġset Http Connection Data ( connection Data : ĠHttp Connection Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Http Connection Data ( connection Data ) ĊĠĠĠĠĠĠĠ Ġconnection Data . oauth Client Keys Ġ= ĠOAuth Client Keys . from Connection Data ( connection Data ) ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġlook Ġfor Ġsaved Ġuser Ġkeys ĊĠĠĠĠĠĠĠ Ġconnection Data . data Reader ?. let Ġ{ Ġdata Reader Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Reader . data Contains ( user Token Key ()) Ġ== Ġtrue Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Reader . data Contains ( user SecretKey ()) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Token Ġ= Ġdata Reader . getData String ( user Token Key ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Secret Ġ= Ġdata Reader . getData String ( user SecretKey ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetUser Token With Secret ( user Token , Ġuser Secret ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġcredentials Present : ĠBoolean Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġyes Ġ= Ġ( data . oauth Client Keys ?. are Keys Present () Ġ== Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! user Token . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! user Secret . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġif Ġ(! yes Ġ&& Ġlog Me ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . v ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(" Credentials Ġpresence : Ġclient Keys :" Ġ+ Ġdata . oauth Client Keys ?. are Keys Present () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"; Ġuser Keys :" Ġ+ Ġ! user Token . isEmpty () Ġ+ Ġ"," Ġ+ Ġ! user Secret . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġyes ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġget Api Uri ( routine : ĠApi Routine Enum ?): ĠUri Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġurl : ĠString ĊĠĠĠĠĠĠĠ Ġurl Ġ= Ġwhen Ġ( routine ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Routine Enum . O AUTH _ ACCESS _ TOKEN Ġ-> Ġdata . oauth Path Ġ+ Ġ"/ access _ token " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Routine Enum . O AUTH _ AUTHOR IZE Ġ-> Ġdata . oauth Path Ġ+ Ġ"/ authorize " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Routine Enum . O AUTH _ REQUEST _ TOKEN Ġ-> Ġdata . oauth Path Ġ+ Ġ"/ request _ token " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Routine Enum . O AUTH _ REGISTER _ CLIENT Ġ-> Ġdata . basic Path Ġ+ Ġ"/ client / register " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! url . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġpath To Url String ( url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠUri Utils . fromString ( url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Service ( redirect : ĠBoolean ): ĠOAuth 2 0 Service ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis OAuth 2 (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param Ġtoken Ġempty Ġvalue Ġmeans Ġto Ġclear Ġthe Ġold Ġvalues ĊĠĠĠĠ Ġ* Ġ@ param Ġsecret ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠsetUser Token With Secret ( token : ĠString ?, Ġsecret : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Token Ġ= Ġtoken Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Secret Ġ= Ġsecret Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( log Me ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . v ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(" Credentials Ġset ?: Ġ" Ġ+ Ġ! token . isNull OrEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ", Ġ" Ġ+ Ġ! secret . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave To ( dw : ĠAccount Data Writer ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġchanged Ġ= Ġsuper . save To ( dw ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . equals ( user Token , Ġdw . getData String ( user Token Key ())) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! TextUtils . equals ( user Secret , Ġdw . getData String ( user SecretKey ()))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Token . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdw . setData String ( user Token Key (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log Me ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d ( TAG , Ġ" Clear ing ĠOAuth ĠToken ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdw . setData String ( user Token Key (), Ġuser Token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log Me ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d ( TAG , Ġ" Saving ĠOAuth ĠToken : Ġ$ user Token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Secret . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdw . setData String ( user SecretKey (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log Me ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d ( TAG , Ġ" Clear ing ĠOAuth ĠSecret ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdw . setData String ( user SecretKey (), Ġuser Secret ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log Me ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Log . d ( TAG , Ġ" Saving ĠOAuth ĠSecret : Ġ$ user Secret ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġchanged ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Auth Information () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetUser Token With Secret ("", Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG : ĠString Ġ= ĠHttp Connection OAuth :: class . simple Name !! ĊĠĠĠ Ġ} Ċ } Ċ