Repository URL to install this package:
|
Version:
3.2.0 ▾
|
unit googlewebfonts;
{$MODE objfpc}
{$H+}
interface
uses sysutils, classes, googleservice, restbase, googlebase;
type
//Top-level schema types
TWebfont = Class;
TWebfontList = Class;
TWebfontArray = Array of TWebfont;
TWebfontListArray = Array of TWebfontList;
//Anonymous types, using auto-generated names
TWebfontTypefiles = Class;
TWebfontListTypeitemsArray = Array of TWebfont;
{ --------------------------------------------------------------------
TWebfontTypefiles
--------------------------------------------------------------------}
TWebfontTypefiles = Class(TGoogleBaseObject)
Private
Protected
//Property setters
Public
Class Function AllowAdditionalProperties : Boolean; override;
Published
end;
TWebfontTypefilesClass = Class of TWebfontTypefiles;
{ --------------------------------------------------------------------
TWebfont
--------------------------------------------------------------------}
TWebfont = Class(TGoogleBaseObject)
Private
Fcategory : String;
Ffamily : String;
Ffiles : TWebfontTypefiles;
Fkind : String;
FlastModified : TDate;
Fsubsets : TStringArray;
Fvariants : TStringArray;
Fversion : String;
Protected
//Property setters
Procedure Setcategory(AIndex : Integer; const AValue : String); virtual;
Procedure Setfamily(AIndex : Integer; const AValue : String); virtual;
Procedure Setfiles(AIndex : Integer; const AValue : TWebfontTypefiles); virtual;
Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
Procedure SetlastModified(AIndex : Integer; const AValue : TDate); virtual;
Procedure Setsubsets(AIndex : Integer; const AValue : TStringArray); virtual;
Procedure Setvariants(AIndex : Integer; const AValue : TStringArray); virtual;
Procedure Setversion(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 category : String Index 0 Read Fcategory Write Setcategory;
Property family : String Index 8 Read Ffamily Write Setfamily;
Property files : TWebfontTypefiles Index 16 Read Ffiles Write Setfiles;
Property kind : String Index 24 Read Fkind Write Setkind;
Property lastModified : TDate Index 32 Read FlastModified Write SetlastModified;
Property subsets : TStringArray Index 40 Read Fsubsets Write Setsubsets;
Property variants : TStringArray Index 48 Read Fvariants Write Setvariants;
Property version : String Index 56 Read Fversion Write Setversion;
end;
TWebfontClass = Class of TWebfont;
{ --------------------------------------------------------------------
TWebfontList
--------------------------------------------------------------------}
TWebfontList = Class(TGoogleBaseObject)
Private
Fitems : TWebfontListTypeitemsArray;
Fkind : String;
Protected
//Property setters
Procedure Setitems(AIndex : Integer; const AValue : TWebfontListTypeitemsArray); virtual;
Procedure Setkind(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 items : TWebfontListTypeitemsArray Index 0 Read Fitems Write Setitems;
Property kind : String Index 8 Read Fkind Write Setkind;
end;
TWebfontListClass = Class of TWebfontList;
{ --------------------------------------------------------------------
TWebfontsResource
--------------------------------------------------------------------}
//Optional query Options for TWebfontsResource, method List
TWebfontsListOptions = Record
sort : String;
end;
TWebfontsResource = Class(TGoogleResource)
Public
Class Function ResourceName : String; override;
Class Function DefaultAPI : TGoogleAPIClass; override;
Function List(AQuery : string = '') : TWebfontList;
Function List(AQuery : TWebfontslistOptions) : TWebfontList;
end;
{ --------------------------------------------------------------------
TWebfontsAPI
--------------------------------------------------------------------}
TWebfontsAPI = Class(TGoogleAPI)
Private
FWebfontsInstance : TWebfontsResource;
Function GetWebfontsInstance : TWebfontsResource;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 CreateWebfontsResource(AOwner : TComponent) : TWebfontsResource;virtual;overload;
Function CreateWebfontsResource : TWebfontsResource;virtual;overload;
//Add default on-demand instances for resources
Property WebfontsResource : TWebfontsResource Read GetWebfontsInstance;
end;
implementation
{ --------------------------------------------------------------------
TWebfontTypefiles
--------------------------------------------------------------------}
Class Function TWebfontTypefiles.AllowAdditionalProperties : Boolean;
begin
Result:=True;
end;
{ --------------------------------------------------------------------
TWebfont
--------------------------------------------------------------------}
Procedure TWebfont.Setcategory(AIndex : Integer; const AValue : String);
begin
If (Fcategory=AValue) then exit;
Fcategory:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TWebfont.Setfamily(AIndex : Integer; const AValue : String);
begin
If (Ffamily=AValue) then exit;
Ffamily:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TWebfont.Setfiles(AIndex : Integer; const AValue : TWebfontTypefiles);
begin
If (Ffiles=AValue) then exit;
Ffiles:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TWebfont.Setkind(AIndex : Integer; const AValue : String);
begin
If (Fkind=AValue) then exit;
Fkind:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TWebfont.SetlastModified(AIndex : Integer; const AValue : TDate);
begin
If (FlastModified=AValue) then exit;
FlastModified:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TWebfont.Setsubsets(AIndex : Integer; const AValue : TStringArray);
begin
If (Fsubsets=AValue) then exit;
Fsubsets:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TWebfont.Setvariants(AIndex : Integer; const AValue : TStringArray);
begin
If (Fvariants=AValue) then exit;
Fvariants:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TWebfont.Setversion(AIndex : Integer; const AValue : String);
begin
If (Fversion=AValue) then exit;
Fversion:=AValue;
MarkPropertyChanged(AIndex);
end;
//2.6.4. bug workaround
{$IFDEF VER2_6}
Procedure TWebfont.SetArrayLength(Const AName : String; ALength : Longint);
begin
Case AName of
'subsets' : SetLength(Fsubsets,ALength);
'variants' : SetLength(Fvariants,ALength);
else
Inherited SetArrayLength(AName,ALength);
end;
end;
{$ENDIF VER2_6}
{ --------------------------------------------------------------------
TWebfontList
--------------------------------------------------------------------}
Procedure TWebfontList.Setitems(AIndex : Integer; const AValue : TWebfontListTypeitemsArray);
begin
If (Fitems=AValue) then exit;
Fitems:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TWebfontList.Setkind(AIndex : Integer; const AValue : String);
begin
If (Fkind=AValue) then exit;
Fkind:=AValue;
MarkPropertyChanged(AIndex);
end;
//2.6.4. bug workaround
{$IFDEF VER2_6}
Procedure TWebfontList.SetArrayLength(Const AName : String; ALength : Longint);
begin
Case AName of
'items' : SetLength(Fitems,ALength);
else
Inherited SetArrayLength(AName,ALength);
end;
end;
{$ENDIF VER2_6}
{ --------------------------------------------------------------------
TWebfontsResource
--------------------------------------------------------------------}
Class Function TWebfontsResource.ResourceName : String;
begin
Result:='webfonts';
end;
Class Function TWebfontsResource.DefaultAPI : TGoogleAPIClass;
begin
Result:=TwebfontsAPI;
end;
Function TWebfontsResource.List(AQuery : string = '') : TWebfontList;
Const
_HTTPMethod = 'GET';
_Path = 'webfonts';
_Methodid = 'webfonts.webfonts.list';
begin
Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TWebfontList) as TWebfontList;
end;
Function TWebfontsResource.List(AQuery : TWebfontslistOptions) : TWebfontList;
Var
_Q : String;
begin
_Q:='';
AddToQuery(_Q,'sort',AQuery.sort);
Result:=List(_Q);
end;
{ --------------------------------------------------------------------
TWebfontsAPI
--------------------------------------------------------------------}
Class Function TWebfontsAPI.APIName : String;
begin
Result:='webfonts';
end;
Class Function TWebfontsAPI.APIVersion : String;
begin
Result:='v1';
end;
Class Function TWebfontsAPI.APIRevision : String;
begin
Result:='20160302';
end;
Class Function TWebfontsAPI.APIID : String;
begin
Result:='webfonts:v1';
end;
Class Function TWebfontsAPI.APITitle : String;
begin
Result:='Google Fonts Developer API';
end;
Class Function TWebfontsAPI.APIDescription : String;
begin
Result:='Accesses the metadata for all families served by Google Fonts, providing a list of families currently available (including available styles and a list of supported script subsets).';
end;
Class Function TWebfontsAPI.APIOwnerDomain : String;
begin
Result:='google.com';
end;
Class Function TWebfontsAPI.APIOwnerName : String;
begin
Result:='Google';
end;
Class Function TWebfontsAPI.APIIcon16 : String;
begin
Result:='https://www.google.com/images/icons/feature/font_api-16.png';
end;
Class Function TWebfontsAPI.APIIcon32 : String;
begin
Result:='https://www.google.com/images/icons/feature/font_api-32.gif';
end;
Class Function TWebfontsAPI.APIdocumentationLink : String;
begin
Result:='https://developers.google.com/fonts/docs/developer_api';
end;
Class Function TWebfontsAPI.APIrootUrl : string;
begin
Result:='https://www.googleapis.com/';
end;
Class Function TWebfontsAPI.APIbasePath : string;
begin
Result:='/webfonts/v1/';
end;
Class Function TWebfontsAPI.APIbaseURL : String;
begin
Result:='https://www.googleapis.com/webfonts/v1/';
end;
Class Function TWebfontsAPI.APIProtocol : string;
begin
Result:='rest';
end;
Class Function TWebfontsAPI.APIservicePath : string;
begin
Result:='webfonts/v1/';
end;
Class Function TWebfontsAPI.APIbatchPath : String;
begin
Result:='batch';
end;
Class Function TWebfontsAPI.APIAuthScopes : TScopeInfoArray;
begin
SetLength(Result,0);
end;
Class Function TWebfontsAPI.APINeedsAuth : Boolean;
begin
Result:=False;
end;
Class Procedure TWebfontsAPI.RegisterAPIResources;
begin
TWebfontTypefiles.RegisterObject;
TWebfont.RegisterObject;
TWebfontList.RegisterObject;
end;
Function TWebfontsAPI.GetWebfontsInstance : TWebfontsResource;
begin
if (FWebfontsInstance=Nil) then
FWebfontsInstance:=CreateWebfontsResource;
Result:=FWebfontsInstance;
end;
Function TWebfontsAPI.CreateWebfontsResource : TWebfontsResource;
begin
Result:=CreateWebfontsResource(Self);
end;
Function TWebfontsAPI.CreateWebfontsResource(AOwner : TComponent) : TWebfontsResource;
begin
Result:=TWebfontsResource.Create(AOwner);
Result.API:=Self.API;
end;
initialization
TWebfontsAPI.RegisterAPI;
end.