googleoauth2.pp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934
  1. unit googleoauth2;
  2. {$MODE objfpc}
  3. {$H+}
  4. interface
  5. uses sysutils, classes, googleservice, restbase, googlebase;
  6. type
  7. //Top-level schema types
  8. TJwk = Class;
  9. TTokeninfo = Class;
  10. TUserinfoplus = Class;
  11. TJwkArray = Array of TJwk;
  12. TTokeninfoArray = Array of TTokeninfo;
  13. TUserinfoplusArray = Array of TUserinfoplus;
  14. //Anonymous types, using auto-generated names
  15. TJwkTypekeysItem = Class;
  16. TJwkTypekeysArray = Array of TJwkTypekeysItem;
  17. { --------------------------------------------------------------------
  18. TJwkTypekeysItem
  19. --------------------------------------------------------------------}
  20. TJwkTypekeysItem = Class(TGoogleBaseObject)
  21. Private
  22. Falg : String;
  23. Fe : String;
  24. Fkid : String;
  25. Fkty : String;
  26. Fn : String;
  27. Fuse : String;
  28. Protected
  29. //Property setters
  30. Procedure Setalg(AIndex : Integer; const AValue : String); virtual;
  31. Procedure Sete(AIndex : Integer; const AValue : String); virtual;
  32. Procedure Setkid(AIndex : Integer; const AValue : String); virtual;
  33. Procedure Setkty(AIndex : Integer; const AValue : String); virtual;
  34. Procedure Setn(AIndex : Integer; const AValue : String); virtual;
  35. Procedure Setuse(AIndex : Integer; const AValue : String); virtual;
  36. Public
  37. Published
  38. Property alg : String Index 0 Read Falg Write Setalg;
  39. Property e : String Index 8 Read Fe Write Sete;
  40. Property kid : String Index 16 Read Fkid Write Setkid;
  41. Property kty : String Index 24 Read Fkty Write Setkty;
  42. Property n : String Index 32 Read Fn Write Setn;
  43. Property use : String Index 40 Read Fuse Write Setuse;
  44. end;
  45. TJwkTypekeysItemClass = Class of TJwkTypekeysItem;
  46. { --------------------------------------------------------------------
  47. TJwk
  48. --------------------------------------------------------------------}
  49. TJwk = Class(TGoogleBaseObject)
  50. Private
  51. Fkeys : TJwkTypekeysArray;
  52. Protected
  53. //Property setters
  54. Procedure Setkeys(AIndex : Integer; const AValue : TJwkTypekeysArray); virtual;
  55. //2.6.4. bug workaround
  56. {$IFDEF VER2_6}
  57. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  58. {$ENDIF VER2_6}
  59. Public
  60. Published
  61. Property keys : TJwkTypekeysArray Index 0 Read Fkeys Write Setkeys;
  62. end;
  63. TJwkClass = Class of TJwk;
  64. { --------------------------------------------------------------------
  65. TTokeninfo
  66. --------------------------------------------------------------------}
  67. TTokeninfo = Class(TGoogleBaseObject)
  68. Private
  69. Faccess_type : String;
  70. Faudience : String;
  71. Femail : String;
  72. Fexpires_in : integer;
  73. Fissued_to : String;
  74. Fscope : String;
  75. Ftoken_handle : String;
  76. Fuser_id : String;
  77. Fverified_email : boolean;
  78. Protected
  79. //Property setters
  80. Procedure Setaccess_type(AIndex : Integer; const AValue : String); virtual;
  81. Procedure Setaudience(AIndex : Integer; const AValue : String); virtual;
  82. Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
  83. Procedure Setexpires_in(AIndex : Integer; const AValue : integer); virtual;
  84. Procedure Setissued_to(AIndex : Integer; const AValue : String); virtual;
  85. Procedure Setscope(AIndex : Integer; const AValue : String); virtual;
  86. Procedure Settoken_handle(AIndex : Integer; const AValue : String); virtual;
  87. Procedure Setuser_id(AIndex : Integer; const AValue : String); virtual;
  88. Procedure Setverified_email(AIndex : Integer; const AValue : boolean); virtual;
  89. Public
  90. Published
  91. Property access_type : String Index 0 Read Faccess_type Write Setaccess_type;
  92. Property audience : String Index 8 Read Faudience Write Setaudience;
  93. Property email : String Index 16 Read Femail Write Setemail;
  94. Property expires_in : integer Index 24 Read Fexpires_in Write Setexpires_in;
  95. Property issued_to : String Index 32 Read Fissued_to Write Setissued_to;
  96. Property scope : String Index 40 Read Fscope Write Setscope;
  97. Property token_handle : String Index 48 Read Ftoken_handle Write Settoken_handle;
  98. Property user_id : String Index 56 Read Fuser_id Write Setuser_id;
  99. Property verified_email : boolean Index 64 Read Fverified_email Write Setverified_email;
  100. end;
  101. TTokeninfoClass = Class of TTokeninfo;
  102. { --------------------------------------------------------------------
  103. TUserinfoplus
  104. --------------------------------------------------------------------}
  105. TUserinfoplus = Class(TGoogleBaseObject)
  106. Private
  107. Femail : String;
  108. Ffamily_name : String;
  109. Fgender : String;
  110. Fgiven_name : String;
  111. Fhd : String;
  112. Fid : String;
  113. Flink : String;
  114. Flocale : String;
  115. Fname : String;
  116. Fpicture : String;
  117. Fverified_email : boolean;
  118. Protected
  119. //Property setters
  120. Procedure Setemail(AIndex : Integer; const AValue : String); virtual;
  121. Procedure Setfamily_name(AIndex : Integer; const AValue : String); virtual;
  122. Procedure Setgender(AIndex : Integer; const AValue : String); virtual;
  123. Procedure Setgiven_name(AIndex : Integer; const AValue : String); virtual;
  124. Procedure Sethd(AIndex : Integer; const AValue : String); virtual;
  125. Procedure Setid(AIndex : Integer; const AValue : String); virtual;
  126. Procedure Setlink(AIndex : Integer; const AValue : String); virtual;
  127. Procedure Setlocale(AIndex : Integer; const AValue : String); virtual;
  128. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  129. Procedure Setpicture(AIndex : Integer; const AValue : String); virtual;
  130. Procedure Setverified_email(AIndex : Integer; const AValue : boolean); virtual;
  131. Public
  132. Published
  133. Property email : String Index 0 Read Femail Write Setemail;
  134. Property family_name : String Index 8 Read Ffamily_name Write Setfamily_name;
  135. Property gender : String Index 16 Read Fgender Write Setgender;
  136. Property given_name : String Index 24 Read Fgiven_name Write Setgiven_name;
  137. Property hd : String Index 32 Read Fhd Write Sethd;
  138. Property id : String Index 40 Read Fid Write Setid;
  139. Property link : String Index 48 Read Flink Write Setlink;
  140. Property locale : String Index 56 Read Flocale Write Setlocale;
  141. Property name : String Index 64 Read Fname Write Setname;
  142. Property picture : String Index 72 Read Fpicture Write Setpicture;
  143. Property verified_email : boolean Index 80 Read Fverified_email Write Setverified_email;
  144. end;
  145. TUserinfoplusClass = Class of TUserinfoplus;
  146. { --------------------------------------------------------------------
  147. TUserinfoV2MeResource
  148. --------------------------------------------------------------------}
  149. TUserinfoV2MeResource = Class(TGoogleResource)
  150. Public
  151. Class Function ResourceName : String; override;
  152. Class Function DefaultAPI : TGoogleAPIClass; override;
  153. Function Get : TUserinfoplus;
  154. end;
  155. { --------------------------------------------------------------------
  156. TUserinfoV2Resource
  157. --------------------------------------------------------------------}
  158. TUserinfoV2Resource = Class(TGoogleResource)
  159. Private
  160. FMeInstance : TUserinfoV2MeResource;
  161. Function GetMeInstance : TUserinfoV2MeResource;virtual;
  162. Public
  163. Class Function ResourceName : String; override;
  164. Class Function DefaultAPI : TGoogleAPIClass; override;
  165. Function CreateMeResource(AOwner : TComponent) : TUserinfoV2MeResource;virtual;overload;
  166. Function CreateMeResource : TUserinfoV2MeResource;virtual;overload;
  167. Property MeResource : TUserinfoV2MeResource Read GetMeInstance;
  168. end;
  169. { --------------------------------------------------------------------
  170. TUserinfoResource
  171. --------------------------------------------------------------------}
  172. TUserinfoResource = Class(TGoogleResource)
  173. Private
  174. FV2MeInstance : TUserinfoV2MeResource;
  175. FV2Instance : TUserinfoV2Resource;
  176. Function GetV2MeInstance : TUserinfoV2MeResource;virtual;
  177. Function GetV2Instance : TUserinfoV2Resource;virtual;
  178. Public
  179. Class Function ResourceName : String; override;
  180. Class Function DefaultAPI : TGoogleAPIClass; override;
  181. Function Get : TUserinfoplus;
  182. Function CreateV2MeResource(AOwner : TComponent) : TUserinfoV2MeResource;virtual;overload;
  183. Function CreateV2MeResource : TUserinfoV2MeResource;virtual;overload;
  184. Function CreateV2Resource(AOwner : TComponent) : TUserinfoV2Resource;virtual;overload;
  185. Function CreateV2Resource : TUserinfoV2Resource;virtual;overload;
  186. Property V2MeResource : TUserinfoV2MeResource Read GetV2MeInstance;
  187. Property V2Resource : TUserinfoV2Resource Read GetV2Instance;
  188. end;
  189. { --------------------------------------------------------------------
  190. TOauth2API
  191. --------------------------------------------------------------------}
  192. TOauth2API = Class(TGoogleAPI)
  193. Private
  194. FUserinfoV2MeInstance : TUserinfoV2MeResource;
  195. FUserinfoV2Instance : TUserinfoV2Resource;
  196. FUserinfoInstance : TUserinfoResource;
  197. Function GetUserinfoV2MeInstance : TUserinfoV2MeResource;virtual;
  198. Function GetUserinfoV2Instance : TUserinfoV2Resource;virtual;
  199. Function GetUserinfoInstance : TUserinfoResource;virtual;
  200. Public
  201. //Override class functions with API info
  202. Class Function APIName : String; override;
  203. Class Function APIVersion : String; override;
  204. Class Function APIRevision : String; override;
  205. Class Function APIID : String; override;
  206. Class Function APITitle : String; override;
  207. Class Function APIDescription : String; override;
  208. Class Function APIOwnerDomain : String; override;
  209. Class Function APIOwnerName : String; override;
  210. Class Function APIIcon16 : String; override;
  211. Class Function APIIcon32 : String; override;
  212. Class Function APIdocumentationLink : String; override;
  213. Class Function APIrootUrl : string; override;
  214. Class Function APIbasePath : string;override;
  215. Class Function APIbaseURL : String;override;
  216. Class Function APIProtocol : string;override;
  217. Class Function APIservicePath : string;override;
  218. Class Function APIbatchPath : String;override;
  219. Class Function APIAuthScopes : TScopeInfoArray;override;
  220. Class Function APINeedsAuth : Boolean;override;
  221. Class Procedure RegisterAPIResources; override;
  222. //Add create function for resources
  223. Function CreateUserinfoV2MeResource(AOwner : TComponent) : TUserinfoV2MeResource;virtual;overload;
  224. Function CreateUserinfoV2MeResource : TUserinfoV2MeResource;virtual;overload;
  225. Function CreateUserinfoV2Resource(AOwner : TComponent) : TUserinfoV2Resource;virtual;overload;
  226. Function CreateUserinfoV2Resource : TUserinfoV2Resource;virtual;overload;
  227. Function CreateUserinfoResource(AOwner : TComponent) : TUserinfoResource;virtual;overload;
  228. Function CreateUserinfoResource : TUserinfoResource;virtual;overload;
  229. //Add default on-demand instances for resources
  230. Property UserinfoV2MeResource : TUserinfoV2MeResource Read GetUserinfoV2MeInstance;
  231. Property UserinfoV2Resource : TUserinfoV2Resource Read GetUserinfoV2Instance;
  232. Property UserinfoResource : TUserinfoResource Read GetUserinfoInstance;
  233. end;
  234. implementation
  235. { --------------------------------------------------------------------
  236. TJwkTypekeysItem
  237. --------------------------------------------------------------------}
  238. Procedure TJwkTypekeysItem.Setalg(AIndex : Integer; const AValue : String);
  239. begin
  240. If (Falg=AValue) then exit;
  241. Falg:=AValue;
  242. MarkPropertyChanged(AIndex);
  243. end;
  244. Procedure TJwkTypekeysItem.Sete(AIndex : Integer; const AValue : String);
  245. begin
  246. If (Fe=AValue) then exit;
  247. Fe:=AValue;
  248. MarkPropertyChanged(AIndex);
  249. end;
  250. Procedure TJwkTypekeysItem.Setkid(AIndex : Integer; const AValue : String);
  251. begin
  252. If (Fkid=AValue) then exit;
  253. Fkid:=AValue;
  254. MarkPropertyChanged(AIndex);
  255. end;
  256. Procedure TJwkTypekeysItem.Setkty(AIndex : Integer; const AValue : String);
  257. begin
  258. If (Fkty=AValue) then exit;
  259. Fkty:=AValue;
  260. MarkPropertyChanged(AIndex);
  261. end;
  262. Procedure TJwkTypekeysItem.Setn(AIndex : Integer; const AValue : String);
  263. begin
  264. If (Fn=AValue) then exit;
  265. Fn:=AValue;
  266. MarkPropertyChanged(AIndex);
  267. end;
  268. Procedure TJwkTypekeysItem.Setuse(AIndex : Integer; const AValue : String);
  269. begin
  270. If (Fuse=AValue) then exit;
  271. Fuse:=AValue;
  272. MarkPropertyChanged(AIndex);
  273. end;
  274. { --------------------------------------------------------------------
  275. TJwk
  276. --------------------------------------------------------------------}
  277. Procedure TJwk.Setkeys(AIndex : Integer; const AValue : TJwkTypekeysArray);
  278. begin
  279. If (Fkeys=AValue) then exit;
  280. Fkeys:=AValue;
  281. MarkPropertyChanged(AIndex);
  282. end;
  283. //2.6.4. bug workaround
  284. {$IFDEF VER2_6}
  285. Procedure TJwk.SetArrayLength(Const AName : String; ALength : Longint);
  286. begin
  287. Case AName of
  288. 'keys' : SetLength(Fkeys,ALength);
  289. else
  290. Inherited SetArrayLength(AName,ALength);
  291. end;
  292. end;
  293. {$ENDIF VER2_6}
  294. { --------------------------------------------------------------------
  295. TTokeninfo
  296. --------------------------------------------------------------------}
  297. Procedure TTokeninfo.Setaccess_type(AIndex : Integer; const AValue : String);
  298. begin
  299. If (Faccess_type=AValue) then exit;
  300. Faccess_type:=AValue;
  301. MarkPropertyChanged(AIndex);
  302. end;
  303. Procedure TTokeninfo.Setaudience(AIndex : Integer; const AValue : String);
  304. begin
  305. If (Faudience=AValue) then exit;
  306. Faudience:=AValue;
  307. MarkPropertyChanged(AIndex);
  308. end;
  309. Procedure TTokeninfo.Setemail(AIndex : Integer; const AValue : String);
  310. begin
  311. If (Femail=AValue) then exit;
  312. Femail:=AValue;
  313. MarkPropertyChanged(AIndex);
  314. end;
  315. Procedure TTokeninfo.Setexpires_in(AIndex : Integer; const AValue : integer);
  316. begin
  317. If (Fexpires_in=AValue) then exit;
  318. Fexpires_in:=AValue;
  319. MarkPropertyChanged(AIndex);
  320. end;
  321. Procedure TTokeninfo.Setissued_to(AIndex : Integer; const AValue : String);
  322. begin
  323. If (Fissued_to=AValue) then exit;
  324. Fissued_to:=AValue;
  325. MarkPropertyChanged(AIndex);
  326. end;
  327. Procedure TTokeninfo.Setscope(AIndex : Integer; const AValue : String);
  328. begin
  329. If (Fscope=AValue) then exit;
  330. Fscope:=AValue;
  331. MarkPropertyChanged(AIndex);
  332. end;
  333. Procedure TTokeninfo.Settoken_handle(AIndex : Integer; const AValue : String);
  334. begin
  335. If (Ftoken_handle=AValue) then exit;
  336. Ftoken_handle:=AValue;
  337. MarkPropertyChanged(AIndex);
  338. end;
  339. Procedure TTokeninfo.Setuser_id(AIndex : Integer; const AValue : String);
  340. begin
  341. If (Fuser_id=AValue) then exit;
  342. Fuser_id:=AValue;
  343. MarkPropertyChanged(AIndex);
  344. end;
  345. Procedure TTokeninfo.Setverified_email(AIndex : Integer; const AValue : boolean);
  346. begin
  347. If (Fverified_email=AValue) then exit;
  348. Fverified_email:=AValue;
  349. MarkPropertyChanged(AIndex);
  350. end;
  351. { --------------------------------------------------------------------
  352. TUserinfoplus
  353. --------------------------------------------------------------------}
  354. Procedure TUserinfoplus.Setemail(AIndex : Integer; const AValue : String);
  355. begin
  356. If (Femail=AValue) then exit;
  357. Femail:=AValue;
  358. MarkPropertyChanged(AIndex);
  359. end;
  360. Procedure TUserinfoplus.Setfamily_name(AIndex : Integer; const AValue : String);
  361. begin
  362. If (Ffamily_name=AValue) then exit;
  363. Ffamily_name:=AValue;
  364. MarkPropertyChanged(AIndex);
  365. end;
  366. Procedure TUserinfoplus.Setgender(AIndex : Integer; const AValue : String);
  367. begin
  368. If (Fgender=AValue) then exit;
  369. Fgender:=AValue;
  370. MarkPropertyChanged(AIndex);
  371. end;
  372. Procedure TUserinfoplus.Setgiven_name(AIndex : Integer; const AValue : String);
  373. begin
  374. If (Fgiven_name=AValue) then exit;
  375. Fgiven_name:=AValue;
  376. MarkPropertyChanged(AIndex);
  377. end;
  378. Procedure TUserinfoplus.Sethd(AIndex : Integer; const AValue : String);
  379. begin
  380. If (Fhd=AValue) then exit;
  381. Fhd:=AValue;
  382. MarkPropertyChanged(AIndex);
  383. end;
  384. Procedure TUserinfoplus.Setid(AIndex : Integer; const AValue : String);
  385. begin
  386. If (Fid=AValue) then exit;
  387. Fid:=AValue;
  388. MarkPropertyChanged(AIndex);
  389. end;
  390. Procedure TUserinfoplus.Setlink(AIndex : Integer; const AValue : String);
  391. begin
  392. If (Flink=AValue) then exit;
  393. Flink:=AValue;
  394. MarkPropertyChanged(AIndex);
  395. end;
  396. Procedure TUserinfoplus.Setlocale(AIndex : Integer; const AValue : String);
  397. begin
  398. If (Flocale=AValue) then exit;
  399. Flocale:=AValue;
  400. MarkPropertyChanged(AIndex);
  401. end;
  402. Procedure TUserinfoplus.Setname(AIndex : Integer; const AValue : String);
  403. begin
  404. If (Fname=AValue) then exit;
  405. Fname:=AValue;
  406. MarkPropertyChanged(AIndex);
  407. end;
  408. Procedure TUserinfoplus.Setpicture(AIndex : Integer; const AValue : String);
  409. begin
  410. If (Fpicture=AValue) then exit;
  411. Fpicture:=AValue;
  412. MarkPropertyChanged(AIndex);
  413. end;
  414. Procedure TUserinfoplus.Setverified_email(AIndex : Integer; const AValue : boolean);
  415. begin
  416. If (Fverified_email=AValue) then exit;
  417. Fverified_email:=AValue;
  418. MarkPropertyChanged(AIndex);
  419. end;
  420. { --------------------------------------------------------------------
  421. TUserinfoV2MeResource
  422. --------------------------------------------------------------------}
  423. Class Function TUserinfoV2MeResource.ResourceName : String;
  424. begin
  425. Result:='me';
  426. end;
  427. Class Function TUserinfoV2MeResource.DefaultAPI : TGoogleAPIClass;
  428. begin
  429. Result:=Toauth2API;
  430. end;
  431. Function TUserinfoV2MeResource.Get : TUserinfoplus;
  432. Const
  433. _HTTPMethod = 'GET';
  434. _Path = 'userinfo/v2/me';
  435. _Methodid = 'oauth2.userinfo.v2.me.get';
  436. begin
  437. Result:=ServiceCall(_HTTPMethod,_Path,'',Nil,TUserinfoplus) as TUserinfoplus;
  438. end;
  439. { --------------------------------------------------------------------
  440. TUserinfoV2Resource
  441. --------------------------------------------------------------------}
  442. Class Function TUserinfoV2Resource.ResourceName : String;
  443. begin
  444. Result:='v2';
  445. end;
  446. Class Function TUserinfoV2Resource.DefaultAPI : TGoogleAPIClass;
  447. begin
  448. Result:=Toauth2API;
  449. end;
  450. Function TUserinfoV2Resource.GetMeInstance : TUserinfoV2MeResource;
  451. begin
  452. if (FMeInstance=Nil) then
  453. FMeInstance:=CreateMeResource;
  454. Result:=FMeInstance;
  455. end;
  456. Function TUserinfoV2Resource.CreateMeResource : TUserinfoV2MeResource;
  457. begin
  458. Result:=CreateMeResource(Self);
  459. end;
  460. Function TUserinfoV2Resource.CreateMeResource(AOwner : TComponent) : TUserinfoV2MeResource;
  461. begin
  462. Result:=TUserinfoV2MeResource.Create(AOwner);
  463. Result.API:=Self.API;
  464. end;
  465. { --------------------------------------------------------------------
  466. TUserinfoResource
  467. --------------------------------------------------------------------}
  468. Class Function TUserinfoResource.ResourceName : String;
  469. begin
  470. Result:='userinfo';
  471. end;
  472. Class Function TUserinfoResource.DefaultAPI : TGoogleAPIClass;
  473. begin
  474. Result:=Toauth2API;
  475. end;
  476. Function TUserinfoResource.Get : TUserinfoplus;
  477. Const
  478. _HTTPMethod = 'GET';
  479. _Path = 'oauth2/v2/userinfo';
  480. _Methodid = 'oauth2.userinfo.get';
  481. begin
  482. Result:=ServiceCall(_HTTPMethod,_Path,'',Nil,TUserinfoplus) as TUserinfoplus;
  483. end;
  484. Function TUserinfoResource.GetV2MeInstance : TUserinfoV2MeResource;
  485. begin
  486. if (FV2MeInstance=Nil) then
  487. FV2MeInstance:=CreateV2MeResource;
  488. Result:=FV2MeInstance;
  489. end;
  490. Function TUserinfoResource.CreateV2MeResource : TUserinfoV2MeResource;
  491. begin
  492. Result:=CreateV2MeResource(Self);
  493. end;
  494. Function TUserinfoResource.CreateV2MeResource(AOwner : TComponent) : TUserinfoV2MeResource;
  495. begin
  496. Result:=TUserinfoV2MeResource.Create(AOwner);
  497. Result.API:=Self.API;
  498. end;
  499. Function TUserinfoResource.GetV2Instance : TUserinfoV2Resource;
  500. begin
  501. if (FV2Instance=Nil) then
  502. FV2Instance:=CreateV2Resource;
  503. Result:=FV2Instance;
  504. end;
  505. Function TUserinfoResource.CreateV2Resource : TUserinfoV2Resource;
  506. begin
  507. Result:=CreateV2Resource(Self);
  508. end;
  509. Function TUserinfoResource.CreateV2Resource(AOwner : TComponent) : TUserinfoV2Resource;
  510. begin
  511. Result:=TUserinfoV2Resource.Create(AOwner);
  512. Result.API:=Self.API;
  513. end;
  514. { --------------------------------------------------------------------
  515. TOauth2API
  516. --------------------------------------------------------------------}
  517. Class Function TOauth2API.APIName : String;
  518. begin
  519. Result:='oauth2';
  520. end;
  521. Class Function TOauth2API.APIVersion : String;
  522. begin
  523. Result:='v2';
  524. end;
  525. Class Function TOauth2API.APIRevision : String;
  526. begin
  527. Result:='20160330';
  528. end;
  529. Class Function TOauth2API.APIID : String;
  530. begin
  531. Result:='oauth2:v2';
  532. end;
  533. Class Function TOauth2API.APITitle : String;
  534. begin
  535. Result:='Google OAuth2 API';
  536. end;
  537. Class Function TOauth2API.APIDescription : String;
  538. begin
  539. Result:='Obtains end-user authorization grants for use with other Google APIs.';
  540. end;
  541. Class Function TOauth2API.APIOwnerDomain : String;
  542. begin
  543. Result:='google.com';
  544. end;
  545. Class Function TOauth2API.APIOwnerName : String;
  546. begin
  547. Result:='Google';
  548. end;
  549. Class Function TOauth2API.APIIcon16 : String;
  550. begin
  551. Result:='http://www.google.com/images/icons/product/search-16.gif';
  552. end;
  553. Class Function TOauth2API.APIIcon32 : String;
  554. begin
  555. Result:='http://www.google.com/images/icons/product/search-32.gif';
  556. end;
  557. Class Function TOauth2API.APIdocumentationLink : String;
  558. begin
  559. Result:='https://developers.google.com/accounts/docs/OAuth2';
  560. end;
  561. Class Function TOauth2API.APIrootUrl : string;
  562. begin
  563. Result:='https://www.googleapis.com/';
  564. end;
  565. Class Function TOauth2API.APIbasePath : string;
  566. begin
  567. Result:='/';
  568. end;
  569. Class Function TOauth2API.APIbaseURL : String;
  570. begin
  571. Result:='https://www.googleapis.com/';
  572. end;
  573. Class Function TOauth2API.APIProtocol : string;
  574. begin
  575. Result:='rest';
  576. end;
  577. Class Function TOauth2API.APIservicePath : string;
  578. begin
  579. Result:='';
  580. end;
  581. Class Function TOauth2API.APIbatchPath : String;
  582. begin
  583. Result:='batch';
  584. end;
  585. Class Function TOauth2API.APIAuthScopes : TScopeInfoArray;
  586. begin
  587. SetLength(Result,4);
  588. Result[0].Name:='https://www.googleapis.com/auth/plus.login';
  589. Result[0].Description:='Know the list of people in your circles, your age range, and language';
  590. Result[1].Name:='https://www.googleapis.com/auth/plus.me';
  591. Result[1].Description:='Know who you are on Google';
  592. Result[2].Name:='https://www.googleapis.com/auth/userinfo.email';
  593. Result[2].Description:='View your email address';
  594. Result[3].Name:='https://www.googleapis.com/auth/userinfo.profile';
  595. Result[3].Description:='View your basic profile info';
  596. end;
  597. Class Function TOauth2API.APINeedsAuth : Boolean;
  598. begin
  599. Result:=True;
  600. end;
  601. Class Procedure TOauth2API.RegisterAPIResources;
  602. begin
  603. TJwkTypekeysItem.RegisterObject;
  604. TJwk.RegisterObject;
  605. TTokeninfo.RegisterObject;
  606. TUserinfoplus.RegisterObject;
  607. end;
  608. Function TOauth2API.GetUserinfoV2MeInstance : TUserinfoV2MeResource;
  609. begin
  610. if (FUserinfoV2MeInstance=Nil) then
  611. FUserinfoV2MeInstance:=CreateUserinfoV2MeResource;
  612. Result:=FUserinfoV2MeInstance;
  613. end;
  614. Function TOauth2API.CreateUserinfoV2MeResource : TUserinfoV2MeResource;
  615. begin
  616. Result:=CreateUserinfoV2MeResource(Self);
  617. end;
  618. Function TOauth2API.CreateUserinfoV2MeResource(AOwner : TComponent) : TUserinfoV2MeResource;
  619. begin
  620. Result:=TUserinfoV2MeResource.Create(AOwner);
  621. Result.API:=Self.API;
  622. end;
  623. Function TOauth2API.GetUserinfoV2Instance : TUserinfoV2Resource;
  624. begin
  625. if (FUserinfoV2Instance=Nil) then
  626. FUserinfoV2Instance:=CreateUserinfoV2Resource;
  627. Result:=FUserinfoV2Instance;
  628. end;
  629. Function TOauth2API.CreateUserinfoV2Resource : TUserinfoV2Resource;
  630. begin
  631. Result:=CreateUserinfoV2Resource(Self);
  632. end;
  633. Function TOauth2API.CreateUserinfoV2Resource(AOwner : TComponent) : TUserinfoV2Resource;
  634. begin
  635. Result:=TUserinfoV2Resource.Create(AOwner);
  636. Result.API:=Self.API;
  637. end;
  638. Function TOauth2API.GetUserinfoInstance : TUserinfoResource;
  639. begin
  640. if (FUserinfoInstance=Nil) then
  641. FUserinfoInstance:=CreateUserinfoResource;
  642. Result:=FUserinfoInstance;
  643. end;
  644. Function TOauth2API.CreateUserinfoResource : TUserinfoResource;
  645. begin
  646. Result:=CreateUserinfoResource(Self);
  647. end;
  648. Function TOauth2API.CreateUserinfoResource(AOwner : TComponent) : TUserinfoResource;
  649. begin
  650. Result:=TUserinfoResource.Create(AOwner);
  651. Result.API:=Self.API;
  652. end;
  653. initialization
  654. TOauth2API.RegisterAPI;
  655. end.