googlecloudtrace.pp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777
  1. unit googlecloudtrace;
  2. {$MODE objfpc}
  3. {$H+}
  4. interface
  5. uses sysutils, classes, googleservice, restbase, googlebase;
  6. type
  7. //Top-level schema types
  8. TListTracesResponse = Class;
  9. TTrace = Class;
  10. TTraceSpan = Class;
  11. TTraces = Class;
  12. TEmpty = Class;
  13. TListTracesResponseArray = Array of TListTracesResponse;
  14. TTraceArray = Array of TTrace;
  15. TTraceSpanArray = Array of TTraceSpan;
  16. TTracesArray = Array of TTraces;
  17. TEmptyArray = Array of TEmpty;
  18. //Anonymous types, using auto-generated names
  19. TTraceSpanTypelabels = Class;
  20. TListTracesResponseTypetracesArray = Array of TTrace;
  21. TTraceTypespansArray = Array of TTraceSpan;
  22. TTracesTypetracesArray = Array of TTrace;
  23. { --------------------------------------------------------------------
  24. TListTracesResponse
  25. --------------------------------------------------------------------}
  26. TListTracesResponse = Class(TGoogleBaseObject)
  27. Private
  28. Ftraces : TListTracesResponseTypetracesArray;
  29. FnextPageToken : String;
  30. Protected
  31. //Property setters
  32. Procedure Settraces(AIndex : Integer; const AValue : TListTracesResponseTypetracesArray); virtual;
  33. Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
  34. //2.6.4. bug workaround
  35. {$IFDEF VER2_6}
  36. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  37. {$ENDIF VER2_6}
  38. Public
  39. Published
  40. Property traces : TListTracesResponseTypetracesArray Index 0 Read Ftraces Write Settraces;
  41. Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
  42. end;
  43. TListTracesResponseClass = Class of TListTracesResponse;
  44. { --------------------------------------------------------------------
  45. TTrace
  46. --------------------------------------------------------------------}
  47. TTrace = Class(TGoogleBaseObject)
  48. Private
  49. FprojectId : String;
  50. FtraceId : String;
  51. Fspans : TTraceTypespansArray;
  52. Protected
  53. //Property setters
  54. Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual;
  55. Procedure SettraceId(AIndex : Integer; const AValue : String); virtual;
  56. Procedure Setspans(AIndex : Integer; const AValue : TTraceTypespansArray); virtual;
  57. //2.6.4. bug workaround
  58. {$IFDEF VER2_6}
  59. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  60. {$ENDIF VER2_6}
  61. Public
  62. Published
  63. Property projectId : String Index 0 Read FprojectId Write SetprojectId;
  64. Property traceId : String Index 8 Read FtraceId Write SettraceId;
  65. Property spans : TTraceTypespansArray Index 16 Read Fspans Write Setspans;
  66. end;
  67. TTraceClass = Class of TTrace;
  68. { --------------------------------------------------------------------
  69. TTraceSpanTypelabels
  70. --------------------------------------------------------------------}
  71. TTraceSpanTypelabels = Class(TGoogleBaseObject)
  72. Private
  73. Protected
  74. //Property setters
  75. Public
  76. Class Function AllowAdditionalProperties : Boolean; override;
  77. Published
  78. end;
  79. TTraceSpanTypelabelsClass = Class of TTraceSpanTypelabels;
  80. { --------------------------------------------------------------------
  81. TTraceSpan
  82. --------------------------------------------------------------------}
  83. TTraceSpan = Class(TGoogleBaseObject)
  84. Private
  85. FspanId : String;
  86. Fkind : String;
  87. Fname : String;
  88. FstartTime : String;
  89. FendTime : String;
  90. FparentSpanId : String;
  91. Flabels : TTraceSpanTypelabels;
  92. Protected
  93. //Property setters
  94. Procedure SetspanId(AIndex : Integer; const AValue : String); virtual;
  95. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  96. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  97. Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
  98. Procedure SetendTime(AIndex : Integer; const AValue : String); virtual;
  99. Procedure SetparentSpanId(AIndex : Integer; const AValue : String); virtual;
  100. Procedure Setlabels(AIndex : Integer; const AValue : TTraceSpanTypelabels); virtual;
  101. Public
  102. Published
  103. Property spanId : String Index 0 Read FspanId Write SetspanId;
  104. Property kind : String Index 8 Read Fkind Write Setkind;
  105. Property name : String Index 16 Read Fname Write Setname;
  106. Property startTime : String Index 24 Read FstartTime Write SetstartTime;
  107. Property endTime : String Index 32 Read FendTime Write SetendTime;
  108. Property parentSpanId : String Index 40 Read FparentSpanId Write SetparentSpanId;
  109. Property labels : TTraceSpanTypelabels Index 48 Read Flabels Write Setlabels;
  110. end;
  111. TTraceSpanClass = Class of TTraceSpan;
  112. { --------------------------------------------------------------------
  113. TTraces
  114. --------------------------------------------------------------------}
  115. TTraces = Class(TGoogleBaseObject)
  116. Private
  117. Ftraces : TTracesTypetracesArray;
  118. Protected
  119. //Property setters
  120. Procedure Settraces(AIndex : Integer; const AValue : TTracesTypetracesArray); virtual;
  121. //2.6.4. bug workaround
  122. {$IFDEF VER2_6}
  123. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  124. {$ENDIF VER2_6}
  125. Public
  126. Published
  127. Property traces : TTracesTypetracesArray Index 0 Read Ftraces Write Settraces;
  128. end;
  129. TTracesClass = Class of TTraces;
  130. { --------------------------------------------------------------------
  131. TEmpty
  132. --------------------------------------------------------------------}
  133. TEmpty = Class(TGoogleBaseObject)
  134. Private
  135. Protected
  136. //Property setters
  137. Public
  138. Published
  139. end;
  140. TEmptyClass = Class of TEmpty;
  141. { --------------------------------------------------------------------
  142. TProjectsTracesResource
  143. --------------------------------------------------------------------}
  144. //Optional query Options for TProjectsTracesResource, method List
  145. TProjectsTracesListOptions = Record
  146. view : String;
  147. pageSize : integer;
  148. pageToken : String;
  149. startTime : String;
  150. endTime : String;
  151. filter : String;
  152. orderBy : String;
  153. end;
  154. TProjectsTracesResource = Class(TGoogleResource)
  155. Public
  156. Class Function ResourceName : String; override;
  157. Class Function DefaultAPI : TGoogleAPIClass; override;
  158. Function List(projectId: string; AQuery : string = '') : TListTracesResponse;
  159. Function List(projectId: string; AQuery : TProjectsTraceslistOptions) : TListTracesResponse;
  160. Function Get(projectId: string; traceId: string) : TTrace;
  161. end;
  162. { --------------------------------------------------------------------
  163. TProjectsResource
  164. --------------------------------------------------------------------}
  165. TProjectsResource = Class(TGoogleResource)
  166. Private
  167. FTracesInstance : TProjectsTracesResource;
  168. Function GetTracesInstance : TProjectsTracesResource;virtual;
  169. Public
  170. Class Function ResourceName : String; override;
  171. Class Function DefaultAPI : TGoogleAPIClass; override;
  172. Function PatchTraces(projectId: string; aTraces : TTraces) : TEmpty;
  173. Function CreateTracesResource(AOwner : TComponent) : TProjectsTracesResource;virtual;overload;
  174. Function CreateTracesResource : TProjectsTracesResource;virtual;overload;
  175. Property TracesResource : TProjectsTracesResource Read GetTracesInstance;
  176. end;
  177. { --------------------------------------------------------------------
  178. TCloudtraceAPI
  179. --------------------------------------------------------------------}
  180. TCloudtraceAPI = Class(TGoogleAPI)
  181. Private
  182. FProjectsTracesInstance : TProjectsTracesResource;
  183. FProjectsInstance : TProjectsResource;
  184. Function GetProjectsTracesInstance : TProjectsTracesResource;virtual;
  185. Function GetProjectsInstance : TProjectsResource;virtual;
  186. Public
  187. //Override class functions with API info
  188. Class Function APIName : String; override;
  189. Class Function APIVersion : String; override;
  190. Class Function APIRevision : String; override;
  191. Class Function APIID : String; override;
  192. Class Function APITitle : String; override;
  193. Class Function APIDescription : String; override;
  194. Class Function APIOwnerDomain : String; override;
  195. Class Function APIOwnerName : String; override;
  196. Class Function APIIcon16 : String; override;
  197. Class Function APIIcon32 : String; override;
  198. Class Function APIdocumentationLink : String; override;
  199. Class Function APIrootUrl : string; override;
  200. Class Function APIbasePath : string;override;
  201. Class Function APIbaseURL : String;override;
  202. Class Function APIProtocol : string;override;
  203. Class Function APIservicePath : string;override;
  204. Class Function APIbatchPath : String;override;
  205. Class Function APIAuthScopes : TScopeInfoArray;override;
  206. Class Function APINeedsAuth : Boolean;override;
  207. Class Procedure RegisterAPIResources; override;
  208. //Add create function for resources
  209. Function CreateProjectsTracesResource(AOwner : TComponent) : TProjectsTracesResource;virtual;overload;
  210. Function CreateProjectsTracesResource : TProjectsTracesResource;virtual;overload;
  211. Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
  212. Function CreateProjectsResource : TProjectsResource;virtual;overload;
  213. //Add default on-demand instances for resources
  214. Property ProjectsTracesResource : TProjectsTracesResource Read GetProjectsTracesInstance;
  215. Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
  216. end;
  217. implementation
  218. { --------------------------------------------------------------------
  219. TListTracesResponse
  220. --------------------------------------------------------------------}
  221. Procedure TListTracesResponse.Settraces(AIndex : Integer; const AValue : TListTracesResponseTypetracesArray);
  222. begin
  223. If (Ftraces=AValue) then exit;
  224. Ftraces:=AValue;
  225. MarkPropertyChanged(AIndex);
  226. end;
  227. Procedure TListTracesResponse.SetnextPageToken(AIndex : Integer; const AValue : String);
  228. begin
  229. If (FnextPageToken=AValue) then exit;
  230. FnextPageToken:=AValue;
  231. MarkPropertyChanged(AIndex);
  232. end;
  233. //2.6.4. bug workaround
  234. {$IFDEF VER2_6}
  235. Procedure TListTracesResponse.SetArrayLength(Const AName : String; ALength : Longint);
  236. begin
  237. Case AName of
  238. 'traces' : SetLength(Ftraces,ALength);
  239. else
  240. Inherited SetArrayLength(AName,ALength);
  241. end;
  242. end;
  243. {$ENDIF VER2_6}
  244. { --------------------------------------------------------------------
  245. TTrace
  246. --------------------------------------------------------------------}
  247. Procedure TTrace.SetprojectId(AIndex : Integer; const AValue : String);
  248. begin
  249. If (FprojectId=AValue) then exit;
  250. FprojectId:=AValue;
  251. MarkPropertyChanged(AIndex);
  252. end;
  253. Procedure TTrace.SettraceId(AIndex : Integer; const AValue : String);
  254. begin
  255. If (FtraceId=AValue) then exit;
  256. FtraceId:=AValue;
  257. MarkPropertyChanged(AIndex);
  258. end;
  259. Procedure TTrace.Setspans(AIndex : Integer; const AValue : TTraceTypespansArray);
  260. begin
  261. If (Fspans=AValue) then exit;
  262. Fspans:=AValue;
  263. MarkPropertyChanged(AIndex);
  264. end;
  265. //2.6.4. bug workaround
  266. {$IFDEF VER2_6}
  267. Procedure TTrace.SetArrayLength(Const AName : String; ALength : Longint);
  268. begin
  269. Case AName of
  270. 'spans' : SetLength(Fspans,ALength);
  271. else
  272. Inherited SetArrayLength(AName,ALength);
  273. end;
  274. end;
  275. {$ENDIF VER2_6}
  276. { --------------------------------------------------------------------
  277. TTraceSpanTypelabels
  278. --------------------------------------------------------------------}
  279. Class Function TTraceSpanTypelabels.AllowAdditionalProperties : Boolean;
  280. begin
  281. Result:=True;
  282. end;
  283. { --------------------------------------------------------------------
  284. TTraceSpan
  285. --------------------------------------------------------------------}
  286. Procedure TTraceSpan.SetspanId(AIndex : Integer; const AValue : String);
  287. begin
  288. If (FspanId=AValue) then exit;
  289. FspanId:=AValue;
  290. MarkPropertyChanged(AIndex);
  291. end;
  292. Procedure TTraceSpan.Setkind(AIndex : Integer; const AValue : String);
  293. begin
  294. If (Fkind=AValue) then exit;
  295. Fkind:=AValue;
  296. MarkPropertyChanged(AIndex);
  297. end;
  298. Procedure TTraceSpan.Setname(AIndex : Integer; const AValue : String);
  299. begin
  300. If (Fname=AValue) then exit;
  301. Fname:=AValue;
  302. MarkPropertyChanged(AIndex);
  303. end;
  304. Procedure TTraceSpan.SetstartTime(AIndex : Integer; const AValue : String);
  305. begin
  306. If (FstartTime=AValue) then exit;
  307. FstartTime:=AValue;
  308. MarkPropertyChanged(AIndex);
  309. end;
  310. Procedure TTraceSpan.SetendTime(AIndex : Integer; const AValue : String);
  311. begin
  312. If (FendTime=AValue) then exit;
  313. FendTime:=AValue;
  314. MarkPropertyChanged(AIndex);
  315. end;
  316. Procedure TTraceSpan.SetparentSpanId(AIndex : Integer; const AValue : String);
  317. begin
  318. If (FparentSpanId=AValue) then exit;
  319. FparentSpanId:=AValue;
  320. MarkPropertyChanged(AIndex);
  321. end;
  322. Procedure TTraceSpan.Setlabels(AIndex : Integer; const AValue : TTraceSpanTypelabels);
  323. begin
  324. If (Flabels=AValue) then exit;
  325. Flabels:=AValue;
  326. MarkPropertyChanged(AIndex);
  327. end;
  328. { --------------------------------------------------------------------
  329. TTraces
  330. --------------------------------------------------------------------}
  331. Procedure TTraces.Settraces(AIndex : Integer; const AValue : TTracesTypetracesArray);
  332. begin
  333. If (Ftraces=AValue) then exit;
  334. Ftraces:=AValue;
  335. MarkPropertyChanged(AIndex);
  336. end;
  337. //2.6.4. bug workaround
  338. {$IFDEF VER2_6}
  339. Procedure TTraces.SetArrayLength(Const AName : String; ALength : Longint);
  340. begin
  341. Case AName of
  342. 'traces' : SetLength(Ftraces,ALength);
  343. else
  344. Inherited SetArrayLength(AName,ALength);
  345. end;
  346. end;
  347. {$ENDIF VER2_6}
  348. { --------------------------------------------------------------------
  349. TEmpty
  350. --------------------------------------------------------------------}
  351. { --------------------------------------------------------------------
  352. TProjectsTracesResource
  353. --------------------------------------------------------------------}
  354. Class Function TProjectsTracesResource.ResourceName : String;
  355. begin
  356. Result:='traces';
  357. end;
  358. Class Function TProjectsTracesResource.DefaultAPI : TGoogleAPIClass;
  359. begin
  360. Result:=TcloudtraceAPI;
  361. end;
  362. Function TProjectsTracesResource.List(projectId: string; AQuery : string = '') : TListTracesResponse;
  363. Const
  364. _HTTPMethod = 'GET';
  365. _Path = 'v1/projects/{projectId}/traces';
  366. _Methodid = 'cloudtrace.projects.traces.list';
  367. Var
  368. _P : String;
  369. begin
  370. _P:=SubstitutePath(_Path,['projectId',projectId]);
  371. Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListTracesResponse) as TListTracesResponse;
  372. end;
  373. Function TProjectsTracesResource.List(projectId: string; AQuery : TProjectsTraceslistOptions) : TListTracesResponse;
  374. Var
  375. _Q : String;
  376. begin
  377. _Q:='';
  378. AddToQuery(_Q,'view',AQuery.view);
  379. AddToQuery(_Q,'pageSize',AQuery.pageSize);
  380. AddToQuery(_Q,'pageToken',AQuery.pageToken);
  381. AddToQuery(_Q,'startTime',AQuery.startTime);
  382. AddToQuery(_Q,'endTime',AQuery.endTime);
  383. AddToQuery(_Q,'filter',AQuery.filter);
  384. AddToQuery(_Q,'orderBy',AQuery.orderBy);
  385. Result:=List(projectId,_Q);
  386. end;
  387. Function TProjectsTracesResource.Get(projectId: string; traceId: string) : TTrace;
  388. Const
  389. _HTTPMethod = 'GET';
  390. _Path = 'v1/projects/{projectId}/traces/{traceId}';
  391. _Methodid = 'cloudtrace.projects.traces.get';
  392. Var
  393. _P : String;
  394. begin
  395. _P:=SubstitutePath(_Path,['projectId',projectId,'traceId',traceId]);
  396. Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TTrace) as TTrace;
  397. end;
  398. { --------------------------------------------------------------------
  399. TProjectsResource
  400. --------------------------------------------------------------------}
  401. Class Function TProjectsResource.ResourceName : String;
  402. begin
  403. Result:='projects';
  404. end;
  405. Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
  406. begin
  407. Result:=TcloudtraceAPI;
  408. end;
  409. Function TProjectsResource.PatchTraces(projectId: string; aTraces : TTraces) : TEmpty;
  410. Const
  411. _HTTPMethod = 'PATCH';
  412. _Path = 'v1/projects/{projectId}/traces';
  413. _Methodid = 'cloudtrace.projects.patchTraces';
  414. Var
  415. _P : String;
  416. begin
  417. _P:=SubstitutePath(_Path,['projectId',projectId]);
  418. Result:=ServiceCall(_HTTPMethod,_P,'',aTraces,TEmpty) as TEmpty;
  419. end;
  420. Function TProjectsResource.GetTracesInstance : TProjectsTracesResource;
  421. begin
  422. if (FTracesInstance=Nil) then
  423. FTracesInstance:=CreateTracesResource;
  424. Result:=FTracesInstance;
  425. end;
  426. Function TProjectsResource.CreateTracesResource : TProjectsTracesResource;
  427. begin
  428. Result:=CreateTracesResource(Self);
  429. end;
  430. Function TProjectsResource.CreateTracesResource(AOwner : TComponent) : TProjectsTracesResource;
  431. begin
  432. Result:=TProjectsTracesResource.Create(AOwner);
  433. Result.API:=Self.API;
  434. end;
  435. { --------------------------------------------------------------------
  436. TCloudtraceAPI
  437. --------------------------------------------------------------------}
  438. Class Function TCloudtraceAPI.APIName : String;
  439. begin
  440. Result:='cloudtrace';
  441. end;
  442. Class Function TCloudtraceAPI.APIVersion : String;
  443. begin
  444. Result:='v1';
  445. end;
  446. Class Function TCloudtraceAPI.APIRevision : String;
  447. begin
  448. Result:='20160518';
  449. end;
  450. Class Function TCloudtraceAPI.APIID : String;
  451. begin
  452. Result:='cloudtrace:v1';
  453. end;
  454. Class Function TCloudtraceAPI.APITitle : String;
  455. begin
  456. Result:='Google Cloud Trace API';
  457. end;
  458. Class Function TCloudtraceAPI.APIDescription : String;
  459. begin
  460. Result:='Send and retrieve trace data from Google Cloud Trace. Data is generated and available by default for all App Engine applications. Data from other applications can be written to Cloud Trace for display, reporting, and analysis.';
  461. end;
  462. Class Function TCloudtraceAPI.APIOwnerDomain : String;
  463. begin
  464. Result:='google.com';
  465. end;
  466. Class Function TCloudtraceAPI.APIOwnerName : String;
  467. begin
  468. Result:='Google';
  469. end;
  470. Class Function TCloudtraceAPI.APIIcon16 : String;
  471. begin
  472. Result:='http://www.google.com/images/icons/product/search-16.gif';
  473. end;
  474. Class Function TCloudtraceAPI.APIIcon32 : String;
  475. begin
  476. Result:='http://www.google.com/images/icons/product/search-32.gif';
  477. end;
  478. Class Function TCloudtraceAPI.APIdocumentationLink : String;
  479. begin
  480. Result:='https://cloud.google.com/tools/cloud-trace';
  481. end;
  482. Class Function TCloudtraceAPI.APIrootUrl : string;
  483. begin
  484. Result:='https://cloudtrace.googleapis.com/';
  485. end;
  486. Class Function TCloudtraceAPI.APIbasePath : string;
  487. begin
  488. Result:='';
  489. end;
  490. Class Function TCloudtraceAPI.APIbaseURL : String;
  491. begin
  492. Result:='https://cloudtrace.googleapis.com/';
  493. end;
  494. Class Function TCloudtraceAPI.APIProtocol : string;
  495. begin
  496. Result:='rest';
  497. end;
  498. Class Function TCloudtraceAPI.APIservicePath : string;
  499. begin
  500. Result:='';
  501. end;
  502. Class Function TCloudtraceAPI.APIbatchPath : String;
  503. begin
  504. Result:='batch';
  505. end;
  506. Class Function TCloudtraceAPI.APIAuthScopes : TScopeInfoArray;
  507. begin
  508. SetLength(Result,3);
  509. Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
  510. Result[0].Description:='View and manage your data across Google Cloud Platform services';
  511. Result[1].Name:='https://www.googleapis.com/auth/trace.append';
  512. Result[1].Description:='Write Trace data for a project or application';
  513. Result[2].Name:='https://www.googleapis.com/auth/trace.readonly';
  514. Result[2].Description:='Read Trace data for a project or application';
  515. end;
  516. Class Function TCloudtraceAPI.APINeedsAuth : Boolean;
  517. begin
  518. Result:=True;
  519. end;
  520. Class Procedure TCloudtraceAPI.RegisterAPIResources;
  521. begin
  522. TListTracesResponse.RegisterObject;
  523. TTrace.RegisterObject;
  524. TTraceSpanTypelabels.RegisterObject;
  525. TTraceSpan.RegisterObject;
  526. TTraces.RegisterObject;
  527. TEmpty.RegisterObject;
  528. end;
  529. Function TCloudtraceAPI.GetProjectsTracesInstance : TProjectsTracesResource;
  530. begin
  531. if (FProjectsTracesInstance=Nil) then
  532. FProjectsTracesInstance:=CreateProjectsTracesResource;
  533. Result:=FProjectsTracesInstance;
  534. end;
  535. Function TCloudtraceAPI.CreateProjectsTracesResource : TProjectsTracesResource;
  536. begin
  537. Result:=CreateProjectsTracesResource(Self);
  538. end;
  539. Function TCloudtraceAPI.CreateProjectsTracesResource(AOwner : TComponent) : TProjectsTracesResource;
  540. begin
  541. Result:=TProjectsTracesResource.Create(AOwner);
  542. Result.API:=Self.API;
  543. end;
  544. Function TCloudtraceAPI.GetProjectsInstance : TProjectsResource;
  545. begin
  546. if (FProjectsInstance=Nil) then
  547. FProjectsInstance:=CreateProjectsResource;
  548. Result:=FProjectsInstance;
  549. end;
  550. Function TCloudtraceAPI.CreateProjectsResource : TProjectsResource;
  551. begin
  552. Result:=CreateProjectsResource(Self);
  553. end;
  554. Function TCloudtraceAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
  555. begin
  556. Result:=TProjectsResource.Create(AOwner);
  557. Result.API:=Self.API;
  558. end;
  559. initialization
  560. TCloudtraceAPI.RegisterAPI;
  561. end.