package Ġcom . azure . mobile Ċ Ċ import Ġcom . azure . data . model . service . Data Error Ċ import Ġcom . azure . data . model . Permission Ċ import Ġcom . azure . data . model . Permission Mode Ċ import Ġcom . azure . data . model . service . ResourceType Ċ import Ġcom . azure . data . service . get Self Link Ċ import Ġcom . azure . data . service . Permission Provider Ċ import Ġcom . azure . data . service . Permission Provider Configuration Ċ import Ġcom . azure . data . model . service . Permission Provider Error Ċ import Ġcom . azure . data . model . service . Response Ċ import Ġcom . azure . data . util . json . gson Ċ import Ġokhttp 3 .* Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġjava . io . IOException Ċ import Ġjava . net . URL Ċ Ċ /** Ċ Ġ* ĠCopyright Ġ( c ) ĠMicrosoft ĠCorporation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ*/ Ċ Ċ data Ġclass ĠPermission Request ( ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Id : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġcollection Id : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġdocument Id : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġresource Link : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġtoken Duration : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġpermission Mode : ĠPermission Mode Ċ ) Ċ Ċ class ĠDefault Permission Provider ( private Ġval ĠbaseUrl : ĠHttp Url , Ġoverride Ġvar Ġconfiguration : ĠPermission Provider Configuration ? Ġ= ĠPermission Provider Configuration . default , Ġprivate Ġval Ġclient : ĠOk HttpClient Ġ= ĠOk HttpClient ()) Ġ: ĠPermission Provider Ġ{ ĊĊĠĠĠ Ġconstructor ( baseUrl : ĠURL , Ġconfiguration : ĠPermission Provider Configuration ? Ġ= ĠPermission Provider Configuration . default , Ġclient : ĠOk HttpClient Ġ= ĠOk HttpClient . Builder (). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: Ġthis ( baseUrl . to Http Url OrNull () !! , Ġconfiguration , Ġclient ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission For Collection ( collection Id : ĠString , Ġdatabase Id : ĠString , Ġpermission Mode : ĠPermission Mode , Ġcompletion : Ġ( Response < Permission >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpermission Request Ġ= ĠPermission Request ( database Id , Ġcollection Id , Ġnull , Ġnull , Ġconfiguration !!. default Token Duration . toInt (), Ġpermission Mode ) ĊĠĠĠĠĠĠĠ Ġget Permission ( permission Request , Ġcompletion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission For Document ( document Id : ĠString , Ġcollection Id : ĠString , Ġdatabase Id : ĠString , Ġpermission Mode : ĠPermission Mode , Ġcompletion : Ġ( Response < Permission >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalt Link Ġ= Ġ"${ ResourceType . Database . path }/ $ database Id /${ ResourceType . Collection . path }/ $ collection Id /${ ResourceType . Document . path }/ $ document Id " ĊĠĠĠĠĠĠĠ Ġget Permission For Resource ( database Id , Ġcollection Id , Ġdocument Id , Ġalt Link , Ġpermission Mode , Ġcompletion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission For Attachment ( attachment Id : ĠString , Ġdocument Id : ĠString , Ġcollection Id : ĠString , Ġdatabase Id : ĠString , Ġpermission Mode : ĠPermission Mode , Ġcompletion : Ġ( Response < Permission >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalt Link Ġ= Ġ"${ ResourceType . Database . path }/ $ database Id /${ ResourceType . Collection . path }/ $ collection Id /${ ResourceType . Document . path }/ $ document Id /${ ResourceType . Attachment . path }/ $ attachment Id " ĊĠĠĠĠĠĠĠ Ġget Permission For Resource ( database Id , Ġcollection Id , Ġdocument Id , Ġalt Link , Ġpermission Mode , Ġcompletion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission For Stored Procedure ( stored Procedure Id : ĠString , Ġcollection Id : ĠString , Ġdatabase Id : ĠString , Ġpermission Mode : ĠPermission Mode , Ġcompletion : Ġ( Response < Permission >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalt Link Ġ= Ġ"${ ResourceType . Database . path }/ $ database Id /${ ResourceType . Collection . path }/ $ collection Id /${ ResourceType . Stored Procedure . path }/ $ stored Procedure Id " ĊĠĠĠĠĠĠĠ Ġget Permission For Resource ( database Id , Ġcollection Id , Ġnull , Ġalt Link , Ġpermission Mode , Ġcompletion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission ForUser Defined Function ( function Id : ĠString , Ġcollection Id : ĠString , Ġdatabase Id : ĠString , Ġpermission Mode : ĠPermission Mode , Ġcompletion : Ġ( Response < Permission >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalt Link Ġ= Ġ"${ ResourceType . Database . path }/ $ database Id /${ ResourceType . Collection . path }/ $ collection Id /${ ResourceType . U df . path }/ $ function Id " ĊĠĠĠĠĠĠĠ Ġget Permission For Resource ( database Id , Ġcollection Id , Ġnull , Ġalt Link , Ġpermission Mode , Ġcompletion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Permission For Trigger ( trigger Id : ĠString , Ġcollection Id : ĠString , Ġdatabase Id : ĠString , Ġpermission Mode : ĠPermission Mode , Ġcompletion : Ġ( Response < Permission >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalt Link Ġ= Ġ"${ ResourceType . Database . path }/ $ database Id /${ ResourceType . Collection . path }/ $ collection Id /${ ResourceType . Trigger . path }/ $ trigger Id " ĊĠĠĠĠĠĠĠ Ġget Permission For Resource ( database Id , Ġcollection Id , Ġnull , Ġalt Link , Ġpermission Mode , Ġcompletion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Permission For Resource ( database Id : ĠString , Ġcollection Id : ĠString , Ġdocument Id : ĠString ? Ġ= Ġnull , Ġalt Link : ĠString , Ġpermission Mode : ĠPermission Mode , Ġcompletion : Ġ( Response < Permission >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresource Link Ġ= Ġget Self Link ( alt Link ) Ġ?: Ġreturn Ġcompletion ( Response ( Data Error ( Permission Provider Error . Get Permission Failed ))) ĊĠĠĠĠĠĠĠ Ġval Ġpermission Request Ġ= ĠPermission Request ( database Id , Ġcollection Id , Ġdocument Id , Ġresource Link , Ġconfiguration !!. default Token Duration . toInt (), Ġpermission Mode ) ĊĊĠĠĠĠĠĠĠ Ġget Permission ( permission Request , Ġcompletion ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Permission ( permission Request : ĠPermission Request , Ġcompletion : Ġ( Response < Permission >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠbaseUrl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Path Segment (" api / data / permission ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. post ( gson . toJson ( permission Request ). to RequestBody (" application / json ". to MediaType OrNull ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue ( object Ġ: ĠCallback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcompletion ( Response ( Data Error ( e ), Ġrequest )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : Ġokhttp 3 . Response ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse . body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġcompletion ( Response ( Data Error ( Permission Provider Error . Get Permission Failed ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġbody . string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermission Ġ= Ġgson . fromJson ( json , ĠPermission :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcompletion ( Response ( permission )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcompletion ( Response ( Data Error ( ex ), Ġrequest , Ġresponse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcompletion ( Response ( Data Error ( Permission Provider Error . Get Permission Failed ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }