123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786 |
- unit googleurlshortener;
- {$MODE objfpc}
- {$H+}
- interface
- uses sysutils, classes, googleservice, restbase, googlebase;
- type
-
- //Top-level schema types
- TAnalyticsSnapshot = Class;
- TAnalyticsSummary = Class;
- TStringCount = Class;
- TUrl = Class;
- TUrlHistory = Class;
- TAnalyticsSnapshotArray = Array of TAnalyticsSnapshot;
- TAnalyticsSummaryArray = Array of TAnalyticsSummary;
- TStringCountArray = Array of TStringCount;
- TUrlArray = Array of TUrl;
- TUrlHistoryArray = Array of TUrlHistory;
- //Anonymous types, using auto-generated names
- TAnalyticsSnapshotTypebrowsersArray = Array of TStringCount;
- TAnalyticsSnapshotTypecountriesArray = Array of TStringCount;
- TAnalyticsSnapshotTypeplatformsArray = Array of TStringCount;
- TAnalyticsSnapshotTypereferrersArray = Array of TStringCount;
- TUrlHistoryTypeitemsArray = Array of TUrl;
-
- { --------------------------------------------------------------------
- TAnalyticsSnapshot
- --------------------------------------------------------------------}
-
- TAnalyticsSnapshot = Class(TGoogleBaseObject)
- Private
- Fbrowsers : TAnalyticsSnapshotTypebrowsersArray;
- Fcountries : TAnalyticsSnapshotTypecountriesArray;
- FlongUrlClicks : String;
- Fplatforms : TAnalyticsSnapshotTypeplatformsArray;
- Freferrers : TAnalyticsSnapshotTypereferrersArray;
- FshortUrlClicks : String;
- Protected
- //Property setters
- Procedure Setbrowsers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypebrowsersArray); virtual;
- Procedure Setcountries(AIndex : Integer; const AValue : TAnalyticsSnapshotTypecountriesArray); virtual;
- Procedure SetlongUrlClicks(AIndex : Integer; const AValue : String); virtual;
- Procedure Setplatforms(AIndex : Integer; const AValue : TAnalyticsSnapshotTypeplatformsArray); virtual;
- Procedure Setreferrers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypereferrersArray); virtual;
- Procedure SetshortUrlClicks(AIndex : Integer; const AValue : String); virtual;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
- {$ENDIF VER2_6}
- Public
- Published
- Property browsers : TAnalyticsSnapshotTypebrowsersArray Index 0 Read Fbrowsers Write Setbrowsers;
- Property countries : TAnalyticsSnapshotTypecountriesArray Index 8 Read Fcountries Write Setcountries;
- Property longUrlClicks : String Index 16 Read FlongUrlClicks Write SetlongUrlClicks;
- Property platforms : TAnalyticsSnapshotTypeplatformsArray Index 24 Read Fplatforms Write Setplatforms;
- Property referrers : TAnalyticsSnapshotTypereferrersArray Index 32 Read Freferrers Write Setreferrers;
- Property shortUrlClicks : String Index 40 Read FshortUrlClicks Write SetshortUrlClicks;
- end;
- TAnalyticsSnapshotClass = Class of TAnalyticsSnapshot;
-
- { --------------------------------------------------------------------
- TAnalyticsSummary
- --------------------------------------------------------------------}
-
- TAnalyticsSummary = Class(TGoogleBaseObject)
- Private
- FallTime : TAnalyticsSnapshot;
- Fday : TAnalyticsSnapshot;
- Fmonth : TAnalyticsSnapshot;
- FtwoHours : TAnalyticsSnapshot;
- Fweek : TAnalyticsSnapshot;
- Protected
- //Property setters
- Procedure SetallTime(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
- Procedure Setday(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
- Procedure Setmonth(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
- Procedure SettwoHours(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
- Procedure Setweek(AIndex : Integer; const AValue : TAnalyticsSnapshot); virtual;
- Public
- Published
- Property allTime : TAnalyticsSnapshot Index 0 Read FallTime Write SetallTime;
- Property day : TAnalyticsSnapshot Index 8 Read Fday Write Setday;
- Property month : TAnalyticsSnapshot Index 16 Read Fmonth Write Setmonth;
- Property twoHours : TAnalyticsSnapshot Index 24 Read FtwoHours Write SettwoHours;
- Property week : TAnalyticsSnapshot Index 32 Read Fweek Write Setweek;
- end;
- TAnalyticsSummaryClass = Class of TAnalyticsSummary;
-
- { --------------------------------------------------------------------
- TStringCount
- --------------------------------------------------------------------}
-
- TStringCount = Class(TGoogleBaseObject)
- Private
- Fcount : String;
- Fid : String;
- Protected
- //Property setters
- Procedure Setcount(AIndex : Integer; const AValue : String); virtual;
- Procedure Setid(AIndex : Integer; const AValue : String); virtual;
- Public
- Published
- Property count : String Index 0 Read Fcount Write Setcount;
- Property id : String Index 8 Read Fid Write Setid;
- end;
- TStringCountClass = Class of TStringCount;
-
- { --------------------------------------------------------------------
- TUrl
- --------------------------------------------------------------------}
-
- TUrl = Class(TGoogleBaseObject)
- Private
- Fanalytics : TAnalyticsSummary;
- Fcreated : String;
- Fid : String;
- Fkind : String;
- FlongUrl : String;
- Fstatus : String;
- Protected
- //Property setters
- Procedure Setanalytics(AIndex : Integer; const AValue : TAnalyticsSummary); virtual;
- Procedure Setcreated(AIndex : Integer; const AValue : String); virtual;
- Procedure Setid(AIndex : Integer; const AValue : String); virtual;
- Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
- Procedure SetlongUrl(AIndex : Integer; const AValue : String); virtual;
- Procedure Setstatus(AIndex : Integer; const AValue : String); virtual;
- Public
- Published
- Property analytics : TAnalyticsSummary Index 0 Read Fanalytics Write Setanalytics;
- Property created : String Index 8 Read Fcreated Write Setcreated;
- Property id : String Index 16 Read Fid Write Setid;
- Property kind : String Index 24 Read Fkind Write Setkind;
- Property longUrl : String Index 32 Read FlongUrl Write SetlongUrl;
- Property status : String Index 40 Read Fstatus Write Setstatus;
- end;
- TUrlClass = Class of TUrl;
-
- { --------------------------------------------------------------------
- TUrlHistory
- --------------------------------------------------------------------}
-
- TUrlHistory = Class(TGoogleBaseObject)
- Private
- Fitems : TUrlHistoryTypeitemsArray;
- FitemsPerPage : integer;
- Fkind : String;
- FnextPageToken : String;
- FtotalItems : integer;
- Protected
- //Property setters
- Procedure Setitems(AIndex : Integer; const AValue : TUrlHistoryTypeitemsArray); virtual;
- Procedure SetitemsPerPage(AIndex : Integer; const AValue : integer); virtual;
- Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
- Procedure SetnextPageToken(AIndex : Integer; const AValue : String); virtual;
- Procedure SettotalItems(AIndex : Integer; const AValue : integer); virtual;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
- {$ENDIF VER2_6}
- Public
- Published
- Property items : TUrlHistoryTypeitemsArray Index 0 Read Fitems Write Setitems;
- Property itemsPerPage : integer Index 8 Read FitemsPerPage Write SetitemsPerPage;
- Property kind : String Index 16 Read Fkind Write Setkind;
- Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
- Property totalItems : integer Index 32 Read FtotalItems Write SettotalItems;
- end;
- TUrlHistoryClass = Class of TUrlHistory;
-
- { --------------------------------------------------------------------
- TUrlResource
- --------------------------------------------------------------------}
-
-
- //Optional query Options for TUrlResource, method Get
-
- TUrlGetOptions = Record
- projection : String;
- shortUrl : String;
- end;
-
-
- //Optional query Options for TUrlResource, method List
-
- TUrlListOptions = Record
- projection : String;
- starttoken : String;
- end;
-
- TUrlResource = Class(TGoogleResource)
- Public
- Class Function ResourceName : String; override;
- Class Function DefaultAPI : TGoogleAPIClass; override;
- Function Get(AQuery : string = '') : TUrl;
- Function Get(AQuery : TUrlgetOptions) : TUrl;
- Function Insert(aUrl : TUrl) : TUrl;
- Function List(AQuery : string = '') : TUrlHistory;
- Function List(AQuery : TUrllistOptions) : TUrlHistory;
- end;
-
-
- { --------------------------------------------------------------------
- TUrlshortenerAPI
- --------------------------------------------------------------------}
-
- TUrlshortenerAPI = Class(TGoogleAPI)
- Private
- FUrlInstance : TUrlResource;
- Function GetUrlInstance : TUrlResource;virtual;
- Public
- //Override class functions with API info
- Class Function APIName : String; override;
- Class Function APIVersion : String; override;
- Class Function APIRevision : String; override;
- Class Function APIID : String; override;
- Class Function APITitle : String; override;
- Class Function APIDescription : String; override;
- Class Function APIOwnerDomain : String; override;
- Class Function APIOwnerName : String; override;
- Class Function APIIcon16 : String; override;
- Class Function APIIcon32 : String; override;
- Class Function APIdocumentationLink : String; override;
- Class Function APIrootUrl : string; override;
- Class Function APIbasePath : string;override;
- Class Function APIbaseURL : String;override;
- Class Function APIProtocol : string;override;
- Class Function APIservicePath : string;override;
- Class Function APIbatchPath : String;override;
- Class Function APIAuthScopes : TScopeInfoArray;override;
- Class Function APINeedsAuth : Boolean;override;
- Class Procedure RegisterAPIResources; override;
- //Add create function for resources
- Function CreateUrlResource(AOwner : TComponent) : TUrlResource;virtual;overload;
- Function CreateUrlResource : TUrlResource;virtual;overload;
- //Add default on-demand instances for resources
- Property UrlResource : TUrlResource Read GetUrlInstance;
- end;
- implementation
- { --------------------------------------------------------------------
- TAnalyticsSnapshot
- --------------------------------------------------------------------}
- Procedure TAnalyticsSnapshot.Setbrowsers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypebrowsersArray);
- begin
- If (Fbrowsers=AValue) then exit;
- Fbrowsers:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSnapshot.Setcountries(AIndex : Integer; const AValue : TAnalyticsSnapshotTypecountriesArray);
- begin
- If (Fcountries=AValue) then exit;
- Fcountries:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSnapshot.SetlongUrlClicks(AIndex : Integer; const AValue : String);
- begin
- If (FlongUrlClicks=AValue) then exit;
- FlongUrlClicks:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSnapshot.Setplatforms(AIndex : Integer; const AValue : TAnalyticsSnapshotTypeplatformsArray);
- begin
- If (Fplatforms=AValue) then exit;
- Fplatforms:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSnapshot.Setreferrers(AIndex : Integer; const AValue : TAnalyticsSnapshotTypereferrersArray);
- begin
- If (Freferrers=AValue) then exit;
- Freferrers:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSnapshot.SetshortUrlClicks(AIndex : Integer; const AValue : String);
- begin
- If (FshortUrlClicks=AValue) then exit;
- FshortUrlClicks:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure TAnalyticsSnapshot.SetArrayLength(Const AName : String; ALength : Longint);
- begin
- Case AName of
- 'browsers' : SetLength(Fbrowsers,ALength);
- 'countries' : SetLength(Fcountries,ALength);
- 'platforms' : SetLength(Fplatforms,ALength);
- 'referrers' : SetLength(Freferrers,ALength);
- else
- Inherited SetArrayLength(AName,ALength);
- end;
- end;
- {$ENDIF VER2_6}
- { --------------------------------------------------------------------
- TAnalyticsSummary
- --------------------------------------------------------------------}
- Procedure TAnalyticsSummary.SetallTime(AIndex : Integer; const AValue : TAnalyticsSnapshot);
- begin
- If (FallTime=AValue) then exit;
- FallTime:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSummary.Setday(AIndex : Integer; const AValue : TAnalyticsSnapshot);
- begin
- If (Fday=AValue) then exit;
- Fday:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSummary.Setmonth(AIndex : Integer; const AValue : TAnalyticsSnapshot);
- begin
- If (Fmonth=AValue) then exit;
- Fmonth:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSummary.SettwoHours(AIndex : Integer; const AValue : TAnalyticsSnapshot);
- begin
- If (FtwoHours=AValue) then exit;
- FtwoHours:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TAnalyticsSummary.Setweek(AIndex : Integer; const AValue : TAnalyticsSnapshot);
- begin
- If (Fweek=AValue) then exit;
- Fweek:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- { --------------------------------------------------------------------
- TStringCount
- --------------------------------------------------------------------}
- Procedure TStringCount.Setcount(AIndex : Integer; const AValue : String);
- begin
- If (Fcount=AValue) then exit;
- Fcount:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TStringCount.Setid(AIndex : Integer; const AValue : String);
- begin
- If (Fid=AValue) then exit;
- Fid:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- { --------------------------------------------------------------------
- TUrl
- --------------------------------------------------------------------}
- Procedure TUrl.Setanalytics(AIndex : Integer; const AValue : TAnalyticsSummary);
- begin
- If (Fanalytics=AValue) then exit;
- Fanalytics:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrl.Setcreated(AIndex : Integer; const AValue : String);
- begin
- If (Fcreated=AValue) then exit;
- Fcreated:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrl.Setid(AIndex : Integer; const AValue : String);
- begin
- If (Fid=AValue) then exit;
- Fid:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrl.Setkind(AIndex : Integer; const AValue : String);
- begin
- If (Fkind=AValue) then exit;
- Fkind:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrl.SetlongUrl(AIndex : Integer; const AValue : String);
- begin
- If (FlongUrl=AValue) then exit;
- FlongUrl:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrl.Setstatus(AIndex : Integer; const AValue : String);
- begin
- If (Fstatus=AValue) then exit;
- Fstatus:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- { --------------------------------------------------------------------
- TUrlHistory
- --------------------------------------------------------------------}
- Procedure TUrlHistory.Setitems(AIndex : Integer; const AValue : TUrlHistoryTypeitemsArray);
- begin
- If (Fitems=AValue) then exit;
- Fitems:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrlHistory.SetitemsPerPage(AIndex : Integer; const AValue : integer);
- begin
- If (FitemsPerPage=AValue) then exit;
- FitemsPerPage:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrlHistory.Setkind(AIndex : Integer; const AValue : String);
- begin
- If (Fkind=AValue) then exit;
- Fkind:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrlHistory.SetnextPageToken(AIndex : Integer; const AValue : String);
- begin
- If (FnextPageToken=AValue) then exit;
- FnextPageToken:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TUrlHistory.SettotalItems(AIndex : Integer; const AValue : integer);
- begin
- If (FtotalItems=AValue) then exit;
- FtotalItems:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure TUrlHistory.SetArrayLength(Const AName : String; ALength : Longint);
- begin
- Case AName of
- 'items' : SetLength(Fitems,ALength);
- else
- Inherited SetArrayLength(AName,ALength);
- end;
- end;
- {$ENDIF VER2_6}
- { --------------------------------------------------------------------
- TUrlResource
- --------------------------------------------------------------------}
- Class Function TUrlResource.ResourceName : String;
- begin
- Result:='url';
- end;
- Class Function TUrlResource.DefaultAPI : TGoogleAPIClass;
- begin
- Result:=TurlshortenerAPI;
- end;
- Function TUrlResource.Get(AQuery : string = '') : TUrl;
- Const
- _HTTPMethod = 'GET';
- _Path = 'url';
- _Methodid = 'urlshortener.url.get';
- begin
- Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TUrl) as TUrl;
- end;
- Function TUrlResource.Get(AQuery : TUrlgetOptions) : TUrl;
- Var
- _Q : String;
- begin
- _Q:='';
- AddToQuery(_Q,'projection',AQuery.projection);
- AddToQuery(_Q,'shortUrl',AQuery.shortUrl);
- Result:=Get(_Q);
- end;
- Function TUrlResource.Insert(aUrl : TUrl) : TUrl;
- Const
- _HTTPMethod = 'POST';
- _Path = 'url';
- _Methodid = 'urlshortener.url.insert';
- begin
- Result:=ServiceCall(_HTTPMethod,_Path,'',aUrl,TUrl) as TUrl;
- end;
- Function TUrlResource.List(AQuery : string = '') : TUrlHistory;
- Const
- _HTTPMethod = 'GET';
- _Path = 'url/history';
- _Methodid = 'urlshortener.url.list';
- begin
- Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TUrlHistory) as TUrlHistory;
- end;
- Function TUrlResource.List(AQuery : TUrllistOptions) : TUrlHistory;
- Var
- _Q : String;
- begin
- _Q:='';
- AddToQuery(_Q,'projection',AQuery.projection);
- AddToQuery(_Q,'start-token',AQuery.starttoken);
- Result:=List(_Q);
- end;
- { --------------------------------------------------------------------
- TUrlshortenerAPI
- --------------------------------------------------------------------}
- Class Function TUrlshortenerAPI.APIName : String;
- begin
- Result:='urlshortener';
- end;
- Class Function TUrlshortenerAPI.APIVersion : String;
- begin
- Result:='v1';
- end;
- Class Function TUrlshortenerAPI.APIRevision : String;
- begin
- Result:='20150519';
- end;
- Class Function TUrlshortenerAPI.APIID : String;
- begin
- Result:='urlshortener:v1';
- end;
- Class Function TUrlshortenerAPI.APITitle : String;
- begin
- Result:='URL Shortener API';
- end;
- Class Function TUrlshortenerAPI.APIDescription : String;
- begin
- Result:='Lets you create, inspect, and manage goo.gl short URLs';
- end;
- Class Function TUrlshortenerAPI.APIOwnerDomain : String;
- begin
- Result:='google.com';
- end;
- Class Function TUrlshortenerAPI.APIOwnerName : String;
- begin
- Result:='Google';
- end;
- Class Function TUrlshortenerAPI.APIIcon16 : String;
- begin
- Result:='http://www.google.com/images/icons/product/search-16.gif';
- end;
- Class Function TUrlshortenerAPI.APIIcon32 : String;
- begin
- Result:='http://www.google.com/images/icons/product/search-32.gif';
- end;
- Class Function TUrlshortenerAPI.APIdocumentationLink : String;
- begin
- Result:='https://developers.google.com/url-shortener/v1/getting_started';
- end;
- Class Function TUrlshortenerAPI.APIrootUrl : string;
- begin
- Result:='https://www.googleapis.com/';
- end;
- Class Function TUrlshortenerAPI.APIbasePath : string;
- begin
- Result:='/urlshortener/v1/';
- end;
- Class Function TUrlshortenerAPI.APIbaseURL : String;
- begin
- Result:='https://www.googleapis.com/urlshortener/v1/';
- end;
- Class Function TUrlshortenerAPI.APIProtocol : string;
- begin
- Result:='rest';
- end;
- Class Function TUrlshortenerAPI.APIservicePath : string;
- begin
- Result:='urlshortener/v1/';
- end;
- Class Function TUrlshortenerAPI.APIbatchPath : String;
- begin
- Result:='batch';
- end;
- Class Function TUrlshortenerAPI.APIAuthScopes : TScopeInfoArray;
- begin
- SetLength(Result,1);
- Result[0].Name:='https://www.googleapis.com/auth/urlshortener';
- Result[0].Description:='Manage your goo.gl short URLs';
-
- end;
- Class Function TUrlshortenerAPI.APINeedsAuth : Boolean;
- begin
- Result:=True;
- end;
- Class Procedure TUrlshortenerAPI.RegisterAPIResources;
- begin
- TAnalyticsSnapshot.RegisterObject;
- TAnalyticsSummary.RegisterObject;
- TStringCount.RegisterObject;
- TUrl.RegisterObject;
- TUrlHistory.RegisterObject;
- end;
- Function TUrlshortenerAPI.GetUrlInstance : TUrlResource;
- begin
- if (FUrlInstance=Nil) then
- FUrlInstance:=CreateUrlResource;
- Result:=FUrlInstance;
- end;
- Function TUrlshortenerAPI.CreateUrlResource : TUrlResource;
- begin
- Result:=CreateUrlResource(Self);
- end;
- Function TUrlshortenerAPI.CreateUrlResource(AOwner : TComponent) : TUrlResource;
- begin
- Result:=TUrlResource.Create(AOwner);
- Result.API:=Self.API;
- end;
- initialization
- TUrlshortenerAPI.RegisterAPI;
- end.
|