googledns.pp 39 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451
  1. unit googledns;
  2. {$MODE objfpc}
  3. {$H+}
  4. interface
  5. uses sysutils, classes, googleservice, restbase, googlebase;
  6. type
  7. //Top-level schema types
  8. TChange = Class;
  9. TChangesListResponse = Class;
  10. TManagedZone = Class;
  11. TManagedZonesListResponse = Class;
  12. TProject = Class;
  13. TQuota = Class;
  14. TResourceRecordSet = Class;
  15. TResourceRecordSetsListResponse = Class;
  16. TChangeArray = Array of TChange;
  17. TChangesListResponseArray = Array of TChangesListResponse;
  18. TManagedZoneArray = Array of TManagedZone;
  19. TManagedZonesListResponseArray = Array of TManagedZonesListResponse;
  20. TProjectArray = Array of TProject;
  21. TQuotaArray = Array of TQuota;
  22. TResourceRecordSetArray = Array of TResourceRecordSet;
  23. TResourceRecordSetsListResponseArray = Array of TResourceRecordSetsListResponse;
  24. //Anonymous types, using auto-generated names
  25. TChangeTypeadditionsArray = Array of TResourceRecordSet;
  26. TChangeTypedeletionsArray = Array of TResourceRecordSet;
  27. TChangesListResponseTypechangesArray = Array of TChange;
  28. TManagedZonesListResponseTypemanagedZonesArray = Array of TManagedZone;
  29. TResourceRecordSetsListResponseTyperrsetsArray = Array of TResourceRecordSet;
  30. { --------------------------------------------------------------------
  31. TChange
  32. --------------------------------------------------------------------}
  33. TChange = Class(TGoogleBaseObject)
  34. Private
  35. Fadditions : TChangeTypeadditionsArray;
  36. Fdeletions : TChangeTypedeletionsArray;
  37. Fid : String;
  38. Fkind : String;
  39. FstartTime : String;
  40. Fstatus : String;
  41. Protected
  42. //Property setters
  43. Procedure Setadditions(AIndex : Integer; const AValue : TChangeTypeadditionsArray); virtual;
  44. Procedure Setdeletions(AIndex : Integer; const AValue : TChangeTypedeletionsArray); virtual;
  45. Procedure Setid(AIndex : Integer; const AValue : String); virtual;
  46. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  47. Procedure SetstartTime(AIndex : Integer; const AValue : String); virtual;
  48. Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
  49. //2.6.4. bug workaround
  50. {$IFDEF VER2_6}
  51. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  52. {$ENDIF VER2_6}
  53. Public
  54. Published
  55. Property additions : TChangeTypeadditionsArray Index 0 Read Fadditions Write Setadditions;
  56. Property deletions : TChangeTypedeletionsArray Index 8 Read Fdeletions Write Setdeletions;
  57. Property id : String Index 16 Read Fid Write Setid;
  58. Property kind : String Index 24 Read Fkind Write Setkind;
  59. Property startTime : String Index 32 Read FstartTime Write SetstartTime;
  60. Property status : String Index 40 Read Fstatus Write Setstatus;
  61. end;
  62. TChangeClass = Class of TChange;
  63. { --------------------------------------------------------------------
  64. TChangesListResponse
  65. --------------------------------------------------------------------}
  66. TChangesListResponse = Class(TGoogleBaseObject)
  67. Private
  68. Fchanges : TChangesListResponseTypechangesArray;
  69. Fkind : String;
  70. FnextPageToken : String;
  71. Protected
  72. //Property setters
  73. Procedure Setchanges(AIndex : Integer; const AValue : TChangesListResponseTypechangesArray); virtual;
  74. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  75. Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
  76. //2.6.4. bug workaround
  77. {$IFDEF VER2_6}
  78. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  79. {$ENDIF VER2_6}
  80. Public
  81. Published
  82. Property changes : TChangesListResponseTypechangesArray Index 0 Read Fchanges Write Setchanges;
  83. Property kind : String Index 8 Read Fkind Write Setkind;
  84. Property nextPageToken : String Index 16 Read FnextPageToken Write SetnextPageToken;
  85. end;
  86. TChangesListResponseClass = Class of TChangesListResponse;
  87. { --------------------------------------------------------------------
  88. TManagedZone
  89. --------------------------------------------------------------------}
  90. TManagedZone = Class(TGoogleBaseObject)
  91. Private
  92. FcreationTime : String;
  93. Fdescription : String;
  94. FdnsName : String;
  95. Fid : String;
  96. Fkind : String;
  97. Fname : String;
  98. FnameServerSet : String;
  99. FnameServers : TStringArray;
  100. Protected
  101. //Property setters
  102. Procedure SetcreationTime(AIndex : Integer; const AValue : String); virtual;
  103. Procedure Setdescription(AIndex : Integer; const AValue : String); virtual;
  104. Procedure SetdnsName(AIndex : Integer; const AValue : String); virtual;
  105. Procedure Setid(AIndex : Integer; const AValue : String); virtual;
  106. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  107. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  108. Procedure SetnameServerSet(AIndex : Integer; const AValue : String); virtual;
  109. Procedure SetnameServers(AIndex : Integer; const AValue : TStringArray); virtual;
  110. //2.6.4. bug workaround
  111. {$IFDEF VER2_6}
  112. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  113. {$ENDIF VER2_6}
  114. Public
  115. Published
  116. Property creationTime : String Index 0 Read FcreationTime Write SetcreationTime;
  117. Property description : String Index 8 Read Fdescription Write Setdescription;
  118. Property dnsName : String Index 16 Read FdnsName Write SetdnsName;
  119. Property id : String Index 24 Read Fid Write Setid;
  120. Property kind : String Index 32 Read Fkind Write Setkind;
  121. Property name : String Index 40 Read Fname Write Setname;
  122. Property nameServerSet : String Index 48 Read FnameServerSet Write SetnameServerSet;
  123. Property nameServers : TStringArray Index 56 Read FnameServers Write SetnameServers;
  124. end;
  125. TManagedZoneClass = Class of TManagedZone;
  126. { --------------------------------------------------------------------
  127. TManagedZonesListResponse
  128. --------------------------------------------------------------------}
  129. TManagedZonesListResponse = Class(TGoogleBaseObject)
  130. Private
  131. Fkind : String;
  132. FmanagedZones : TManagedZonesListResponseTypemanagedZonesArray;
  133. FnextPageToken : String;
  134. Protected
  135. //Property setters
  136. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  137. Procedure SetmanagedZones(AIndex : Integer; const AValue : TManagedZonesListResponseTypemanagedZonesArray); virtual;
  138. Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
  139. //2.6.4. bug workaround
  140. {$IFDEF VER2_6}
  141. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  142. {$ENDIF VER2_6}
  143. Public
  144. Published
  145. Property kind : String Index 0 Read Fkind Write Setkind;
  146. Property managedZones : TManagedZonesListResponseTypemanagedZonesArray Index 8 Read FmanagedZones Write SetmanagedZones;
  147. Property nextPageToken : String Index 16 Read FnextPageToken Write SetnextPageToken;
  148. end;
  149. TManagedZonesListResponseClass = Class of TManagedZonesListResponse;
  150. { --------------------------------------------------------------------
  151. TProject
  152. --------------------------------------------------------------------}
  153. TProject = Class(TGoogleBaseObject)
  154. Private
  155. Fid : String;
  156. Fkind : String;
  157. Fnumber : String;
  158. Fquota : TQuota;
  159. Protected
  160. //Property setters
  161. Procedure Setid(AIndex : Integer; const AValue : String); virtual;
  162. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  163. Procedure Setnumber(AIndex : Integer; const AValue : String); virtual;
  164. Procedure Setquota(AIndex : Integer; const AValue : TQuota); virtual;
  165. Public
  166. Published
  167. Property id : String Index 0 Read Fid Write Setid;
  168. Property kind : String Index 8 Read Fkind Write Setkind;
  169. Property number : String Index 16 Read Fnumber Write Setnumber;
  170. Property quota : TQuota Index 24 Read Fquota Write Setquota;
  171. end;
  172. TProjectClass = Class of TProject;
  173. { --------------------------------------------------------------------
  174. TQuota
  175. --------------------------------------------------------------------}
  176. TQuota = Class(TGoogleBaseObject)
  177. Private
  178. Fkind : String;
  179. FmanagedZones : integer;
  180. FresourceRecordsPerRrset : integer;
  181. FrrsetAdditionsPerChange : integer;
  182. FrrsetDeletionsPerChange : integer;
  183. FrrsetsPerManagedZone : integer;
  184. FtotalRrdataSizePerChange : integer;
  185. Protected
  186. //Property setters
  187. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  188. Procedure SetmanagedZones(AIndex : Integer; const AValue : integer); virtual;
  189. Procedure SetresourceRecordsPerRrset(AIndex : Integer; const AValue : integer); virtual;
  190. Procedure SetrrsetAdditionsPerChange(AIndex : Integer; const AValue : integer); virtual;
  191. Procedure SetrrsetDeletionsPerChange(AIndex : Integer; const AValue : integer); virtual;
  192. Procedure SetrrsetsPerManagedZone(AIndex : Integer; const AValue : integer); virtual;
  193. Procedure SettotalRrdataSizePerChange(AIndex : Integer; const AValue : integer); virtual;
  194. Public
  195. Published
  196. Property kind : String Index 0 Read Fkind Write Setkind;
  197. Property managedZones : integer Index 8 Read FmanagedZones Write SetmanagedZones;
  198. Property resourceRecordsPerRrset : integer Index 16 Read FresourceRecordsPerRrset Write SetresourceRecordsPerRrset;
  199. Property rrsetAdditionsPerChange : integer Index 24 Read FrrsetAdditionsPerChange Write SetrrsetAdditionsPerChange;
  200. Property rrsetDeletionsPerChange : integer Index 32 Read FrrsetDeletionsPerChange Write SetrrsetDeletionsPerChange;
  201. Property rrsetsPerManagedZone : integer Index 40 Read FrrsetsPerManagedZone Write SetrrsetsPerManagedZone;
  202. Property totalRrdataSizePerChange : integer Index 48 Read FtotalRrdataSizePerChange Write SettotalRrdataSizePerChange;
  203. end;
  204. TQuotaClass = Class of TQuota;
  205. { --------------------------------------------------------------------
  206. TResourceRecordSet
  207. --------------------------------------------------------------------}
  208. TResourceRecordSet = Class(TGoogleBaseObject)
  209. Private
  210. Fkind : String;
  211. Fname : String;
  212. Frrdatas : TStringArray;
  213. Fttl : integer;
  214. F_type : String;
  215. Protected
  216. Class Function ExportPropertyName(Const AName : String) : string; override;
  217. //Property setters
  218. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  219. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  220. Procedure Setrrdatas(AIndex : Integer; const AValue : TStringArray); virtual;
  221. Procedure Setttl(AIndex : Integer; const AValue : integer); virtual;
  222. Procedure Set_type(AIndex : Integer; const AValue : String); virtual;
  223. //2.6.4. bug workaround
  224. {$IFDEF VER2_6}
  225. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  226. {$ENDIF VER2_6}
  227. Public
  228. Published
  229. Property kind : String Index 0 Read Fkind Write Setkind;
  230. Property name : String Index 8 Read Fname Write Setname;
  231. Property rrdatas : TStringArray Index 16 Read Frrdatas Write Setrrdatas;
  232. Property ttl : integer Index 24 Read Fttl Write Setttl;
  233. Property _type : String Index 32 Read F_type Write Set_type;
  234. end;
  235. TResourceRecordSetClass = Class of TResourceRecordSet;
  236. { --------------------------------------------------------------------
  237. TResourceRecordSetsListResponse
  238. --------------------------------------------------------------------}
  239. TResourceRecordSetsListResponse = Class(TGoogleBaseObject)
  240. Private
  241. Fkind : String;
  242. FnextPageToken : String;
  243. Frrsets : TResourceRecordSetsListResponseTyperrsetsArray;
  244. Protected
  245. //Property setters
  246. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  247. Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
  248. Procedure Setrrsets(AIndex : Integer; const AValue : TResourceRecordSetsListResponseTyperrsetsArray); virtual;
  249. //2.6.4. bug workaround
  250. {$IFDEF VER2_6}
  251. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  252. {$ENDIF VER2_6}
  253. Public
  254. Published
  255. Property kind : String Index 0 Read Fkind Write Setkind;
  256. Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken;
  257. Property rrsets : TResourceRecordSetsListResponseTyperrsetsArray Index 16 Read Frrsets Write Setrrsets;
  258. end;
  259. TResourceRecordSetsListResponseClass = Class of TResourceRecordSetsListResponse;
  260. { --------------------------------------------------------------------
  261. TChangesResource
  262. --------------------------------------------------------------------}
  263. //Optional query Options for TChangesResource, method List
  264. TChangesListOptions = Record
  265. maxResults : integer;
  266. pageToken : String;
  267. sortBy : String;
  268. sortOrder : String;
  269. end;
  270. TChangesResource = Class(TGoogleResource)
  271. Public
  272. Class Function ResourceName : String; override;
  273. Class Function DefaultAPI : TGoogleAPIClass; override;
  274. Function Create(managedZone: string; project: string; aChange : TChange) : TChange;overload;
  275. Function Get(changeId: string; managedZone: string; project: string) : TChange;
  276. Function List(managedZone: string; project: string; AQuery : string = '') : TChangesListResponse;
  277. Function List(managedZone: string; project: string; AQuery : TChangeslistOptions) : TChangesListResponse;
  278. end;
  279. { --------------------------------------------------------------------
  280. TManagedZonesResource
  281. --------------------------------------------------------------------}
  282. //Optional query Options for TManagedZonesResource, method List
  283. TManagedZonesListOptions = Record
  284. dnsName : String;
  285. maxResults : integer;
  286. pageToken : String;
  287. end;
  288. TManagedZonesResource = Class(TGoogleResource)
  289. Public
  290. Class Function ResourceName : String; override;
  291. Class Function DefaultAPI : TGoogleAPIClass; override;
  292. Function Create(project: string; aManagedZone : TManagedZone) : TManagedZone;overload;
  293. Procedure Delete(managedZone: string; project: string);
  294. Function Get(managedZone: string; project: string) : TManagedZone;
  295. Function List(project: string; AQuery : string = '') : TManagedZonesListResponse;
  296. Function List(project: string; AQuery : TManagedZoneslistOptions) : TManagedZonesListResponse;
  297. end;
  298. { --------------------------------------------------------------------
  299. TProjectsResource
  300. --------------------------------------------------------------------}
  301. TProjectsResource = Class(TGoogleResource)
  302. Public
  303. Class Function ResourceName : String; override;
  304. Class Function DefaultAPI : TGoogleAPIClass; override;
  305. Function Get(project: string) : TProject;
  306. end;
  307. { --------------------------------------------------------------------
  308. TResourceRecordSetsResource
  309. --------------------------------------------------------------------}
  310. //Optional query Options for TResourceRecordSetsResource, method List
  311. TResourceRecordSetsListOptions = Record
  312. maxResults : integer;
  313. _name : String;
  314. pageToken : String;
  315. _type : String;
  316. end;
  317. TResourceRecordSetsResource = Class(TGoogleResource)
  318. Public
  319. Class Function ResourceName : String; override;
  320. Class Function DefaultAPI : TGoogleAPIClass; override;
  321. Function List(managedZone: string; project: string; AQuery : string = '') : TResourceRecordSetsListResponse;
  322. Function List(managedZone: string; project: string; AQuery : TResourceRecordSetslistOptions) : TResourceRecordSetsListResponse;
  323. end;
  324. { --------------------------------------------------------------------
  325. TDnsAPI
  326. --------------------------------------------------------------------}
  327. TDnsAPI = Class(TGoogleAPI)
  328. Private
  329. FChangesInstance : TChangesResource;
  330. FManagedZonesInstance : TManagedZonesResource;
  331. FProjectsInstance : TProjectsResource;
  332. FResourceRecordSetsInstance : TResourceRecordSetsResource;
  333. Function GetChangesInstance : TChangesResource;virtual;
  334. Function GetManagedZonesInstance : TManagedZonesResource;virtual;
  335. Function GetProjectsInstance : TProjectsResource;virtual;
  336. Function GetResourceRecordSetsInstance : TResourceRecordSetsResource;virtual;
  337. Public
  338. //Override class functions with API info
  339. Class Function APIName : String; override;
  340. Class Function APIVersion : String; override;
  341. Class Function APIRevision : String; override;
  342. Class Function APIID : String; override;
  343. Class Function APITitle : String; override;
  344. Class Function APIDescription : String; override;
  345. Class Function APIOwnerDomain : String; override;
  346. Class Function APIOwnerName : String; override;
  347. Class Function APIIcon16 : String; override;
  348. Class Function APIIcon32 : String; override;
  349. Class Function APIdocumentationLink : String; override;
  350. Class Function APIrootUrl : string; override;
  351. Class Function APIbasePath : string;override;
  352. Class Function APIbaseURL : String;override;
  353. Class Function APIProtocol : string;override;
  354. Class Function APIservicePath : string;override;
  355. Class Function APIbatchPath : String;override;
  356. Class Function APIAuthScopes : TScopeInfoArray;override;
  357. Class Function APINeedsAuth : Boolean;override;
  358. Class Procedure RegisterAPIResources; override;
  359. //Add create function for resources
  360. Function CreateChangesResource(AOwner : TComponent) : TChangesResource;virtual;overload;
  361. Function CreateChangesResource : TChangesResource;virtual;overload;
  362. Function CreateManagedZonesResource(AOwner : TComponent) : TManagedZonesResource;virtual;overload;
  363. Function CreateManagedZonesResource : TManagedZonesResource;virtual;overload;
  364. Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload;
  365. Function CreateProjectsResource : TProjectsResource;virtual;overload;
  366. Function CreateResourceRecordSetsResource(AOwner : TComponent) : TResourceRecordSetsResource;virtual;overload;
  367. Function CreateResourceRecordSetsResource : TResourceRecordSetsResource;virtual;overload;
  368. //Add default on-demand instances for resources
  369. Property ChangesResource : TChangesResource Read GetChangesInstance;
  370. Property ManagedZonesResource : TManagedZonesResource Read GetManagedZonesInstance;
  371. Property ProjectsResource : TProjectsResource Read GetProjectsInstance;
  372. Property ResourceRecordSetsResource : TResourceRecordSetsResource Read GetResourceRecordSetsInstance;
  373. end;
  374. implementation
  375. { --------------------------------------------------------------------
  376. TChange
  377. --------------------------------------------------------------------}
  378. Procedure TChange.Setadditions(AIndex : Integer; const AValue : TChangeTypeadditionsArray);
  379. begin
  380. If (Fadditions=AValue) then exit;
  381. Fadditions:=AValue;
  382. MarkPropertyChanged(AIndex);
  383. end;
  384. Procedure TChange.Setdeletions(AIndex : Integer; const AValue : TChangeTypedeletionsArray);
  385. begin
  386. If (Fdeletions=AValue) then exit;
  387. Fdeletions:=AValue;
  388. MarkPropertyChanged(AIndex);
  389. end;
  390. Procedure TChange.Setid(AIndex : Integer; const AValue : String);
  391. begin
  392. If (Fid=AValue) then exit;
  393. Fid:=AValue;
  394. MarkPropertyChanged(AIndex);
  395. end;
  396. Procedure TChange.Setkind(AIndex : Integer; const AValue : String);
  397. begin
  398. If (Fkind=AValue) then exit;
  399. Fkind:=AValue;
  400. MarkPropertyChanged(AIndex);
  401. end;
  402. Procedure TChange.SetstartTime(AIndex : Integer; const AValue : String);
  403. begin
  404. If (FstartTime=AValue) then exit;
  405. FstartTime:=AValue;
  406. MarkPropertyChanged(AIndex);
  407. end;
  408. Procedure TChange.Setstatus(AIndex : Integer; const AValue : String);
  409. begin
  410. If (Fstatus=AValue) then exit;
  411. Fstatus:=AValue;
  412. MarkPropertyChanged(AIndex);
  413. end;
  414. //2.6.4. bug workaround
  415. {$IFDEF VER2_6}
  416. Procedure TChange.SetArrayLength(Const AName : String; ALength : Longint);
  417. begin
  418. Case AName of
  419. 'additions' : SetLength(Fadditions,ALength);
  420. 'deletions' : SetLength(Fdeletions,ALength);
  421. else
  422. Inherited SetArrayLength(AName,ALength);
  423. end;
  424. end;
  425. {$ENDIF VER2_6}
  426. { --------------------------------------------------------------------
  427. TChangesListResponse
  428. --------------------------------------------------------------------}
  429. Procedure TChangesListResponse.Setchanges(AIndex : Integer; const AValue : TChangesListResponseTypechangesArray);
  430. begin
  431. If (Fchanges=AValue) then exit;
  432. Fchanges:=AValue;
  433. MarkPropertyChanged(AIndex);
  434. end;
  435. Procedure TChangesListResponse.Setkind(AIndex : Integer; const AValue : String);
  436. begin
  437. If (Fkind=AValue) then exit;
  438. Fkind:=AValue;
  439. MarkPropertyChanged(AIndex);
  440. end;
  441. Procedure TChangesListResponse.SetnextPageToken(AIndex : Integer; const AValue : String);
  442. begin
  443. If (FnextPageToken=AValue) then exit;
  444. FnextPageToken:=AValue;
  445. MarkPropertyChanged(AIndex);
  446. end;
  447. //2.6.4. bug workaround
  448. {$IFDEF VER2_6}
  449. Procedure TChangesListResponse.SetArrayLength(Const AName : String; ALength : Longint);
  450. begin
  451. Case AName of
  452. 'changes' : SetLength(Fchanges,ALength);
  453. else
  454. Inherited SetArrayLength(AName,ALength);
  455. end;
  456. end;
  457. {$ENDIF VER2_6}
  458. { --------------------------------------------------------------------
  459. TManagedZone
  460. --------------------------------------------------------------------}
  461. Procedure TManagedZone.SetcreationTime(AIndex : Integer; const AValue : String);
  462. begin
  463. If (FcreationTime=AValue) then exit;
  464. FcreationTime:=AValue;
  465. MarkPropertyChanged(AIndex);
  466. end;
  467. Procedure TManagedZone.Setdescription(AIndex : Integer; const AValue : String);
  468. begin
  469. If (Fdescription=AValue) then exit;
  470. Fdescription:=AValue;
  471. MarkPropertyChanged(AIndex);
  472. end;
  473. Procedure TManagedZone.SetdnsName(AIndex : Integer; const AValue : String);
  474. begin
  475. If (FdnsName=AValue) then exit;
  476. FdnsName:=AValue;
  477. MarkPropertyChanged(AIndex);
  478. end;
  479. Procedure TManagedZone.Setid(AIndex : Integer; const AValue : String);
  480. begin
  481. If (Fid=AValue) then exit;
  482. Fid:=AValue;
  483. MarkPropertyChanged(AIndex);
  484. end;
  485. Procedure TManagedZone.Setkind(AIndex : Integer; const AValue : String);
  486. begin
  487. If (Fkind=AValue) then exit;
  488. Fkind:=AValue;
  489. MarkPropertyChanged(AIndex);
  490. end;
  491. Procedure TManagedZone.Setname(AIndex : Integer; const AValue : String);
  492. begin
  493. If (Fname=AValue) then exit;
  494. Fname:=AValue;
  495. MarkPropertyChanged(AIndex);
  496. end;
  497. Procedure TManagedZone.SetnameServerSet(AIndex : Integer; const AValue : String);
  498. begin
  499. If (FnameServerSet=AValue) then exit;
  500. FnameServerSet:=AValue;
  501. MarkPropertyChanged(AIndex);
  502. end;
  503. Procedure TManagedZone.SetnameServers(AIndex : Integer; const AValue : TStringArray);
  504. begin
  505. If (FnameServers=AValue) then exit;
  506. FnameServers:=AValue;
  507. MarkPropertyChanged(AIndex);
  508. end;
  509. //2.6.4. bug workaround
  510. {$IFDEF VER2_6}
  511. Procedure TManagedZone.SetArrayLength(Const AName : String; ALength : Longint);
  512. begin
  513. Case AName of
  514. 'nameservers' : SetLength(FnameServers,ALength);
  515. else
  516. Inherited SetArrayLength(AName,ALength);
  517. end;
  518. end;
  519. {$ENDIF VER2_6}
  520. { --------------------------------------------------------------------
  521. TManagedZonesListResponse
  522. --------------------------------------------------------------------}
  523. Procedure TManagedZonesListResponse.Setkind(AIndex : Integer; const AValue : String);
  524. begin
  525. If (Fkind=AValue) then exit;
  526. Fkind:=AValue;
  527. MarkPropertyChanged(AIndex);
  528. end;
  529. Procedure TManagedZonesListResponse.SetmanagedZones(AIndex : Integer; const AValue : TManagedZonesListResponseTypemanagedZonesArray);
  530. begin
  531. If (FmanagedZones=AValue) then exit;
  532. FmanagedZones:=AValue;
  533. MarkPropertyChanged(AIndex);
  534. end;
  535. Procedure TManagedZonesListResponse.SetnextPageToken(AIndex : Integer; const AValue : String);
  536. begin
  537. If (FnextPageToken=AValue) then exit;
  538. FnextPageToken:=AValue;
  539. MarkPropertyChanged(AIndex);
  540. end;
  541. //2.6.4. bug workaround
  542. {$IFDEF VER2_6}
  543. Procedure TManagedZonesListResponse.SetArrayLength(Const AName : String; ALength : Longint);
  544. begin
  545. Case AName of
  546. 'managedzones' : SetLength(FmanagedZones,ALength);
  547. else
  548. Inherited SetArrayLength(AName,ALength);
  549. end;
  550. end;
  551. {$ENDIF VER2_6}
  552. { --------------------------------------------------------------------
  553. TProject
  554. --------------------------------------------------------------------}
  555. Procedure TProject.Setid(AIndex : Integer; const AValue : String);
  556. begin
  557. If (Fid=AValue) then exit;
  558. Fid:=AValue;
  559. MarkPropertyChanged(AIndex);
  560. end;
  561. Procedure TProject.Setkind(AIndex : Integer; const AValue : String);
  562. begin
  563. If (Fkind=AValue) then exit;
  564. Fkind:=AValue;
  565. MarkPropertyChanged(AIndex);
  566. end;
  567. Procedure TProject.Setnumber(AIndex : Integer; const AValue : String);
  568. begin
  569. If (Fnumber=AValue) then exit;
  570. Fnumber:=AValue;
  571. MarkPropertyChanged(AIndex);
  572. end;
  573. Procedure TProject.Setquota(AIndex : Integer; const AValue : TQuota);
  574. begin
  575. If (Fquota=AValue) then exit;
  576. Fquota:=AValue;
  577. MarkPropertyChanged(AIndex);
  578. end;
  579. { --------------------------------------------------------------------
  580. TQuota
  581. --------------------------------------------------------------------}
  582. Procedure TQuota.Setkind(AIndex : Integer; const AValue : String);
  583. begin
  584. If (Fkind=AValue) then exit;
  585. Fkind:=AValue;
  586. MarkPropertyChanged(AIndex);
  587. end;
  588. Procedure TQuota.SetmanagedZones(AIndex : Integer; const AValue : integer);
  589. begin
  590. If (FmanagedZones=AValue) then exit;
  591. FmanagedZones:=AValue;
  592. MarkPropertyChanged(AIndex);
  593. end;
  594. Procedure TQuota.SetresourceRecordsPerRrset(AIndex : Integer; const AValue : integer);
  595. begin
  596. If (FresourceRecordsPerRrset=AValue) then exit;
  597. FresourceRecordsPerRrset:=AValue;
  598. MarkPropertyChanged(AIndex);
  599. end;
  600. Procedure TQuota.SetrrsetAdditionsPerChange(AIndex : Integer; const AValue : integer);
  601. begin
  602. If (FrrsetAdditionsPerChange=AValue) then exit;
  603. FrrsetAdditionsPerChange:=AValue;
  604. MarkPropertyChanged(AIndex);
  605. end;
  606. Procedure TQuota.SetrrsetDeletionsPerChange(AIndex : Integer; const AValue : integer);
  607. begin
  608. If (FrrsetDeletionsPerChange=AValue) then exit;
  609. FrrsetDeletionsPerChange:=AValue;
  610. MarkPropertyChanged(AIndex);
  611. end;
  612. Procedure TQuota.SetrrsetsPerManagedZone(AIndex : Integer; const AValue : integer);
  613. begin
  614. If (FrrsetsPerManagedZone=AValue) then exit;
  615. FrrsetsPerManagedZone:=AValue;
  616. MarkPropertyChanged(AIndex);
  617. end;
  618. Procedure TQuota.SettotalRrdataSizePerChange(AIndex : Integer; const AValue : integer);
  619. begin
  620. If (FtotalRrdataSizePerChange=AValue) then exit;
  621. FtotalRrdataSizePerChange:=AValue;
  622. MarkPropertyChanged(AIndex);
  623. end;
  624. { --------------------------------------------------------------------
  625. TResourceRecordSet
  626. --------------------------------------------------------------------}
  627. Procedure TResourceRecordSet.Setkind(AIndex : Integer; const AValue : String);
  628. begin
  629. If (Fkind=AValue) then exit;
  630. Fkind:=AValue;
  631. MarkPropertyChanged(AIndex);
  632. end;
  633. Procedure TResourceRecordSet.Setname(AIndex : Integer; const AValue : String);
  634. begin
  635. If (Fname=AValue) then exit;
  636. Fname:=AValue;
  637. MarkPropertyChanged(AIndex);
  638. end;
  639. Procedure TResourceRecordSet.Setrrdatas(AIndex : Integer; const AValue : TStringArray);
  640. begin
  641. If (Frrdatas=AValue) then exit;
  642. Frrdatas:=AValue;
  643. MarkPropertyChanged(AIndex);
  644. end;
  645. Procedure TResourceRecordSet.Setttl(AIndex : Integer; const AValue : integer);
  646. begin
  647. If (Fttl=AValue) then exit;
  648. Fttl:=AValue;
  649. MarkPropertyChanged(AIndex);
  650. end;
  651. Procedure TResourceRecordSet.Set_type(AIndex : Integer; const AValue : String);
  652. begin
  653. If (F_type=AValue) then exit;
  654. F_type:=AValue;
  655. MarkPropertyChanged(AIndex);
  656. end;
  657. Class Function TResourceRecordSet.ExportPropertyName(Const AName : String) :String;
  658. begin
  659. Case AName of
  660. '_type' : Result:='type';
  661. else
  662. Result:=Inherited ExportPropertyName(AName);
  663. end;
  664. end;
  665. //2.6.4. bug workaround
  666. {$IFDEF VER2_6}
  667. Procedure TResourceRecordSet.SetArrayLength(Const AName : String; ALength : Longint);
  668. begin
  669. Case AName of
  670. 'rrdatas' : SetLength(Frrdatas,ALength);
  671. else
  672. Inherited SetArrayLength(AName,ALength);
  673. end;
  674. end;
  675. {$ENDIF VER2_6}
  676. { --------------------------------------------------------------------
  677. TResourceRecordSetsListResponse
  678. --------------------------------------------------------------------}
  679. Procedure TResourceRecordSetsListResponse.Setkind(AIndex : Integer; const AValue : String);
  680. begin
  681. If (Fkind=AValue) then exit;
  682. Fkind:=AValue;
  683. MarkPropertyChanged(AIndex);
  684. end;
  685. Procedure TResourceRecordSetsListResponse.SetnextPageToken(AIndex : Integer; const AValue : String);
  686. begin
  687. If (FnextPageToken=AValue) then exit;
  688. FnextPageToken:=AValue;
  689. MarkPropertyChanged(AIndex);
  690. end;
  691. Procedure TResourceRecordSetsListResponse.Setrrsets(AIndex : Integer; const AValue : TResourceRecordSetsListResponseTyperrsetsArray);
  692. begin
  693. If (Frrsets=AValue) then exit;
  694. Frrsets:=AValue;
  695. MarkPropertyChanged(AIndex);
  696. end;
  697. //2.6.4. bug workaround
  698. {$IFDEF VER2_6}
  699. Procedure TResourceRecordSetsListResponse.SetArrayLength(Const AName : String; ALength : Longint);
  700. begin
  701. Case AName of
  702. 'rrsets' : SetLength(Frrsets,ALength);
  703. else
  704. Inherited SetArrayLength(AName,ALength);
  705. end;
  706. end;
  707. {$ENDIF VER2_6}
  708. { --------------------------------------------------------------------
  709. TChangesResource
  710. --------------------------------------------------------------------}
  711. Class Function TChangesResource.ResourceName : String;
  712. begin
  713. Result:='changes';
  714. end;
  715. Class Function TChangesResource.DefaultAPI : TGoogleAPIClass;
  716. begin
  717. Result:=TdnsAPI;
  718. end;
  719. Function TChangesResource.Create(managedZone: string; project: string; aChange : TChange) : TChange;
  720. Const
  721. _HTTPMethod = 'POST';
  722. _Path = '{project}/managedZones/{managedZone}/changes';
  723. _Methodid = 'dns.changes.create';
  724. Var
  725. _P : String;
  726. begin
  727. _P:=SubstitutePath(_Path,['managedZone',managedZone,'project',project]);
  728. Result:=ServiceCall(_HTTPMethod,_P,'',aChange,TChange) as TChange;
  729. end;
  730. Function TChangesResource.Get(changeId: string; managedZone: string; project: string) : TChange;
  731. Const
  732. _HTTPMethod = 'GET';
  733. _Path = '{project}/managedZones/{managedZone}/changes/{changeId}';
  734. _Methodid = 'dns.changes.get';
  735. Var
  736. _P : String;
  737. begin
  738. _P:=SubstitutePath(_Path,['changeId',changeId,'managedZone',managedZone,'project',project]);
  739. Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TChange) as TChange;
  740. end;
  741. Function TChangesResource.List(managedZone: string; project: string; AQuery : string = '') : TChangesListResponse;
  742. Const
  743. _HTTPMethod = 'GET';
  744. _Path = '{project}/managedZones/{managedZone}/changes';
  745. _Methodid = 'dns.changes.list';
  746. Var
  747. _P : String;
  748. begin
  749. _P:=SubstitutePath(_Path,['managedZone',managedZone,'project',project]);
  750. Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TChangesListResponse) as TChangesListResponse;
  751. end;
  752. Function TChangesResource.List(managedZone: string; project: string; AQuery : TChangeslistOptions) : TChangesListResponse;
  753. Var
  754. _Q : String;
  755. begin
  756. _Q:='';
  757. AddToQuery(_Q,'maxResults',AQuery.maxResults);
  758. AddToQuery(_Q,'pageToken',AQuery.pageToken);
  759. AddToQuery(_Q,'sortBy',AQuery.sortBy);
  760. AddToQuery(_Q,'sortOrder',AQuery.sortOrder);
  761. Result:=List(managedZone,project,_Q);
  762. end;
  763. { --------------------------------------------------------------------
  764. TManagedZonesResource
  765. --------------------------------------------------------------------}
  766. Class Function TManagedZonesResource.ResourceName : String;
  767. begin
  768. Result:='managedZones';
  769. end;
  770. Class Function TManagedZonesResource.DefaultAPI : TGoogleAPIClass;
  771. begin
  772. Result:=TdnsAPI;
  773. end;
  774. Function TManagedZonesResource.Create(project: string; aManagedZone : TManagedZone) : TManagedZone;
  775. Const
  776. _HTTPMethod = 'POST';
  777. _Path = '{project}/managedZones';
  778. _Methodid = 'dns.managedZones.create';
  779. Var
  780. _P : String;
  781. begin
  782. _P:=SubstitutePath(_Path,['project',project]);
  783. Result:=ServiceCall(_HTTPMethod,_P,'',aManagedZone,TManagedZone) as TManagedZone;
  784. end;
  785. Procedure TManagedZonesResource.Delete(managedZone: string; project: string);
  786. Const
  787. _HTTPMethod = 'DELETE';
  788. _Path = '{project}/managedZones/{managedZone}';
  789. _Methodid = 'dns.managedZones.delete';
  790. Var
  791. _P : String;
  792. begin
  793. _P:=SubstitutePath(_Path,['managedZone',managedZone,'project',project]);
  794. ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
  795. end;
  796. Function TManagedZonesResource.Get(managedZone: string; project: string) : TManagedZone;
  797. Const
  798. _HTTPMethod = 'GET';
  799. _Path = '{project}/managedZones/{managedZone}';
  800. _Methodid = 'dns.managedZones.get';
  801. Var
  802. _P : String;
  803. begin
  804. _P:=SubstitutePath(_Path,['managedZone',managedZone,'project',project]);
  805. Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TManagedZone) as TManagedZone;
  806. end;
  807. Function TManagedZonesResource.List(project: string; AQuery : string = '') : TManagedZonesListResponse;
  808. Const
  809. _HTTPMethod = 'GET';
  810. _Path = '{project}/managedZones';
  811. _Methodid = 'dns.managedZones.list';
  812. Var
  813. _P : String;
  814. begin
  815. _P:=SubstitutePath(_Path,['project',project]);
  816. Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TManagedZonesListResponse) as TManagedZonesListResponse;
  817. end;
  818. Function TManagedZonesResource.List(project: string; AQuery : TManagedZoneslistOptions) : TManagedZonesListResponse;
  819. Var
  820. _Q : String;
  821. begin
  822. _Q:='';
  823. AddToQuery(_Q,'dnsName',AQuery.dnsName);
  824. AddToQuery(_Q,'maxResults',AQuery.maxResults);
  825. AddToQuery(_Q,'pageToken',AQuery.pageToken);
  826. Result:=List(project,_Q);
  827. end;
  828. { --------------------------------------------------------------------
  829. TProjectsResource
  830. --------------------------------------------------------------------}
  831. Class Function TProjectsResource.ResourceName : String;
  832. begin
  833. Result:='projects';
  834. end;
  835. Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass;
  836. begin
  837. Result:=TdnsAPI;
  838. end;
  839. Function TProjectsResource.Get(project: string) : TProject;
  840. Const
  841. _HTTPMethod = 'GET';
  842. _Path = '{project}';
  843. _Methodid = 'dns.projects.get';
  844. Var
  845. _P : String;
  846. begin
  847. _P:=SubstitutePath(_Path,['project',project]);
  848. Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TProject) as TProject;
  849. end;
  850. { --------------------------------------------------------------------
  851. TResourceRecordSetsResource
  852. --------------------------------------------------------------------}
  853. Class Function TResourceRecordSetsResource.ResourceName : String;
  854. begin
  855. Result:='resourceRecordSets';
  856. end;
  857. Class Function TResourceRecordSetsResource.DefaultAPI : TGoogleAPIClass;
  858. begin
  859. Result:=TdnsAPI;
  860. end;
  861. Function TResourceRecordSetsResource.List(managedZone: string; project: string; AQuery : string = '') : TResourceRecordSetsListResponse;
  862. Const
  863. _HTTPMethod = 'GET';
  864. _Path = '{project}/managedZones/{managedZone}/rrsets';
  865. _Methodid = 'dns.resourceRecordSets.list';
  866. Var
  867. _P : String;
  868. begin
  869. _P:=SubstitutePath(_Path,['managedZone',managedZone,'project',project]);
  870. Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TResourceRecordSetsListResponse) as TResourceRecordSetsListResponse;
  871. end;
  872. Function TResourceRecordSetsResource.List(managedZone: string; project: string; AQuery : TResourceRecordSetslistOptions) : TResourceRecordSetsListResponse;
  873. Var
  874. _Q : String;
  875. begin
  876. _Q:='';
  877. AddToQuery(_Q,'maxResults',AQuery.maxResults);
  878. AddToQuery(_Q,'name',AQuery._name);
  879. AddToQuery(_Q,'pageToken',AQuery.pageToken);
  880. AddToQuery(_Q,'type',AQuery._type);
  881. Result:=List(managedZone,project,_Q);
  882. end;
  883. { --------------------------------------------------------------------
  884. TDnsAPI
  885. --------------------------------------------------------------------}
  886. Class Function TDnsAPI.APIName : String;
  887. begin
  888. Result:='dns';
  889. end;
  890. Class Function TDnsAPI.APIVersion : String;
  891. begin
  892. Result:='v1';
  893. end;
  894. Class Function TDnsAPI.APIRevision : String;
  895. begin
  896. Result:='20160513';
  897. end;
  898. Class Function TDnsAPI.APIID : String;
  899. begin
  900. Result:='dns:v1';
  901. end;
  902. Class Function TDnsAPI.APITitle : String;
  903. begin
  904. Result:='Google Cloud DNS API';
  905. end;
  906. Class Function TDnsAPI.APIDescription : String;
  907. begin
  908. Result:='Configures and serves authoritative DNS records.';
  909. end;
  910. Class Function TDnsAPI.APIOwnerDomain : String;
  911. begin
  912. Result:='google.com';
  913. end;
  914. Class Function TDnsAPI.APIOwnerName : String;
  915. begin
  916. Result:='Google';
  917. end;
  918. Class Function TDnsAPI.APIIcon16 : String;
  919. begin
  920. Result:='http://www.google.com/images/icons/product/search-16.gif';
  921. end;
  922. Class Function TDnsAPI.APIIcon32 : String;
  923. begin
  924. Result:='http://www.google.com/images/icons/product/search-32.gif';
  925. end;
  926. Class Function TDnsAPI.APIdocumentationLink : String;
  927. begin
  928. Result:='https://developers.google.com/cloud-dns';
  929. end;
  930. Class Function TDnsAPI.APIrootUrl : string;
  931. begin
  932. Result:='https://www.googleapis.com/';
  933. end;
  934. Class Function TDnsAPI.APIbasePath : string;
  935. begin
  936. Result:='/dns/v1/projects/';
  937. end;
  938. Class Function TDnsAPI.APIbaseURL : String;
  939. begin
  940. Result:='https://www.googleapis.com/dns/v1/projects/';
  941. end;
  942. Class Function TDnsAPI.APIProtocol : string;
  943. begin
  944. Result:='rest';
  945. end;
  946. Class Function TDnsAPI.APIservicePath : string;
  947. begin
  948. Result:='dns/v1/projects/';
  949. end;
  950. Class Function TDnsAPI.APIbatchPath : String;
  951. begin
  952. Result:='batch';
  953. end;
  954. Class Function TDnsAPI.APIAuthScopes : TScopeInfoArray;
  955. begin
  956. SetLength(Result,4);
  957. Result[0].Name:='https://www.googleapis.com/auth/cloud-platform';
  958. Result[0].Description:='View and manage your data across Google Cloud Platform services';
  959. Result[1].Name:='https://www.googleapis.com/auth/cloud-platform.read-only';
  960. Result[1].Description:='View your data across Google Cloud Platform services';
  961. Result[2].Name:='https://www.googleapis.com/auth/ndev.clouddns.readonly';
  962. Result[2].Description:='View your DNS records hosted by Google Cloud DNS';
  963. Result[3].Name:='https://www.googleapis.com/auth/ndev.clouddns.readwrite';
  964. Result[3].Description:='View and manage your DNS records hosted by Google Cloud DNS';
  965. end;
  966. Class Function TDnsAPI.APINeedsAuth : Boolean;
  967. begin
  968. Result:=True;
  969. end;
  970. Class Procedure TDnsAPI.RegisterAPIResources;
  971. begin
  972. TChange.RegisterObject;
  973. TChangesListResponse.RegisterObject;
  974. TManagedZone.RegisterObject;
  975. TManagedZonesListResponse.RegisterObject;
  976. TProject.RegisterObject;
  977. TQuota.RegisterObject;
  978. TResourceRecordSet.RegisterObject;
  979. TResourceRecordSetsListResponse.RegisterObject;
  980. end;
  981. Function TDnsAPI.GetChangesInstance : TChangesResource;
  982. begin
  983. if (FChangesInstance=Nil) then
  984. FChangesInstance:=CreateChangesResource;
  985. Result:=FChangesInstance;
  986. end;
  987. Function TDnsAPI.CreateChangesResource : TChangesResource;
  988. begin
  989. Result:=CreateChangesResource(Self);
  990. end;
  991. Function TDnsAPI.CreateChangesResource(AOwner : TComponent) : TChangesResource;
  992. begin
  993. Result:=TChangesResource.Create(AOwner);
  994. Result.API:=Self.API;
  995. end;
  996. Function TDnsAPI.GetManagedZonesInstance : TManagedZonesResource;
  997. begin
  998. if (FManagedZonesInstance=Nil) then
  999. FManagedZonesInstance:=CreateManagedZonesResource;
  1000. Result:=FManagedZonesInstance;
  1001. end;
  1002. Function TDnsAPI.CreateManagedZonesResource : TManagedZonesResource;
  1003. begin
  1004. Result:=CreateManagedZonesResource(Self);
  1005. end;
  1006. Function TDnsAPI.CreateManagedZonesResource(AOwner : TComponent) : TManagedZonesResource;
  1007. begin
  1008. Result:=TManagedZonesResource.Create(AOwner);
  1009. Result.API:=Self.API;
  1010. end;
  1011. Function TDnsAPI.GetProjectsInstance : TProjectsResource;
  1012. begin
  1013. if (FProjectsInstance=Nil) then
  1014. FProjectsInstance:=CreateProjectsResource;
  1015. Result:=FProjectsInstance;
  1016. end;
  1017. Function TDnsAPI.CreateProjectsResource : TProjectsResource;
  1018. begin
  1019. Result:=CreateProjectsResource(Self);
  1020. end;
  1021. Function TDnsAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource;
  1022. begin
  1023. Result:=TProjectsResource.Create(AOwner);
  1024. Result.API:=Self.API;
  1025. end;
  1026. Function TDnsAPI.GetResourceRecordSetsInstance : TResourceRecordSetsResource;
  1027. begin
  1028. if (FResourceRecordSetsInstance=Nil) then
  1029. FResourceRecordSetsInstance:=CreateResourceRecordSetsResource;
  1030. Result:=FResourceRecordSetsInstance;
  1031. end;
  1032. Function TDnsAPI.CreateResourceRecordSetsResource : TResourceRecordSetsResource;
  1033. begin
  1034. Result:=CreateResourceRecordSetsResource(Self);
  1035. end;
  1036. Function TDnsAPI.CreateResourceRecordSetsResource(AOwner : TComponent) : TResourceRecordSetsResource;
  1037. begin
  1038. Result:=TResourceRecordSetsResource.Create(AOwner);
  1039. Result.API:=Self.API;
  1040. end;
  1041. initialization
  1042. TDnsAPI.RegisterAPI;
  1043. end.