// ĠCopyright Ġ 2 0 2 1 ĠThe ĠCross - Media ĠMeasurement ĠAuthors Ċ // Ċ // Ġ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 . wf an et . measurement . king dom . service . api . v 2 alpha Ċ Ċ import Ġorg . wf an et . measurement . api . Version Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Create DataProvider Request Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . DataProvider Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . DataProvider Certificate Key Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . DataProvider Key Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Data Providers Grpc Kt . Data Providers Coroutine Impl Base Ġas ĠData Providers Coroutine Service Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . Get DataProvider Request Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . dataProvider Ċ import Ġorg . wf an et . measurement . api . v 2 alpha . signed Data Ċ import Ġorg . wf an et . measurement . common . grpc . grpc Require Ċ import Ġorg . wf an et . measurement . common . grpc . grpc Require NotNull Ċ import Ġorg . wf an et . measurement . common . identity . api Id To External Id Ċ import Ġorg . wf an et . measurement . common . identity . external Id To Api Id Ċ import Ġorg . wf an et . measurement . internal . king dom . DataProvider Ġas ĠInternal DataProvider Ċ import Ġorg . wf an et . measurement . internal . king dom . DataProvider Kt . details Ċ import Ġorg . wf an et . measurement . internal . king dom . Data Providers Grpc Kt . Data Providers Coroutine Stub Ċ import Ġorg . wf an et . measurement . internal . king dom . dataProvider Ġas Ġinternal DataProvider Ċ import Ġorg . wf an et . measurement . internal . king dom . getData Provider Request Ċ Ċ private Ġval ĠAPI _ VERSION Ġ= ĠVersion . V 2 _ ALPHA Ċ Ċ class ĠData Providers Service ( private Ġval Ġinternal Client : ĠData Providers Coroutine Stub ) Ġ: ĊĠ ĠData Providers Coroutine Service () Ġ{ ĊĠ Ġoverride Ġsuspend Ġfun Ġcreate DataProvider ( request : ĠCreate DataProvider Request ): ĠData Provider Ġ{ ĊĠĠĠ Ġval Ġdata Provider Ġ= Ġrequest . dataProvider ĊĊĠĠĠ Ġgrpc Require (! dataProvider . publicKey . data . isEmpty ) Ġ{ Ġ" public _ key . data Ġis Ġmissing " Ġ} ĊĠĠĠ Ġgrpc Require (! dataProvider . publicKey . signature . isEmpty ) Ġ{ Ġ" public _ key . signature Ġis Ġmissing " Ġ} ĊĊĠĠĠ Ġval Ġinternal Response : ĠInternal DataProvider Ġ= ĊĠĠĠĠĠ Ġinternal Client . create DataProvider ( ĊĠĠĠĠĠĠĠ Ġinternal DataProvider Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcertificate Ġ= Ġparse Certificate Der ( dataProvider . certificate Der ) ĊĠĠĠĠĠĠĠĠĠ Ġdetails Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetails Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠapiVersion Ġ= ĠAPI _ VERSION . string ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Ġ= Ġdata Provider . publicKey . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpublicKey Signature Ġ= Ġdata Provider . publicKey . signature ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ( world - fed eration - of - advert is ers / cross - media - measurement # 1 1 9 ): ĠAdd Ġauthenticated Ġuser ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġowner . ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġreturn Ġinternal Response . to DataProvider () ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġget DataProvider ( request : ĠGet DataProvider Request ): ĠData Provider Ġ{ ĊĠĠĠ Ġval Ġkey : ĠData Provider Key Ġ= ĊĠĠĠĠĠ Ġgrpc Require NotNull ( DataProvider Key . from Name ( request . name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Resource Ġname Ġunspecified Ġor Ġinvalid " ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠTODO ( world - fed eration - of - advert is ers / cross - media - measurement # 1 1 9 ): ĠPass Ġcredentials Ġfor ĊĠĠĠ Ġ// Ġownership Ġcheck . ĊĠĠĠ Ġval Ġinternal Response : ĠInternal DataProvider Ġ= ĊĠĠĠĠĠ Ġinternal Client . getData Provider ( ĊĠĠĠĠĠĠĠ Ġget DataProvider Request Ġ{ Ġexternal DataProvider Id Ġ= Ġapi Id To External Id ( key . dataProvider Id ) Ġ} ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġreturn Ġinternal Response . to DataProvider () ĊĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠInternal DataProvider . to DataProvider (): ĠData Provider Ġ{ ĊĠ Ġcheck ( Version . fromString ( details . apiVersion ) Ġ== ĠAPI _ VERSION ) Ġ{ ĊĠĠĠ Ġ" In compatible ĠAPI Ġversion Ġ${ details . apiVersion }" ĊĠ Ġ} ĊĠ Ġval Ġinternal DataProvider Ġ= Ġthis ĊĠ Ġval Ġdata Provider Id : ĠString Ġ= Ġexternal Id To Api Id ( external DataProvider Id ) ĊĠ Ġval Ġcertificate Id : ĠString Ġ= Ġexternal Id To Api Id ( certificate . external Certificate Id ) ĊĊĠ Ġreturn Ġdata Provider Ġ{ ĊĠĠĠ Ġname Ġ= ĠData Provider Key ( dataProvider Id ). to Name () ĊĠĠĠ Ġcertificate Ġ= ĠData Provider Certificate Key ( dataProvider Id , Ġcertificate Id ). to Name () ĊĠĠĠ Ġcertificate Der Ġ= Ġinternal DataProvider . certificate . details . x 5 0 9 Der ĊĠĠĠ ĠpublicKey Ġ= ĊĠĠĠĠĠ Ġsigned Data Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġ= Ġinternal DataProvider . details . publicKey ĊĠĠĠĠĠĠĠ Ġsignature Ġ= Ġinternal DataProvider . details . publicKey Signature ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ