googleurlshortener.pp 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786
  1. unit googleurlshortener;
  2. {$MODE objfpc}
  3. {$H+}
  4. interface
  5. uses sysutils, classes, googleservice, restbase, googlebase;
  6. type
  7. //Top-level schema types
  8. TAnalyticsSnapshot = Class;
  9. TAnalyticsSummary = Class;
  10. TStringCount = Class;
  11. TUrl = Class;
  12. TUrlHistory = Class;
  13. TAnalyticsSnapshotArray = Array of TAnalyticsSnapshot;
  14. TAnalyticsSummaryArray = Array of TAnalyticsSummary;
  15. TStringCountArray = Array of TStringCount;
  16. TUrlArray = Array of TUrl;
  17. TUrlHistoryArray = Array of TUrlHistory;
  18. //Anonymous types, using auto-generated names
  19. TAnalyticsSnapshotTypebrowsersArray = Array of TStringCount;
  20. TAnalyticsSnapshotTypecountriesArray = Array of TStringCount;
  21. TAnalyticsSnapshotTypeplatformsArray = Array of TStringCount;
  22. TAnalyticsSnapshotTypereferrersArray = Array of TStringCount;
  23. TUrlHistoryTypeitemsArray = Array of TUrl;
  24. { --------------------------------------------------------------------
  25. TAnalyticsSnapshot
  26. --------------------------------------------------------------------}
  27. TAnalyticsSnapshot = Class(TGoogleBaseObject)
  28. Private
  29. Fbrowsers : TAnalyticsSnapshotTypebrowsersArray;
  30. Fcountries : TAnalyticsSnapshotTypecountriesArray;
  31. FlongUrlClicks : String;
  32. Fplatforms : TAnalyticsSnapshotTypeplatformsArray;
  33. Freferrers : TAnalyticsSnapshotTypereferrersArray;
  34. FshortUrlClicks : String;
  35. Protected
  36. //Property setters
  37. Procedure Setbrowsers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypebrowsersArray); virtual;
  38. Procedure Setcountries(AIndex : Integer; const AValue : TAnalyticsSnapshotTypecountriesArray); virtual;
  39. Procedure SetlongUrlClicks(AIndex : Integer; const AValue : String); virtual;
  40. Procedure Setplatforms(AIndex : Integer; const AValue : TAnalyticsSnapshotTypeplatformsArray); virtual;
  41. Procedure Setreferrers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypereferrersArray); virtual;
  42. Procedure SetshortUrlClicks(AIndex : Integer; const AValue : String); virtual;
  43. //2.6.4. bug workaround
  44. {$IFDEF VER2_6}
  45. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  46. {$ENDIF VER2_6}
  47. Public
  48. Published
  49. Property browsers : TAnalyticsSnapshotTypebrowsersArray Index 0 Read Fbrowsers Write Setbrowsers;
  50. Property countries : TAnalyticsSnapshotTypecountriesArray Index 8 Read Fcountries Write Setcountries;
  51. Property longUrlClicks : String Index 16 Read FlongUrlClicks Write SetlongUrlClicks;
  52. Property platforms : TAnalyticsSnapshotTypeplatformsArray Index 24 Read Fplatforms Write Setplatforms;
  53. Property referrers : TAnalyticsSnapshotTypereferrersArray Index 32 Read Freferrers Write Setreferrers;
  54. Property shortUrlClicks : String Index 40 Read FshortUrlClicks Write SetshortUrlClicks;
  55. end;
  56. TAnalyticsSnapshotClass = Class of TAnalyticsSnapshot;
  57. { --------------------------------------------------------------------
  58. TAnalyticsSummary
  59. --------------------------------------------------------------------}
  60. TAnalyticsSummary = Class(TGoogleBaseObject)
  61. Private
  62. FallTime : TAnalyticsSnapshot;
  63. Fday : TAnalyticsSnapshot;
  64. Fmonth : TAnalyticsSnapshot;
  65. FtwoHours : TAnalyticsSnapshot;
  66. Fweek : TAnalyticsSnapshot;
  67. Protected
  68. //Property setters
  69. Procedure SetallTime(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
  70. Procedure Setday(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
  71. Procedure Setmonth(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
  72. Procedure SettwoHours(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
  73. Procedure Setweek(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
  74. Public
  75. Published
  76. Property allTime : TAnalyticsSnapshot Index 0 Read FallTime Write SetallTime;
  77. Property day : TAnalyticsSnapshot Index 8 Read Fday Write Setday;
  78. Property month : TAnalyticsSnapshot Index 16 Read Fmonth Write Setmonth;
  79. Property twoHours : TAnalyticsSnapshot Index 24 Read FtwoHours Write SettwoHours;
  80. Property week : TAnalyticsSnapshot Index 32 Read Fweek Write Setweek;
  81. end;
  82. TAnalyticsSummaryClass = Class of TAnalyticsSummary;
  83. { --------------------------------------------------------------------
  84. TStringCount
  85. --------------------------------------------------------------------}
  86. TStringCount = Class(TGoogleBaseObject)
  87. Private
  88. Fcount : String;
  89. Fid : String;
  90. Protected
  91. //Property setters
  92. Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
  93. Procedure Setid(AIndex : Integer; const AValue : String); virtual;
  94. Public
  95. Published
  96. Property count : String Index 0 Read Fcount Write Setcount;
  97. Property id : String Index 8 Read Fid Write Setid;
  98. end;
  99. TStringCountClass = Class of TStringCount;
  100. { --------------------------------------------------------------------
  101. TUrl
  102. --------------------------------------------------------------------}
  103. TUrl = Class(TGoogleBaseObject)
  104. Private
  105. Fanalytics : TAnalyticsSummary;
  106. Fcreated : String;
  107. Fid : String;
  108. Fkind : String;
  109. FlongUrl : String;
  110. Fstatus : String;
  111. Protected
  112. //Property setters
  113. Procedure Setanalytics(AIndex : Integer; const AValue : TAnalyticsSummary); virtual;
  114. Procedure Setcreated(AIndex : Integer; const AValue : String); virtual;
  115. Procedure Setid(AIndex : Integer; const AValue : String); virtual;
  116. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  117. Procedure SetlongUrl(AIndex : Integer; const AValue : String); virtual;
  118. Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
  119. Public
  120. Published
  121. Property analytics : TAnalyticsSummary Index 0 Read Fanalytics Write Setanalytics;
  122. Property created : String Index 8 Read Fcreated Write Setcreated;
  123. Property id : String Index 16 Read Fid Write Setid;
  124. Property kind : String Index 24 Read Fkind Write Setkind;
  125. Property longUrl : String Index 32 Read FlongUrl Write SetlongUrl;
  126. Property status : String Index 40 Read Fstatus Write Setstatus;
  127. end;
  128. TUrlClass = Class of TUrl;
  129. { --------------------------------------------------------------------
  130. TUrlHistory
  131. --------------------------------------------------------------------}
  132. TUrlHistory = Class(TGoogleBaseObject)
  133. Private
  134. Fitems : TUrlHistoryTypeitemsArray;
  135. FitemsPerPage : integer;
  136. Fkind : String;
  137. FnextPageToken : String;
  138. FtotalItems : integer;
  139. Protected
  140. //Property setters
  141. Procedure Setitems(AIndex : Integer; const AValue : TUrlHistoryTypeitemsArray); virtual;
  142. Procedure SetitemsPerPage(AIndex : Integer; const AValue : integer); virtual;
  143. Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
  144. Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
  145. Procedure SettotalItems(AIndex : Integer; const AValue : integer); 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 items : TUrlHistoryTypeitemsArray Index 0 Read Fitems Write Setitems;
  153. Property itemsPerPage : integer Index 8 Read FitemsPerPage Write SetitemsPerPage;
  154. Property kind : String Index 16 Read Fkind Write Setkind;
  155. Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
  156. Property totalItems : integer Index 32 Read FtotalItems Write SettotalItems;
  157. end;
  158. TUrlHistoryClass = Class of TUrlHistory;
  159. { --------------------------------------------------------------------
  160. TUrlResource
  161. --------------------------------------------------------------------}
  162. //Optional query Options for TUrlResource, method Get
  163. TUrlGetOptions = Record
  164. projection : String;
  165. shortUrl : String;
  166. end;
  167. //Optional query Options for TUrlResource, method List
  168. TUrlListOptions = Record
  169. projection : String;
  170. starttoken : String;
  171. end;
  172. TUrlResource = Class(TGoogleResource)
  173. Public
  174. Class Function ResourceName : String; override;
  175. Class Function DefaultAPI : TGoogleAPIClass; override;
  176. Function Get(AQuery : string = '') : TUrl;
  177. Function Get(AQuery : TUrlgetOptions) : TUrl;
  178. Function Insert(aUrl : TUrl) : TUrl;
  179. Function List(AQuery : string = '') : TUrlHistory;
  180. Function List(AQuery : TUrllistOptions) : TUrlHistory;
  181. end;
  182. { --------------------------------------------------------------------
  183. TUrlshortenerAPI
  184. --------------------------------------------------------------------}
  185. TUrlshortenerAPI = Class(TGoogleAPI)
  186. Private
  187. FUrlInstance : TUrlResource;
  188. Function GetUrlInstance : TUrlResource;virtual;
  189. Public
  190. //Override class functions with API info
  191. Class Function APIName : String; override;
  192. Class Function APIVersion : String; override;
  193. Class Function APIRevision : String; override;
  194. Class Function APIID : String; override;
  195. Class Function APITitle : String; override;
  196. Class Function APIDescription : String; override;
  197. Class Function APIOwnerDomain : String; override;
  198. Class Function APIOwnerName : String; override;
  199. Class Function APIIcon16 : String; override;
  200. Class Function APIIcon32 : String; override;
  201. Class Function APIdocumentationLink : String; override;
  202. Class Function APIrootUrl : string; override;
  203. Class Function APIbasePath : string;override;
  204. Class Function APIbaseURL : String;override;
  205. Class Function APIProtocol : string;override;
  206. Class Function APIservicePath : string;override;
  207. Class Function APIbatchPath : String;override;
  208. Class Function APIAuthScopes : TScopeInfoArray;override;
  209. Class Function APINeedsAuth : Boolean;override;
  210. Class Procedure RegisterAPIResources; override;
  211. //Add create function for resources
  212. Function CreateUrlResource(AOwner : TComponent) : TUrlResource;virtual;overload;
  213. Function CreateUrlResource : TUrlResource;virtual;overload;
  214. //Add default on-demand instances for resources
  215. Property UrlResource : TUrlResource Read GetUrlInstance;
  216. end;
  217. implementation
  218. { --------------------------------------------------------------------
  219. TAnalyticsSnapshot
  220. --------------------------------------------------------------------}
  221. Procedure TAnalyticsSnapshot.Setbrowsers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypebrowsersArray);
  222. begin
  223. If (Fbrowsers=AValue) then exit;
  224. Fbrowsers:=AValue;
  225. MarkPropertyChanged(AIndex);
  226. end;
  227. Procedure TAnalyticsSnapshot.Setcountries(AIndex : Integer; const AValue : TAnalyticsSnapshotTypecountriesArray);
  228. begin
  229. If (Fcountries=AValue) then exit;
  230. Fcountries:=AValue;
  231. MarkPropertyChanged(AIndex);
  232. end;
  233. Procedure TAnalyticsSnapshot.SetlongUrlClicks(AIndex : Integer; const AValue : String);
  234. begin
  235. If (FlongUrlClicks=AValue) then exit;
  236. FlongUrlClicks:=AValue;
  237. MarkPropertyChanged(AIndex);
  238. end;
  239. Procedure TAnalyticsSnapshot.Setplatforms(AIndex : Integer; const AValue : TAnalyticsSnapshotTypeplatformsArray);
  240. begin
  241. If (Fplatforms=AValue) then exit;
  242. Fplatforms:=AValue;
  243. MarkPropertyChanged(AIndex);
  244. end;
  245. Procedure TAnalyticsSnapshot.Setreferrers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypereferrersArray);
  246. begin
  247. If (Freferrers=AValue) then exit;
  248. Freferrers:=AValue;
  249. MarkPropertyChanged(AIndex);
  250. end;
  251. Procedure TAnalyticsSnapshot.SetshortUrlClicks(AIndex : Integer; const AValue : String);
  252. begin
  253. If (FshortUrlClicks=AValue) then exit;
  254. FshortUrlClicks:=AValue;
  255. MarkPropertyChanged(AIndex);
  256. end;
  257. //2.6.4. bug workaround
  258. {$IFDEF VER2_6}
  259. Procedure TAnalyticsSnapshot.SetArrayLength(Const AName : String; ALength : Longint);
  260. begin
  261. Case AName of
  262. 'browsers' : SetLength(Fbrowsers,ALength);
  263. 'countries' : SetLength(Fcountries,ALength);
  264. 'platforms' : SetLength(Fplatforms,ALength);
  265. 'referrers' : SetLength(Freferrers,ALength);
  266. else
  267. Inherited SetArrayLength(AName,ALength);
  268. end;
  269. end;
  270. {$ENDIF VER2_6}
  271. { --------------------------------------------------------------------
  272. TAnalyticsSummary
  273. --------------------------------------------------------------------}
  274. Procedure TAnalyticsSummary.SetallTime(AIndex : Integer; const AValue : TAnalyticsSnapshot);
  275. begin
  276. If (FallTime=AValue) then exit;
  277. FallTime:=AValue;
  278. MarkPropertyChanged(AIndex);
  279. end;
  280. Procedure TAnalyticsSummary.Setday(AIndex : Integer; const AValue : TAnalyticsSnapshot);
  281. begin
  282. If (Fday=AValue) then exit;
  283. Fday:=AValue;
  284. MarkPropertyChanged(AIndex);
  285. end;
  286. Procedure TAnalyticsSummary.Setmonth(AIndex : Integer; const AValue : TAnalyticsSnapshot);
  287. begin
  288. If (Fmonth=AValue) then exit;
  289. Fmonth:=AValue;
  290. MarkPropertyChanged(AIndex);
  291. end;
  292. Procedure TAnalyticsSummary.SettwoHours(AIndex : Integer; const AValue : TAnalyticsSnapshot);
  293. begin
  294. If (FtwoHours=AValue) then exit;
  295. FtwoHours:=AValue;
  296. MarkPropertyChanged(AIndex);
  297. end;
  298. Procedure TAnalyticsSummary.Setweek(AIndex : Integer; const AValue : TAnalyticsSnapshot);
  299. begin
  300. If (Fweek=AValue) then exit;
  301. Fweek:=AValue;
  302. MarkPropertyChanged(AIndex);
  303. end;
  304. { --------------------------------------------------------------------
  305. TStringCount
  306. --------------------------------------------------------------------}
  307. Procedure TStringCount.Setcount(AIndex : Integer; const AValue : String);
  308. begin
  309. If (Fcount=AValue) then exit;
  310. Fcount:=AValue;
  311. MarkPropertyChanged(AIndex);
  312. end;
  313. Procedure TStringCount.Setid(AIndex : Integer; const AValue : String);
  314. begin
  315. If (Fid=AValue) then exit;
  316. Fid:=AValue;
  317. MarkPropertyChanged(AIndex);
  318. end;
  319. { --------------------------------------------------------------------
  320. TUrl
  321. --------------------------------------------------------------------}
  322. Procedure TUrl.Setanalytics(AIndex : Integer; const AValue : TAnalyticsSummary);
  323. begin
  324. If (Fanalytics=AValue) then exit;
  325. Fanalytics:=AValue;
  326. MarkPropertyChanged(AIndex);
  327. end;
  328. Procedure TUrl.Setcreated(AIndex : Integer; const AValue : String);
  329. begin
  330. If (Fcreated=AValue) then exit;
  331. Fcreated:=AValue;
  332. MarkPropertyChanged(AIndex);
  333. end;
  334. Procedure TUrl.Setid(AIndex : Integer; const AValue : String);
  335. begin
  336. If (Fid=AValue) then exit;
  337. Fid:=AValue;
  338. MarkPropertyChanged(AIndex);
  339. end;
  340. Procedure TUrl.Setkind(AIndex : Integer; const AValue : String);
  341. begin
  342. If (Fkind=AValue) then exit;
  343. Fkind:=AValue;
  344. MarkPropertyChanged(AIndex);
  345. end;
  346. Procedure TUrl.SetlongUrl(AIndex : Integer; const AValue : String);
  347. begin
  348. If (FlongUrl=AValue) then exit;
  349. FlongUrl:=AValue;
  350. MarkPropertyChanged(AIndex);
  351. end;
  352. Procedure TUrl.Setstatus(AIndex : Integer; const AValue : String);
  353. begin
  354. If (Fstatus=AValue) then exit;
  355. Fstatus:=AValue;
  356. MarkPropertyChanged(AIndex);
  357. end;
  358. { --------------------------------------------------------------------
  359. TUrlHistory
  360. --------------------------------------------------------------------}
  361. Procedure TUrlHistory.Setitems(AIndex : Integer; const AValue : TUrlHistoryTypeitemsArray);
  362. begin
  363. If (Fitems=AValue) then exit;
  364. Fitems:=AValue;
  365. MarkPropertyChanged(AIndex);
  366. end;
  367. Procedure TUrlHistory.SetitemsPerPage(AIndex : Integer; const AValue : integer);
  368. begin
  369. If (FitemsPerPage=AValue) then exit;
  370. FitemsPerPage:=AValue;
  371. MarkPropertyChanged(AIndex);
  372. end;
  373. Procedure TUrlHistory.Setkind(AIndex : Integer; const AValue : String);
  374. begin
  375. If (Fkind=AValue) then exit;
  376. Fkind:=AValue;
  377. MarkPropertyChanged(AIndex);
  378. end;
  379. Procedure TUrlHistory.SetnextPageToken(AIndex : Integer; const AValue : String);
  380. begin
  381. If (FnextPageToken=AValue) then exit;
  382. FnextPageToken:=AValue;
  383. MarkPropertyChanged(AIndex);
  384. end;
  385. Procedure TUrlHistory.SettotalItems(AIndex : Integer; const AValue : integer);
  386. begin
  387. If (FtotalItems=AValue) then exit;
  388. FtotalItems:=AValue;
  389. MarkPropertyChanged(AIndex);
  390. end;
  391. //2.6.4. bug workaround
  392. {$IFDEF VER2_6}
  393. Procedure TUrlHistory.SetArrayLength(Const AName : String; ALength : Longint);
  394. begin
  395. Case AName of
  396. 'items' : SetLength(Fitems,ALength);
  397. else
  398. Inherited SetArrayLength(AName,ALength);
  399. end;
  400. end;
  401. {$ENDIF VER2_6}
  402. { --------------------------------------------------------------------
  403. TUrlResource
  404. --------------------------------------------------------------------}
  405. Class Function TUrlResource.ResourceName : String;
  406. begin
  407. Result:='url';
  408. end;
  409. Class Function TUrlResource.DefaultAPI : TGoogleAPIClass;
  410. begin
  411. Result:=TurlshortenerAPI;
  412. end;
  413. Function TUrlResource.Get(AQuery : string = '') : TUrl;
  414. Const
  415. _HTTPMethod = 'GET';
  416. _Path = 'url';
  417. _Methodid = 'urlshortener.url.get';
  418. begin
  419. Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TUrl) as TUrl;
  420. end;
  421. Function TUrlResource.Get(AQuery : TUrlgetOptions) : TUrl;
  422. Var
  423. _Q : String;
  424. begin
  425. _Q:='';
  426. AddToQuery(_Q,'projection',AQuery.projection);
  427. AddToQuery(_Q,'shortUrl',AQuery.shortUrl);
  428. Result:=Get(_Q);
  429. end;
  430. Function TUrlResource.Insert(aUrl : TUrl) : TUrl;
  431. Const
  432. _HTTPMethod = 'POST';
  433. _Path = 'url';
  434. _Methodid = 'urlshortener.url.insert';
  435. begin
  436. Result:=ServiceCall(_HTTPMethod,_Path,'',aUrl,TUrl) as TUrl;
  437. end;
  438. Function TUrlResource.List(AQuery : string = '') : TUrlHistory;
  439. Const
  440. _HTTPMethod = 'GET';
  441. _Path = 'url/history';
  442. _Methodid = 'urlshortener.url.list';
  443. begin
  444. Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TUrlHistory) as TUrlHistory;
  445. end;
  446. Function TUrlResource.List(AQuery : TUrllistOptions) : TUrlHistory;
  447. Var
  448. _Q : String;
  449. begin
  450. _Q:='';
  451. AddToQuery(_Q,'projection',AQuery.projection);
  452. AddToQuery(_Q,'start-token',AQuery.starttoken);
  453. Result:=List(_Q);
  454. end;
  455. { --------------------------------------------------------------------
  456. TUrlshortenerAPI
  457. --------------------------------------------------------------------}
  458. Class Function TUrlshortenerAPI.APIName : String;
  459. begin
  460. Result:='urlshortener';
  461. end;
  462. Class Function TUrlshortenerAPI.APIVersion : String;
  463. begin
  464. Result:='v1';
  465. end;
  466. Class Function TUrlshortenerAPI.APIRevision : String;
  467. begin
  468. Result:='20150519';
  469. end;
  470. Class Function TUrlshortenerAPI.APIID : String;
  471. begin
  472. Result:='urlshortener:v1';
  473. end;
  474. Class Function TUrlshortenerAPI.APITitle : String;
  475. begin
  476. Result:='URL Shortener API';
  477. end;
  478. Class Function TUrlshortenerAPI.APIDescription : String;
  479. begin
  480. Result:='Lets you create, inspect, and manage goo.gl short URLs';
  481. end;
  482. Class Function TUrlshortenerAPI.APIOwnerDomain : String;
  483. begin
  484. Result:='google.com';
  485. end;
  486. Class Function TUrlshortenerAPI.APIOwnerName : String;
  487. begin
  488. Result:='Google';
  489. end;
  490. Class Function TUrlshortenerAPI.APIIcon16 : String;
  491. begin
  492. Result:='http://www.google.com/images/icons/product/search-16.gif';
  493. end;
  494. Class Function TUrlshortenerAPI.APIIcon32 : String;
  495. begin
  496. Result:='http://www.google.com/images/icons/product/search-32.gif';
  497. end;
  498. Class Function TUrlshortenerAPI.APIdocumentationLink : String;
  499. begin
  500. Result:='https://developers.google.com/url-shortener/v1/getting_started';
  501. end;
  502. Class Function TUrlshortenerAPI.APIrootUrl : string;
  503. begin
  504. Result:='https://www.googleapis.com/';
  505. end;
  506. Class Function TUrlshortenerAPI.APIbasePath : string;
  507. begin
  508. Result:='/urlshortener/v1/';
  509. end;
  510. Class Function TUrlshortenerAPI.APIbaseURL : String;
  511. begin
  512. Result:='https://www.googleapis.com/urlshortener/v1/';
  513. end;
  514. Class Function TUrlshortenerAPI.APIProtocol : string;
  515. begin
  516. Result:='rest';
  517. end;
  518. Class Function TUrlshortenerAPI.APIservicePath : string;
  519. begin
  520. Result:='urlshortener/v1/';
  521. end;
  522. Class Function TUrlshortenerAPI.APIbatchPath : String;
  523. begin
  524. Result:='batch';
  525. end;
  526. Class Function TUrlshortenerAPI.APIAuthScopes : TScopeInfoArray;
  527. begin
  528. SetLength(Result,1);
  529. Result[0].Name:='https://www.googleapis.com/auth/urlshortener';
  530. Result[0].Description:='Manage your goo.gl short URLs';
  531. end;
  532. Class Function TUrlshortenerAPI.APINeedsAuth : Boolean;
  533. begin
  534. Result:=True;
  535. end;
  536. Class Procedure TUrlshortenerAPI.RegisterAPIResources;
  537. begin
  538. TAnalyticsSnapshot.RegisterObject;
  539. TAnalyticsSummary.RegisterObject;
  540. TStringCount.RegisterObject;
  541. TUrl.RegisterObject;
  542. TUrlHistory.RegisterObject;
  543. end;
  544. Function TUrlshortenerAPI.GetUrlInstance : TUrlResource;
  545. begin
  546. if (FUrlInstance=Nil) then
  547. FUrlInstance:=CreateUrlResource;
  548. Result:=FUrlInstance;
  549. end;
  550. Function TUrlshortenerAPI.CreateUrlResource : TUrlResource;
  551. begin
  552. Result:=CreateUrlResource(Self);
  553. end;
  554. Function TUrlshortenerAPI.CreateUrlResource(AOwner : TComponent) : TUrlResource;
  555. begin
  556. Result:=TUrlResource.Create(AOwner);
  557. Result.API:=Self.API;
  558. end;
  559. initialization
  560. TUrlshortenerAPI.RegisterAPI;
  561. end.