googleoauth2.pp 24 KB

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