package Ġcom . world pay . access . checkout . api . discovery Ċ Ċ import Ġandroid . os . AsyncTask Ċ import Ġcom . world pay . access . checkout . api . AsyncTask Result Ċ import Ġcom . world pay . access . checkout . api . AsyncTask Utils . callback On Task Result Ċ import Ġcom . world pay . access . checkout . api . Callback Ċ import Ġcom . world pay . access . checkout . api . Https Client Ċ import Ġcom . world pay . access . checkout . api . serialization . Deserializer Ċ import Ġcom . world pay . access . checkout . client . api . exception . Access Checkout Exception Ċ import Ġcom . world pay . access . checkout . util . logging . Logging Utils . debug Log Ċ import Ġjava . net . Malformed URLException Ċ import Ġjava . net . URL Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġis Ġresponsible Ġfor Ġdiscover ing Ġan ĠAPI Ġgiven Ġthe Ġlist Ġof Ġendpoints . ĠOn Ġcompletion , Ċ Ġ* Ġthe Ġgiven Ġcallback Ġwill Ġbe Ġcalled Ġwith Ġthe Ġcorresponding Ġerror Ġor Ġsuccess Ġresponse Ġfrom Ġthe Ċ Ġ* ĠDiscovery ĠAPI . Ċ Ġ* Ċ Ġ* Ġ@ property Ġ[ callback ] ĠThe Ġcallback Ġvia Ġwhich Ġthe Ġresult Ġis Ġreturned Ċ Ġ* Ġ@ property Ġ[ endpoints ] ĠA Ġ[ List ] Ġof Ġ[ Endpoint ] Ġthat Ġis Ġiter ated Ġover Ġto Ġnavigate Ġthrough Ġthe Ġdiscovery Ġtree Ċ Ġ* Ġ@ property Ġ[ https Client ] ĠAn Ġ[ Https Client ] Ġthat Ġis Ġresponsible Ġfor Ġsending ĠHTTP Ġrequests Ġto Ġthe ĠAccess ĠWorld pay Ġservices Ċ Ġ*/ Ċ internal Ġclass ĠApi Discovery AsyncTask ( ĊĠĠĠ Ġprivate Ġval Ġcallback : ĠCallback < String >, ĊĠĠĠ Ġprivate Ġval Ġendpoints : ĠList < Endpoint >, ĊĠĠĠ Ġprivate Ġval Ġhttps Client : ĠHttp s Client Ċ ) Ġ: ĠAsync Task < String , ĠAny , ĠAsync Task Result < String >>() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠString ?): ĠAsync Task Result < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Log ( java Class . simple Name , Ġ" Sending Ġrequest Ġto Ġservice Ġdiscovery Ġendpoint ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresource Url Ġ= Ġparams [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( endpoint Ġin Ġendpoints ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource Url Ġ= Ġfetch Link From Url ( resource Url , Ġendpoint . get Deserializer (), Ġendpoint . headers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Log ( java Class . simple Name , Ġ" Received Ġresponse Ġfrom Ġservice Ġdiscovery Ġendpoint ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Task Result ( resource Url Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠAccess Checkout Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Task Result ( ex ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġ" An Ġerror Ġwas Ġthrown Ġwhen Ġtrying Ġto Ġmake Ġa Ġconnection Ġto Ġthe Ġservice " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Log ( java Class . simple Name , Ġex . message Ġ?: ĠerrorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Task Result ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠAsync Task Result < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback On Task Result ( callback , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Link From Url ( ĊĠĠĠĠĠĠĠ Ġurl : ĠString ?, ĊĠĠĠĠĠĠĠ Ġde serializer : ĠDeserial izer < String >, ĊĠĠĠĠĠĠĠ Ġheaders : ĠMap < String , ĠString > ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhttp Url Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠURL ( url ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMal formed URLException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Log ( java Class . simple Name , Ġ" Invalid ĠURL Ġsupplied : Ġ$ url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAccess Checkout Exception (" Invalid ĠURL Ġsupplied : Ġ$ url ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġhttps Client . do Get ( http Url , Ġde serializer , Ġheaders ) ĊĠĠĠ Ġ} Ċ } Ċ