googletasks.pp 30 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229
  1. unit googletasks;
  2. {
  3. **********************************************************************
  4. This file is part of the Free Component Library (FCL)
  5. Copyright (c) 2015 The free pascal team.
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. **********************************************************************
  12. }
  13. //Generated on: 16-5-15 08:53:08
  14. {$MODE objfpc}
  15. {$H+}
  16. interface
  17. uses sysutils, classes, googleservice, restbase, googlebase;
  18. type
  19. //Top-level schema types
  20. TTask = Class;
  21. TTaskList = Class;
  22. TTaskLists = Class;
  23. TTasks = Class;
  24. TTaskArray = Array of TTask;
  25. TTaskListArray = Array of TTaskList;
  26. TTaskListsArray = Array of TTaskLists;
  27. TTasksArray = Array of TTasks;
  28. //Anonymous types, using auto-generated names
  29. TTaskTypelinksItem = Class;
  30. TTaskTypelinksArray = Array of TTaskTypelinksItem;
  31. TTaskListsTypeitemsArray = Array of TTaskList;
  32. TTasksTypeitemsArray = Array of TTask;
  33. { --------------------------------------------------------------------
  34. TTaskTypelinksItem
  35. --------------------------------------------------------------------}
  36. TTaskTypelinksItem = Class(TGoogleBaseObject)
  37. Private
  38. Fdescription : String;
  39. Flink : String;
  40. F_type : String;
  41. Protected
  42. Class Function ExportPropertyName(Const AName : String) : string; override;
  43. //Property setters
  44. Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
  45. Procedure Setlink(AIndex : Integer; const AValue : String); virtual;
  46. Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
  47. Public
  48. Published
  49. Property description : String Index 0 Read Fdescription Write Setdescription;
  50. Property link : String Index 8 Read Flink Write Setlink;
  51. Property _type : String Index 16 Read F_type Write Set_type;
  52. end;
  53. TTaskTypelinksItemClass = Class of TTaskTypelinksItem;
  54. { --------------------------------------------------------------------
  55. TTask
  56. --------------------------------------------------------------------}
  57. TTask = Class(TGoogleBaseObject)
  58. Private
  59. Fcompleted : TDatetime;
  60. Fdeleted : boolean;
  61. Fdue : TDatetime;
  62. Fetag : String;
  63. Fhidden : boolean;
  64. Fid : String;
  65. Fkind : String;
  66. Flinks : TTaskTypelinksArray;
  67. Fnotes : String;
  68. Fparent : String;
  69. Fposition : String;
  70. FselfLink : String;
  71. Fstatus : String;
  72. Ftitle : String;
  73. Fupdated : TDatetime;
  74. Protected
  75. //Property setters
  76. Procedure Setcompleted(AIndex : Integer; AValue : TDatetime); virtual;
  77. Procedure Setdeleted(AIndex : Integer; AValue : boolean); virtual;
  78. Procedure Setdue(AIndex : Integer; AValue : TDatetime); virtual;
  79. Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
  80. Procedure Sethidden(AIndex : Integer; AValue : boolean); virtual;
  81. Procedure Setid(AIndex : Integer; const AValue : String); virtual;
  82. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  83. Procedure Setlinks(AIndex : Integer; AValue : TTaskTypelinksArray); virtual;
  84. Procedure Setnotes(AIndex : Integer; const AValue : String); virtual;
  85. Procedure Setparent(AIndex : Integer; const AValue : String); virtual;
  86. Procedure Setposition(AIndex : Integer; const AValue : String); virtual;
  87. Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
  88. Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
  89. Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
  90. Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
  91. //2.6.4. bug workaround
  92. {$IFDEF VER2_6}
  93. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  94. {$ENDIF VER2_6}
  95. Public
  96. Published
  97. Property completed : TDatetime Index 0 Read Fcompleted Write Setcompleted;
  98. Property deleted : boolean Index 8 Read Fdeleted Write Setdeleted;
  99. Property due : TDatetime Index 16 Read Fdue Write Setdue;
  100. Property etag : String Index 24 Read Fetag Write Setetag;
  101. Property hidden : boolean Index 32 Read Fhidden Write Sethidden;
  102. Property id : String Index 40 Read Fid Write Setid;
  103. Property kind : String Index 48 Read Fkind Write Setkind;
  104. Property links : TTaskTypelinksArray Index 56 Read Flinks Write Setlinks;
  105. Property notes : String Index 64 Read Fnotes Write Setnotes;
  106. Property parent : String Index 72 Read Fparent Write Setparent;
  107. Property position : String Index 80 Read Fposition Write Setposition;
  108. Property selfLink : String Index 88 Read FselfLink Write SetselfLink;
  109. Property status : String Index 96 Read Fstatus Write Setstatus;
  110. Property title : String Index 104 Read Ftitle Write Settitle;
  111. Property updated : TDatetime Index 112 Read Fupdated Write Setupdated;
  112. end;
  113. TTaskClass = Class of TTask;
  114. { --------------------------------------------------------------------
  115. TTaskList
  116. --------------------------------------------------------------------}
  117. TTaskList = Class(TGoogleBaseObject)
  118. Private
  119. Fetag : String;
  120. Fid : String;
  121. Fkind : String;
  122. FselfLink : String;
  123. Ftitle : String;
  124. Fupdated : TDatetime;
  125. Protected
  126. //Property setters
  127. Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
  128. Procedure Setid(AIndex : Integer; const AValue : String); virtual;
  129. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  130. Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
  131. Procedure Settitle(AIndex : Integer; const AValue : String); virtual;
  132. Procedure Setupdated(AIndex : Integer; AValue : TDatetime); virtual;
  133. Public
  134. Published
  135. Property etag : String Index 0 Read Fetag Write Setetag;
  136. Property id : String Index 8 Read Fid Write Setid;
  137. Property kind : String Index 16 Read Fkind Write Setkind;
  138. Property selfLink : String Index 24 Read FselfLink Write SetselfLink;
  139. Property title : String Index 32 Read Ftitle Write Settitle;
  140. Property updated : TDatetime Index 40 Read Fupdated Write Setupdated;
  141. end;
  142. TTaskListClass = Class of TTaskList;
  143. { --------------------------------------------------------------------
  144. TTaskLists
  145. --------------------------------------------------------------------}
  146. TTaskLists = Class(TGoogleBaseObject)
  147. Private
  148. Fetag : String;
  149. Fitems : TTaskListsTypeitemsArray;
  150. Fkind : String;
  151. FnextPageToken : String;
  152. Protected
  153. //Property setters
  154. Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
  155. Procedure Setitems(AIndex : Integer; AValue : TTaskListsTypeitemsArray); virtual;
  156. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  157. Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
  158. //2.6.4. bug workaround
  159. {$IFDEF VER2_6}
  160. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  161. {$ENDIF VER2_6}
  162. Public
  163. Published
  164. Property etag : String Index 0 Read Fetag Write Setetag;
  165. Property items : TTaskListsTypeitemsArray Index 8 Read Fitems Write Setitems;
  166. Property kind : String Index 16 Read Fkind Write Setkind;
  167. Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
  168. end;
  169. TTaskListsClass = Class of TTaskLists;
  170. { --------------------------------------------------------------------
  171. TTasks
  172. --------------------------------------------------------------------}
  173. TTasks = Class(TGoogleBaseObject)
  174. Private
  175. Fetag : String;
  176. Fitems : TTasksTypeitemsArray;
  177. Fkind : String;
  178. FnextPageToken : String;
  179. Protected
  180. //Property setters
  181. Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
  182. Procedure Setitems(AIndex : Integer; AValue : TTasksTypeitemsArray); virtual;
  183. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  184. Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
  185. //2.6.4. bug workaround
  186. {$IFDEF VER2_6}
  187. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  188. {$ENDIF VER2_6}
  189. Public
  190. Published
  191. Property etag : String Index 0 Read Fetag Write Setetag;
  192. Property items : TTasksTypeitemsArray Index 8 Read Fitems Write Setitems;
  193. Property kind : String Index 16 Read Fkind Write Setkind;
  194. Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
  195. end;
  196. TTasksClass = Class of TTasks;
  197. { --------------------------------------------------------------------
  198. TTasklistsResource
  199. --------------------------------------------------------------------}
  200. //Optional query Options for TTasklistsResource, method List
  201. TTasklistsListOptions = Record
  202. maxResults : int64;
  203. pageToken : String;
  204. end;
  205. TTasklistsResource = Class(TGoogleResource)
  206. Public
  207. Class Function ResourceName : String; override;
  208. Class Function DefaultAPI : TGoogleAPIClass; override;
  209. Procedure Delete(tasklist: string);
  210. Function Get(tasklist: string) : TTaskList;
  211. Function Insert(aTaskList : TTaskList) : TTaskList;
  212. Function List(AQuery : string = '') : TTaskLists;
  213. Function List(AQuery : TTasklistslistOptions) : TTaskLists;
  214. Function Patch(tasklist: string; aTaskList : TTaskList) : TTaskList;
  215. Function Update(tasklist: string; aTaskList : TTaskList) : TTaskList;
  216. end;
  217. { --------------------------------------------------------------------
  218. TTasksResource
  219. --------------------------------------------------------------------}
  220. //Optional query Options for TTasksResource, method Insert
  221. TTasksInsertOptions = Record
  222. parent : String;
  223. previous : String;
  224. end;
  225. //Optional query Options for TTasksResource, method List
  226. TTasksListOptions = Record
  227. completedMax : String;
  228. completedMin : String;
  229. dueMax : String;
  230. dueMin : String;
  231. maxResults : int64;
  232. pageToken : String;
  233. showCompleted : boolean;
  234. showDeleted : boolean;
  235. showHidden : boolean;
  236. updatedMin : String;
  237. end;
  238. //Optional query Options for TTasksResource, method Move
  239. TTasksMoveOptions = Record
  240. parent : String;
  241. previous : String;
  242. end;
  243. TTasksResource = Class(TGoogleResource)
  244. Public
  245. Class Function ResourceName : String; override;
  246. Class Function DefaultAPI : TGoogleAPIClass; override;
  247. Procedure Clear(tasklist: string);
  248. Procedure Delete(task: string; tasklist: string);
  249. Function Get(task: string; tasklist: string) : TTask;
  250. Function Insert(tasklist: string; aTask : TTask; AQuery : string = '') : TTask;
  251. Function Insert(tasklist: string; aTask : TTask; AQuery : TTasksinsertOptions) : TTask;
  252. Function List(tasklist: string; AQuery : string = '') : TTasks;
  253. Function List(tasklist: string; AQuery : TTaskslistOptions) : TTasks;
  254. Function Move(task: string; tasklist: string; AQuery : string = '') : TTask;
  255. Function Move(task: string; tasklist: string; AQuery : TTasksmoveOptions) : TTask;
  256. Function Patch(task: string; tasklist: string; aTask : TTask) : TTask;
  257. Function Update(task: string; tasklist: string; aTask : TTask) : TTask;
  258. end;
  259. { --------------------------------------------------------------------
  260. TTasksAPI
  261. --------------------------------------------------------------------}
  262. TTasksAPI = Class(TGoogleAPI)
  263. Private
  264. FTasklistsInstance : TTasklistsResource;
  265. FTasksInstance : TTasksResource;
  266. Function GetTasklistsInstance : TTasklistsResource;virtual;
  267. Function GetTasksInstance : TTasksResource;virtual;
  268. Public
  269. //Override class functions with API info
  270. Class Function APIName : String; override;
  271. Class Function APIVersion : String; override;
  272. Class Function APIRevision : String; override;
  273. Class Function APIID : String; override;
  274. Class Function APITitle : String; override;
  275. Class Function APIDescription : String; override;
  276. Class Function APIOwnerDomain : String; override;
  277. Class Function APIOwnerName : String; override;
  278. Class Function APIIcon16 : String; override;
  279. Class Function APIIcon32 : String; override;
  280. Class Function APIdocumentationLink : String; override;
  281. Class Function APIrootUrl : string; override;
  282. Class Function APIbasePath : string;override;
  283. Class Function APIbaseURL : String;override;
  284. Class Function APIProtocol : string;override;
  285. Class Function APIservicePath : string;override;
  286. Class Function APIbatchPath : String;override;
  287. Class Function APIAuthScopes : TScopeInfoArray;override;
  288. Class Function APINeedsAuth : Boolean;override;
  289. Class Procedure RegisterAPIResources; override;
  290. //Add create function for resources
  291. Function CreateTasklistsResource(AOwner : TComponent) : TTasklistsResource;virtual;overload;
  292. Function CreateTasklistsResource : TTasklistsResource;virtual;overload;
  293. Function CreateTasksResource(AOwner : TComponent) : TTasksResource;virtual;overload;
  294. Function CreateTasksResource : TTasksResource;virtual;overload;
  295. //Add default on-demand instances for resources
  296. Property TasklistsResource : TTasklistsResource Read GetTasklistsInstance;
  297. Property TasksResource : TTasksResource Read GetTasksInstance;
  298. end;
  299. implementation
  300. { --------------------------------------------------------------------
  301. TTaskTypelinksItem
  302. --------------------------------------------------------------------}
  303. Procedure TTaskTypelinksItem.Setdescription(AIndex : Integer; const AValue : String);
  304. begin
  305. If (Fdescription=AValue) then exit;
  306. Fdescription:=AValue;
  307. MarkPropertyChanged(AIndex);
  308. end;
  309. Procedure TTaskTypelinksItem.Setlink(AIndex : Integer; const AValue : String);
  310. begin
  311. If (Flink=AValue) then exit;
  312. Flink:=AValue;
  313. MarkPropertyChanged(AIndex);
  314. end;
  315. Procedure TTaskTypelinksItem.Set_type(AIndex : Integer; const AValue : String);
  316. begin
  317. If (F_type=AValue) then exit;
  318. F_type:=AValue;
  319. MarkPropertyChanged(AIndex);
  320. end;
  321. Class Function TTaskTypelinksItem.ExportPropertyName(Const AName : String) :String;
  322. begin
  323. Case AName of
  324. '_type' : Result:='type';
  325. else
  326. Result:=Inherited ExportPropertyName(AName);
  327. end;
  328. end;
  329. { --------------------------------------------------------------------
  330. TTask
  331. --------------------------------------------------------------------}
  332. Procedure TTask.Setcompleted(AIndex : Integer; AValue : TDatetime);
  333. begin
  334. If (Fcompleted=AValue) then exit;
  335. Fcompleted:=AValue;
  336. MarkPropertyChanged(AIndex);
  337. end;
  338. Procedure TTask.Setdeleted(AIndex : Integer; AValue : boolean);
  339. begin
  340. If (Fdeleted=AValue) then exit;
  341. Fdeleted:=AValue;
  342. MarkPropertyChanged(AIndex);
  343. end;
  344. Procedure TTask.Setdue(AIndex : Integer; AValue : TDatetime);
  345. begin
  346. If (Fdue=AValue) then exit;
  347. Fdue:=AValue;
  348. MarkPropertyChanged(AIndex);
  349. end;
  350. Procedure TTask.Setetag(AIndex : Integer; const AValue : String);
  351. begin
  352. If (Fetag=AValue) then exit;
  353. Fetag:=AValue;
  354. MarkPropertyChanged(AIndex);
  355. end;
  356. Procedure TTask.Sethidden(AIndex : Integer; AValue : boolean);
  357. begin
  358. If (Fhidden=AValue) then exit;
  359. Fhidden:=AValue;
  360. MarkPropertyChanged(AIndex);
  361. end;
  362. Procedure TTask.Setid(AIndex : Integer; const AValue : String);
  363. begin
  364. If (Fid=AValue) then exit;
  365. Fid:=AValue;
  366. MarkPropertyChanged(AIndex);
  367. end;
  368. Procedure TTask.Setkind(AIndex : Integer; const AValue : String);
  369. begin
  370. If (Fkind=AValue) then exit;
  371. Fkind:=AValue;
  372. MarkPropertyChanged(AIndex);
  373. end;
  374. Procedure TTask.Setlinks(AIndex : Integer; AValue : TTaskTypelinksArray);
  375. begin
  376. If (Flinks=AValue) then exit;
  377. Flinks:=AValue;
  378. MarkPropertyChanged(AIndex);
  379. end;
  380. Procedure TTask.Setnotes(AIndex : Integer; const AValue : String);
  381. begin
  382. If (Fnotes=AValue) then exit;
  383. Fnotes:=AValue;
  384. MarkPropertyChanged(AIndex);
  385. end;
  386. Procedure TTask.Setparent(AIndex : Integer; const AValue : String);
  387. begin
  388. If (Fparent=AValue) then exit;
  389. Fparent:=AValue;
  390. MarkPropertyChanged(AIndex);
  391. end;
  392. Procedure TTask.Setposition(AIndex : Integer; const AValue : String);
  393. begin
  394. If (Fposition=AValue) then exit;
  395. Fposition:=AValue;
  396. MarkPropertyChanged(AIndex);
  397. end;
  398. Procedure TTask.SetselfLink(AIndex : Integer; const AValue : String);
  399. begin
  400. If (FselfLink=AValue) then exit;
  401. FselfLink:=AValue;
  402. MarkPropertyChanged(AIndex);
  403. end;
  404. Procedure TTask.Setstatus(AIndex : Integer; const AValue : String);
  405. begin
  406. If (Fstatus=AValue) then exit;
  407. Fstatus:=AValue;
  408. MarkPropertyChanged(AIndex);
  409. end;
  410. Procedure TTask.Settitle(AIndex : Integer; const AValue : String);
  411. begin
  412. If (Ftitle=AValue) then exit;
  413. Ftitle:=AValue;
  414. MarkPropertyChanged(AIndex);
  415. end;
  416. Procedure TTask.Setupdated(AIndex : Integer; AValue : TDatetime);
  417. begin
  418. If (Fupdated=AValue) then exit;
  419. Fupdated:=AValue;
  420. MarkPropertyChanged(AIndex);
  421. end;
  422. //2.6.4. bug workaround
  423. {$IFDEF VER2_6}
  424. Procedure TTask.SetArrayLength(Const AName : String; ALength : Longint);
  425. begin
  426. Case AName of
  427. 'links' : SetLength(Flinks,ALength);
  428. else
  429. Inherited SetArrayLength(AName,ALength);
  430. end;
  431. end;
  432. {$ENDIF VER2_6}
  433. { --------------------------------------------------------------------
  434. TTaskList
  435. --------------------------------------------------------------------}
  436. Procedure TTaskList.Setetag(AIndex : Integer; const AValue : String);
  437. begin
  438. If (Fetag=AValue) then exit;
  439. Fetag:=AValue;
  440. MarkPropertyChanged(AIndex);
  441. end;
  442. Procedure TTaskList.Setid(AIndex : Integer; const AValue : String);
  443. begin
  444. If (Fid=AValue) then exit;
  445. Fid:=AValue;
  446. MarkPropertyChanged(AIndex);
  447. end;
  448. Procedure TTaskList.Setkind(AIndex : Integer; const AValue : String);
  449. begin
  450. If (Fkind=AValue) then exit;
  451. Fkind:=AValue;
  452. MarkPropertyChanged(AIndex);
  453. end;
  454. Procedure TTaskList.SetselfLink(AIndex : Integer; const AValue : String);
  455. begin
  456. If (FselfLink=AValue) then exit;
  457. FselfLink:=AValue;
  458. MarkPropertyChanged(AIndex);
  459. end;
  460. Procedure TTaskList.Settitle(AIndex : Integer; const AValue : String);
  461. begin
  462. If (Ftitle=AValue) then exit;
  463. Ftitle:=AValue;
  464. MarkPropertyChanged(AIndex);
  465. end;
  466. Procedure TTaskList.Setupdated(AIndex : Integer; AValue : TDatetime);
  467. begin
  468. If (Fupdated=AValue) then exit;
  469. Fupdated:=AValue;
  470. MarkPropertyChanged(AIndex);
  471. end;
  472. { --------------------------------------------------------------------
  473. TTaskLists
  474. --------------------------------------------------------------------}
  475. Procedure TTaskLists.Setetag(AIndex : Integer; const AValue : String);
  476. begin
  477. If (Fetag=AValue) then exit;
  478. Fetag:=AValue;
  479. MarkPropertyChanged(AIndex);
  480. end;
  481. Procedure TTaskLists.Setitems(AIndex : Integer; AValue : TTaskListsTypeitemsArray);
  482. begin
  483. If (Fitems=AValue) then exit;
  484. Fitems:=AValue;
  485. MarkPropertyChanged(AIndex);
  486. end;
  487. Procedure TTaskLists.Setkind(AIndex : Integer; const AValue : String);
  488. begin
  489. If (Fkind=AValue) then exit;
  490. Fkind:=AValue;
  491. MarkPropertyChanged(AIndex);
  492. end;
  493. Procedure TTaskLists.SetnextPageToken(AIndex : Integer; const AValue : String);
  494. begin
  495. If (FnextPageToken=AValue) then exit;
  496. FnextPageToken:=AValue;
  497. MarkPropertyChanged(AIndex);
  498. end;
  499. //2.6.4. bug workaround
  500. {$IFDEF VER2_6}
  501. Procedure TTaskLists.SetArrayLength(Const AName : String; ALength : Longint);
  502. begin
  503. Case AName of
  504. 'items' : SetLength(Fitems,ALength);
  505. else
  506. Inherited SetArrayLength(AName,ALength);
  507. end;
  508. end;
  509. {$ENDIF VER2_6}
  510. { --------------------------------------------------------------------
  511. TTasks
  512. --------------------------------------------------------------------}
  513. Procedure TTasks.Setetag(AIndex : Integer; const AValue : String);
  514. begin
  515. If (Fetag=AValue) then exit;
  516. Fetag:=AValue;
  517. MarkPropertyChanged(AIndex);
  518. end;
  519. Procedure TTasks.Setitems(AIndex : Integer; AValue : TTasksTypeitemsArray);
  520. begin
  521. If (Fitems=AValue) then exit;
  522. Fitems:=AValue;
  523. MarkPropertyChanged(AIndex);
  524. end;
  525. Procedure TTasks.Setkind(AIndex : Integer; const AValue : String);
  526. begin
  527. If (Fkind=AValue) then exit;
  528. Fkind:=AValue;
  529. MarkPropertyChanged(AIndex);
  530. end;
  531. Procedure TTasks.SetnextPageToken(AIndex : Integer; const AValue : String);
  532. begin
  533. If (FnextPageToken=AValue) then exit;
  534. FnextPageToken:=AValue;
  535. MarkPropertyChanged(AIndex);
  536. end;
  537. //2.6.4. bug workaround
  538. {$IFDEF VER2_6}
  539. Procedure TTasks.SetArrayLength(Const AName : String; ALength : Longint);
  540. begin
  541. Case AName of
  542. 'items' : SetLength(Fitems,ALength);
  543. else
  544. Inherited SetArrayLength(AName,ALength);
  545. end;
  546. end;
  547. {$ENDIF VER2_6}
  548. { --------------------------------------------------------------------
  549. TTasklistsResource
  550. --------------------------------------------------------------------}
  551. Class Function TTasklistsResource.ResourceName : String;
  552. begin
  553. Result:='tasklists';
  554. end;
  555. Class Function TTasklistsResource.DefaultAPI : TGoogleAPIClass;
  556. begin
  557. Result:=TtasksAPI;
  558. end;
  559. Procedure TTasklistsResource.Delete(tasklist: string);
  560. Const
  561. _HTTPMethod = 'DELETE';
  562. _Path = 'users/@me/lists/{tasklist}';
  563. _Methodid = 'tasks.tasklists.delete';
  564. Var
  565. _P : String;
  566. begin
  567. _P:=SubstitutePath(_Path,['tasklist',tasklist]);
  568. ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
  569. end;
  570. Function TTasklistsResource.Get(tasklist: string) : TTaskList;
  571. Const
  572. _HTTPMethod = 'GET';
  573. _Path = 'users/@me/lists/{tasklist}';
  574. _Methodid = 'tasks.tasklists.get';
  575. Var
  576. _P : String;
  577. begin
  578. _P:=SubstitutePath(_Path,['tasklist',tasklist]);
  579. Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TTaskList) as TTaskList;
  580. end;
  581. Function TTasklistsResource.Insert(aTaskList : TTaskList) : TTaskList;
  582. Const
  583. _HTTPMethod = 'POST';
  584. _Path = 'users/@me/lists';
  585. _Methodid = 'tasks.tasklists.insert';
  586. begin
  587. Result:=ServiceCall(_HTTPMethod,_Path,'',aTaskList,TTaskList) as TTaskList;
  588. end;
  589. Function TTasklistsResource.List(AQuery : string = '') : TTaskLists;
  590. Const
  591. _HTTPMethod = 'GET';
  592. _Path = 'users/@me/lists';
  593. _Methodid = 'tasks.tasklists.list';
  594. begin
  595. Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TTaskLists) as TTaskLists;
  596. end;
  597. Function TTasklistsResource.List(AQuery : TTasklistslistOptions) : TTaskLists;
  598. Var
  599. _Q : String;
  600. begin
  601. _Q:='';
  602. AddToQuery(_Q,'maxResults',AQuery.maxResults);
  603. AddToQuery(_Q,'pageToken',AQuery.pageToken);
  604. Result:=List(_Q);
  605. end;
  606. Function TTasklistsResource.Patch(tasklist: string; aTaskList : TTaskList) : TTaskList;
  607. Const
  608. _HTTPMethod = 'PATCH';
  609. _Path = 'users/@me/lists/{tasklist}';
  610. _Methodid = 'tasks.tasklists.patch';
  611. Var
  612. _P : String;
  613. begin
  614. _P:=SubstitutePath(_Path,['tasklist',tasklist]);
  615. Result:=ServiceCall(_HTTPMethod,_P,'',aTaskList,TTaskList) as TTaskList;
  616. end;
  617. Function TTasklistsResource.Update(tasklist: string; aTaskList : TTaskList) : TTaskList;
  618. Const
  619. _HTTPMethod = 'PUT';
  620. _Path = 'users/@me/lists/{tasklist}';
  621. _Methodid = 'tasks.tasklists.update';
  622. Var
  623. _P : String;
  624. begin
  625. _P:=SubstitutePath(_Path,['tasklist',tasklist]);
  626. Result:=ServiceCall(_HTTPMethod,_P,'',aTaskList,TTaskList) as TTaskList;
  627. end;
  628. { --------------------------------------------------------------------
  629. TTasksResource
  630. --------------------------------------------------------------------}
  631. Class Function TTasksResource.ResourceName : String;
  632. begin
  633. Result:='tasks';
  634. end;
  635. Class Function TTasksResource.DefaultAPI : TGoogleAPIClass;
  636. begin
  637. Result:=TtasksAPI;
  638. end;
  639. Procedure TTasksResource.Clear(tasklist: string);
  640. Const
  641. _HTTPMethod = 'POST';
  642. _Path = 'lists/{tasklist}/clear';
  643. _Methodid = 'tasks.tasks.clear';
  644. Var
  645. _P : String;
  646. begin
  647. _P:=SubstitutePath(_Path,['tasklist',tasklist]);
  648. ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
  649. end;
  650. Procedure TTasksResource.Delete(task: string; tasklist: string);
  651. Const
  652. _HTTPMethod = 'DELETE';
  653. _Path = 'lists/{tasklist}/tasks/{task}';
  654. _Methodid = 'tasks.tasks.delete';
  655. Var
  656. _P : String;
  657. begin
  658. _P:=SubstitutePath(_Path,['task',task,'tasklist',tasklist]);
  659. ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
  660. end;
  661. Function TTasksResource.Get(task: string; tasklist: string) : TTask;
  662. Const
  663. _HTTPMethod = 'GET';
  664. _Path = 'lists/{tasklist}/tasks/{task}';
  665. _Methodid = 'tasks.tasks.get';
  666. Var
  667. _P : String;
  668. begin
  669. _P:=SubstitutePath(_Path,['task',task,'tasklist',tasklist]);
  670. Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TTask) as TTask;
  671. end;
  672. Function TTasksResource.Insert(tasklist: string; aTask : TTask; AQuery : string = '') : TTask;
  673. Const
  674. _HTTPMethod = 'POST';
  675. _Path = 'lists/{tasklist}/tasks';
  676. _Methodid = 'tasks.tasks.insert';
  677. Var
  678. _P : String;
  679. begin
  680. _P:=SubstitutePath(_Path,['tasklist',tasklist]);
  681. Result:=ServiceCall(_HTTPMethod,_P,AQuery,aTask,TTask) as TTask;
  682. end;
  683. Function TTasksResource.Insert(tasklist: string; aTask : TTask; AQuery : TTasksinsertOptions) : TTask;
  684. Var
  685. _Q : String;
  686. begin
  687. _Q:='';
  688. AddToQuery(_Q,'parent',AQuery.parent);
  689. AddToQuery(_Q,'previous',AQuery.previous);
  690. Result:=Insert(tasklist,aTask,_Q);
  691. end;
  692. Function TTasksResource.List(tasklist: string; AQuery : string = '') : TTasks;
  693. Const
  694. _HTTPMethod = 'GET';
  695. _Path = 'lists/{tasklist}/tasks';
  696. _Methodid = 'tasks.tasks.list';
  697. Var
  698. _P : String;
  699. begin
  700. _P:=SubstitutePath(_Path,['tasklist',tasklist]);
  701. Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TTasks) as TTasks;
  702. end;
  703. Function TTasksResource.List(tasklist: string; AQuery : TTaskslistOptions) : TTasks;
  704. Var
  705. _Q : String;
  706. begin
  707. _Q:='';
  708. AddToQuery(_Q,'completedMax',AQuery.completedMax);
  709. AddToQuery(_Q,'completedMin',AQuery.completedMin);
  710. AddToQuery(_Q,'dueMax',AQuery.dueMax);
  711. AddToQuery(_Q,'dueMin',AQuery.dueMin);
  712. AddToQuery(_Q,'maxResults',AQuery.maxResults);
  713. AddToQuery(_Q,'pageToken',AQuery.pageToken);
  714. AddToQuery(_Q,'showCompleted',AQuery.showCompleted);
  715. AddToQuery(_Q,'showDeleted',AQuery.showDeleted);
  716. AddToQuery(_Q,'showHidden',AQuery.showHidden);
  717. AddToQuery(_Q,'updatedMin',AQuery.updatedMin);
  718. Result:=List(tasklist,_Q);
  719. end;
  720. Function TTasksResource.Move(task: string; tasklist: string; AQuery : string = '') : TTask;
  721. Const
  722. _HTTPMethod = 'POST';
  723. _Path = 'lists/{tasklist}/tasks/{task}/move';
  724. _Methodid = 'tasks.tasks.move';
  725. Var
  726. _P : String;
  727. begin
  728. _P:=SubstitutePath(_Path,['task',task,'tasklist',tasklist]);
  729. Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TTask) as TTask;
  730. end;
  731. Function TTasksResource.Move(task: string; tasklist: string; AQuery : TTasksmoveOptions) : TTask;
  732. Var
  733. _Q : String;
  734. begin
  735. _Q:='';
  736. AddToQuery(_Q,'parent',AQuery.parent);
  737. AddToQuery(_Q,'previous',AQuery.previous);
  738. Result:=Move(task,tasklist,_Q);
  739. end;
  740. Function TTasksResource.Patch(task: string; tasklist: string; aTask : TTask) : TTask;
  741. Const
  742. _HTTPMethod = 'PATCH';
  743. _Path = 'lists/{tasklist}/tasks/{task}';
  744. _Methodid = 'tasks.tasks.patch';
  745. Var
  746. _P : String;
  747. begin
  748. _P:=SubstitutePath(_Path,['task',task,'tasklist',tasklist]);
  749. Result:=ServiceCall(_HTTPMethod,_P,'',aTask,TTask) as TTask;
  750. end;
  751. Function TTasksResource.Update(task: string; tasklist: string; aTask : TTask) : TTask;
  752. Const
  753. _HTTPMethod = 'PUT';
  754. _Path = 'lists/{tasklist}/tasks/{task}';
  755. _Methodid = 'tasks.tasks.update';
  756. Var
  757. _P : String;
  758. begin
  759. _P:=SubstitutePath(_Path,['task',task,'tasklist',tasklist]);
  760. Result:=ServiceCall(_HTTPMethod,_P,'',aTask,TTask) as TTask;
  761. end;
  762. { --------------------------------------------------------------------
  763. TTasksAPI
  764. --------------------------------------------------------------------}
  765. Class Function TTasksAPI.APIName : String;
  766. begin
  767. Result:='tasks';
  768. end;
  769. Class Function TTasksAPI.APIVersion : String;
  770. begin
  771. Result:='v1';
  772. end;
  773. Class Function TTasksAPI.APIRevision : String;
  774. begin
  775. Result:='20141121';
  776. end;
  777. Class Function TTasksAPI.APIID : String;
  778. begin
  779. Result:='tasks:v1';
  780. end;
  781. Class Function TTasksAPI.APITitle : String;
  782. begin
  783. Result:='Tasks API';
  784. end;
  785. Class Function TTasksAPI.APIDescription : String;
  786. begin
  787. Result:='Lets you manage your tasks and task lists.';
  788. end;
  789. Class Function TTasksAPI.APIOwnerDomain : String;
  790. begin
  791. Result:='google.com';
  792. end;
  793. Class Function TTasksAPI.APIOwnerName : String;
  794. begin
  795. Result:='Google';
  796. end;
  797. Class Function TTasksAPI.APIIcon16 : String;
  798. begin
  799. Result:='https://www.google.com/images/icons/product/tasks-16.png';
  800. end;
  801. Class Function TTasksAPI.APIIcon32 : String;
  802. begin
  803. Result:='https://www.google.com/images/icons/product/tasks-32.png';
  804. end;
  805. Class Function TTasksAPI.APIdocumentationLink : String;
  806. begin
  807. Result:='https://developers.google.com/google-apps/tasks/firstapp';
  808. end;
  809. Class Function TTasksAPI.APIrootUrl : string;
  810. begin
  811. Result:='https://www.googleapis.com:443/';
  812. end;
  813. Class Function TTasksAPI.APIbasePath : string;
  814. begin
  815. Result:='/tasks/v1/';
  816. end;
  817. Class Function TTasksAPI.APIbaseURL : String;
  818. begin
  819. Result:='https://www.googleapis.com:443/tasks/v1/';
  820. end;
  821. Class Function TTasksAPI.APIProtocol : string;
  822. begin
  823. Result:='rest';
  824. end;
  825. Class Function TTasksAPI.APIservicePath : string;
  826. begin
  827. Result:='tasks/v1/';
  828. end;
  829. Class Function TTasksAPI.APIbatchPath : String;
  830. begin
  831. Result:='batch';
  832. end;
  833. Class Function TTasksAPI.APIAuthScopes : TScopeInfoArray;
  834. begin
  835. SetLength(Result,2);
  836. Result[0].Name:='https://www.googleapis.com/auth/tasks';
  837. Result[0].Description:='Manage your tasks';
  838. Result[1].Name:='https://www.googleapis.com/auth/tasks.readonly';
  839. Result[1].Description:='View your tasks';
  840. end;
  841. Class Function TTasksAPI.APINeedsAuth : Boolean;
  842. begin
  843. Result:=True;
  844. end;
  845. Class Procedure TTasksAPI.RegisterAPIResources;
  846. begin
  847. TTaskTypelinksItem.RegisterObject;
  848. TTask.RegisterObject;
  849. TTaskList.RegisterObject;
  850. TTaskLists.RegisterObject;
  851. TTasks.RegisterObject;
  852. end;
  853. Function TTasksAPI.GetTasklistsInstance : TTasklistsResource;
  854. begin
  855. if (FTasklistsInstance=Nil) then
  856. FTasklistsInstance:=CreateTasklistsResource;
  857. Result:=FTasklistsInstance;
  858. end;
  859. Function TTasksAPI.CreateTasklistsResource : TTasklistsResource;
  860. begin
  861. Result:=CreateTasklistsResource(Self);
  862. end;
  863. Function TTasksAPI.CreateTasklistsResource(AOwner : TComponent) : TTasklistsResource;
  864. begin
  865. Result:=TTasklistsResource.Create(AOwner);
  866. Result.API:=Self.API;
  867. end;
  868. Function TTasksAPI.GetTasksInstance : TTasksResource;
  869. begin
  870. if (FTasksInstance=Nil) then
  871. FTasksInstance:=CreateTasksResource;
  872. Result:=FTasksInstance;
  873. end;
  874. Function TTasksAPI.CreateTasksResource : TTasksResource;
  875. begin
  876. Result:=CreateTasksResource(Self);
  877. end;
  878. Function TTasksAPI.CreateTasksResource(AOwner : TComponent) : TTasksResource;
  879. begin
  880. Result:=TTasksResource.Create(AOwner);
  881. Result.API:=Self.API;
  882. end;
  883. initialization
  884. TTasksAPI.RegisterAPI;
  885. end.