/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠTw ilio ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 . tw ilio . verify . sample . kotlin Ċ Ċ import Ġcom . tw ilio . verify . Tw ilio Verify Ċ import Ġcom . tw ilio . verify . Tw ilio Verify Exception Ċ import Ġcom . tw ilio . verify . models . Factor Ċ import Ġcom . tw ilio . verify . models . Factor Payload Ċ import Ġcom . tw ilio . verify . models . Factor Type . PUSH Ċ import Ġcom . tw ilio . verify . models . Push Factor Payload Ċ import Ġcom . tw ilio . verify . models . Update Push Factor Payload Ċ import Ġcom . tw ilio . verify . models . Verify Push Factor Payload Ċ import Ġcom . tw ilio . verify . sample . Tw ilio Verify Adapter Ċ import Ġcom . tw ilio . verify . sample . model . AccessToken Response Ċ import Ġcom . tw ilio . verify . sample . model . Create Factor Data Ċ import Ġcom . tw ilio . verify . sample . model . get Factor Type Ċ import Ġcom . tw ilio . verify . sample . networking . Sample Backend APIClient Ċ import Ġcom . tw ilio . verify . sample . networking . get AccessToken Response Ċ import Ġcom . tw ilio . verify . sample . push . New Challenge Ċ import Ġcom . tw ilio . verify . sample . push . Verify EventBus Ċ Ċ class ĠTw ilio Verify Kotlin Adapter ( ĊĠ Ġprivate Ġval Ġtw ilio Verify : ĠTw ilio Verify , ĊĠ Ġprivate Ġval Ġverify EventBus : ĠVerify EventBus Ġ= ĠVerify EventBus Ċ ) Ġ: ĠTw ilio Verify Ġby Ġtw ilio Verify , ĠTw ilio Verify Adapter Ġ{ ĊĊĠ Ġoverride Ġfun Ġcreate Factor ( ĊĠĠĠ Ġcreate Factor Data : ĠCreate Factor Data , ĊĠĠĠ Ġsample Backend APIClient : ĠSample Backend APIClient , ĊĠĠĠ Ġsuccess : Ġ( Factor ) Ġ-> ĠUnit , ĊĠĠĠ Ġerror : Ġ( Throwable ) Ġ-> ĠUnit ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġsample Backend APIClient . get AccessToken Response ( ĊĠĠĠĠĠĠĠ Ġcreate Factor Data . identity , Ġcreate Factor Data . accessToken Url , ĊĠĠĠĠĠĠĠ Ġ{ ĠaccessToken Response Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġval Ġfactor Payload Ġ= Ġget Factor Payload ( create Factor Data , ĠaccessToken Response ) ĊĠĠĠĠĠĠĠĠĠ Ġtw ilio Verify . create Factor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfactor Payload , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfactor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Factor ( factor , Ġsuccess , Ġerror ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġerror ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠTw ilio Verify Exception ) Ġ{ ĊĠĠĠĠĠ Ġerror ( e ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġerror ( e ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġverify Factor ( ĊĠĠĠ Ġfactor : ĠFactor , ĊĠĠĠ Ġsuccess : Ġ( Factor ) Ġ-> ĠUnit , ĊĠĠĠ Ġerror : Ġ( Exception ) Ġ-> ĠUnit ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġwhen Ġ( factor . type ) Ġ{ ĊĠĠĠĠĠ ĠP USH Ġ-> Ġtw ilio Verify . verify Factor ( ĊĠĠĠĠĠĠĠ ĠVerify Push Factor Payload ( factor . sid ), ĊĠĠĠĠĠĠĠ Ġsuccess , ĊĠĠĠĠĠĠĠ Ġerror ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Factors ( ĊĠĠĠ Ġsuccess : Ġ( List < Factor >) Ġ-> ĠUnit , ĊĠĠĠ Ġerror : Ġ( Tw ilio Verify Exception ) Ġ-> ĠUnit ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġtw ilio Verify . getAll Factors ( success , Ġerror ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġupdate Push Token ( token : ĠString ) Ġ{ ĊĠĠĠ Ġtw ilio Verify . getAll Factors ( ĊĠĠĠĠĠ Ġ{ Ġfactors Ġ-> ĊĠĠĠĠĠĠĠ Ġfor Ġ( factor Ġin Ġfactors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġupdate Factor ( factor , Ġtoken ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ Ġ:: handleError ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate Factor ( ĊĠĠĠ Ġfactor : ĠFactor , ĊĠĠĠ Ġtoken : ĠString ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġtw ilio Verify . update Factor ( Update Push Factor Payload ( factor . sid , Ġtoken ), Ġ{}, Ġ:: handleError ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġshow Challenge ( ĊĠĠĠ Ġchallenge Sid : ĠString , ĊĠĠĠ Ġfactor Sid : ĠString ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġverify EventBus . send ( New Challenge ( challenge Sid , Ġfactor Sid )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Factor Payload ( ĊĠĠĠ Ġcreate Factor Data : ĠCreate Factor Data , ĊĠĠĠ ĠaccessToken Response : ĠAccess Token Response ĊĠ Ġ): ĠFactor Payload Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( accessToken Response . get Factor Type ()) Ġ{ ĊĠĠĠĠĠ ĠP USH Ġ-> ĠPush Factor Payload ( ĊĠĠĠĠĠĠĠ Ġcreate Factor Data . factor Name , ĠaccessToken Response . service Sid , ĊĠĠĠĠĠĠĠ ĠaccessToken Response . identity , Ġcreate Factor Data . push Token , ĠaccessToken Response . token ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Unexpected Ġvalue : Ġ" Ġ+ ĠaccessToken Response . factor Type ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġhandle Error ( exception : ĠTw ilio Verify Exception ) Ġ{ ĊĠĠĠ Ġexception . printStackTrace () ĊĠ Ġ} Ċ } Ċ