googletasks.pp 30 KB

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