unit googlepagespeedonline; {$MODE objfpc} {$H+} interface uses sysutils, classes, googleservice, restbase, googlebase; type //Top-level schema types TPagespeedApiFormatStringV2 = Class; TPagespeedApiImageV2 = Class; TResult = Class; TPagespeedApiFormatStringV2Array = Array of TPagespeedApiFormatStringV2; TPagespeedApiImageV2Array = Array of TPagespeedApiImageV2; TResultArray = Array of TResult; //Anonymous types, using auto-generated names TPagespeedApiFormatStringV2TypeargsItemTyperectsItem = Class; TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem = Class; TPagespeedApiFormatStringV2TypeargsItem = Class; TPagespeedApiImageV2Typepage_rect = Class; TResultTypeformattedResultsTyperuleResults = Class; TResultTypeformattedResults = Class; TResultTypepageStats = Class; TResultTyperuleGroups = Class; TResultTypeversion = Class; TPagespeedApiFormatStringV2TypeargsItemTyperectsArray = Array of TPagespeedApiFormatStringV2TypeargsItemTyperectsItem; TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray = Array of TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem; TPagespeedApiFormatStringV2TypeargsArray = Array of TPagespeedApiFormatStringV2TypeargsItem; { -------------------------------------------------------------------- TPagespeedApiFormatStringV2TypeargsItemTyperectsItem --------------------------------------------------------------------} TPagespeedApiFormatStringV2TypeargsItemTyperectsItem = Class(TGoogleBaseObject) Private Fheight : integer; Fleft : integer; Ftop : integer; Fwidth : integer; Protected //Property setters Procedure Setheight(AIndex : Integer; const AValue : integer); virtual; Procedure Setleft(AIndex : Integer; const AValue : integer); virtual; Procedure Settop(AIndex : Integer; const AValue : integer); virtual; Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual; Public Published Property height : integer Index 0 Read Fheight Write Setheight; Property left : integer Index 8 Read Fleft Write Setleft; Property top : integer Index 16 Read Ftop Write Settop; Property width : integer Index 24 Read Fwidth Write Setwidth; end; TPagespeedApiFormatStringV2TypeargsItemTyperectsItemClass = Class of TPagespeedApiFormatStringV2TypeargsItemTyperectsItem; { -------------------------------------------------------------------- TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem --------------------------------------------------------------------} TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem = Class(TGoogleBaseObject) Private Fheight : integer; Fleft : integer; Ftop : integer; Fwidth : integer; Protected //Property setters Procedure Setheight(AIndex : Integer; const AValue : integer); virtual; Procedure Setleft(AIndex : Integer; const AValue : integer); virtual; Procedure Settop(AIndex : Integer; const AValue : integer); virtual; Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual; Public Published Property height : integer Index 0 Read Fheight Write Setheight; Property left : integer Index 8 Read Fleft Write Setleft; Property top : integer Index 16 Read Ftop Write Settop; Property width : integer Index 24 Read Fwidth Write Setwidth; end; TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItemClass = Class of TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem; { -------------------------------------------------------------------- TPagespeedApiFormatStringV2TypeargsItem --------------------------------------------------------------------} TPagespeedApiFormatStringV2TypeargsItem = Class(TGoogleBaseObject) Private Fkey : String; Frects : TPagespeedApiFormatStringV2TypeargsItemTyperectsArray; Fsecondary_rects : TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray; F_type : String; Fvalue : String; Protected Class Function ExportPropertyName(Const AName : String) : string; override; //Property setters Procedure Setkey(AIndex : Integer; const AValue : String); virtual; Procedure Setrects(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsItemTyperectsArray); virtual; Procedure Setsecondary_rects(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray); virtual; Procedure Set_type(AIndex : Integer; const AValue : String); virtual; Procedure Setvalue(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 key : String Index 0 Read Fkey Write Setkey; Property rects : TPagespeedApiFormatStringV2TypeargsItemTyperectsArray Index 8 Read Frects Write Setrects; Property secondary_rects : TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray Index 16 Read Fsecondary_rects Write Setsecondary_rects; Property _type : String Index 24 Read F_type Write Set_type; Property value : String Index 32 Read Fvalue Write Setvalue; end; TPagespeedApiFormatStringV2TypeargsItemClass = Class of TPagespeedApiFormatStringV2TypeargsItem; { -------------------------------------------------------------------- TPagespeedApiFormatStringV2 --------------------------------------------------------------------} TPagespeedApiFormatStringV2 = Class(TGoogleBaseObject) Private Fargs : TPagespeedApiFormatStringV2TypeargsArray; Fformat : String; Protected //Property setters Procedure Setargs(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsArray); virtual; Procedure Setformat(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 args : TPagespeedApiFormatStringV2TypeargsArray Index 0 Read Fargs Write Setargs; Property format : String Index 8 Read Fformat Write Setformat; end; TPagespeedApiFormatStringV2Class = Class of TPagespeedApiFormatStringV2; { -------------------------------------------------------------------- TPagespeedApiImageV2Typepage_rect --------------------------------------------------------------------} TPagespeedApiImageV2Typepage_rect = Class(TGoogleBaseObject) Private Fheight : integer; Fleft : integer; Ftop : integer; Fwidth : integer; Protected //Property setters Procedure Setheight(AIndex : Integer; const AValue : integer); virtual; Procedure Setleft(AIndex : Integer; const AValue : integer); virtual; Procedure Settop(AIndex : Integer; const AValue : integer); virtual; Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual; Public Published Property height : integer Index 0 Read Fheight Write Setheight; Property left : integer Index 8 Read Fleft Write Setleft; Property top : integer Index 16 Read Ftop Write Settop; Property width : integer Index 24 Read Fwidth Write Setwidth; end; TPagespeedApiImageV2Typepage_rectClass = Class of TPagespeedApiImageV2Typepage_rect; { -------------------------------------------------------------------- TPagespeedApiImageV2 --------------------------------------------------------------------} TPagespeedApiImageV2 = Class(TGoogleBaseObject) Private Fdata : String; Fheight : integer; Fkey : String; Fmime_type : String; Fpage_rect : TPagespeedApiImageV2Typepage_rect; Fwidth : integer; Protected //Property setters Procedure Setdata(AIndex : Integer; const AValue : String); virtual; Procedure Setheight(AIndex : Integer; const AValue : integer); virtual; Procedure Setkey(AIndex : Integer; const AValue : String); virtual; Procedure Setmime_type(AIndex : Integer; const AValue : String); virtual; Procedure Setpage_rect(AIndex : Integer; const AValue : TPagespeedApiImageV2Typepage_rect); virtual; Procedure Setwidth(AIndex : Integer; const AValue : integer); virtual; Public Published Property data : String Index 0 Read Fdata Write Setdata; Property height : integer Index 8 Read Fheight Write Setheight; Property key : String Index 16 Read Fkey Write Setkey; Property mime_type : String Index 24 Read Fmime_type Write Setmime_type; Property page_rect : TPagespeedApiImageV2Typepage_rect Index 32 Read Fpage_rect Write Setpage_rect; Property width : integer Index 40 Read Fwidth Write Setwidth; end; TPagespeedApiImageV2Class = Class of TPagespeedApiImageV2; { -------------------------------------------------------------------- TResultTypeformattedResultsTyperuleResults --------------------------------------------------------------------} TResultTypeformattedResultsTyperuleResults = Class(TGoogleBaseObject) Private Protected //Property setters Public Class Function AllowAdditionalProperties : Boolean; override; Published end; TResultTypeformattedResultsTyperuleResultsClass = Class of TResultTypeformattedResultsTyperuleResults; { -------------------------------------------------------------------- TResultTypeformattedResults --------------------------------------------------------------------} TResultTypeformattedResults = Class(TGoogleBaseObject) Private Flocale : String; FruleResults : TResultTypeformattedResultsTyperuleResults; Protected //Property setters Procedure Setlocale(AIndex : Integer; const AValue : String); virtual; Procedure SetruleResults(AIndex : Integer; const AValue : TResultTypeformattedResultsTyperuleResults); virtual; Public Published Property locale : String Index 0 Read Flocale Write Setlocale; Property ruleResults : TResultTypeformattedResultsTyperuleResults Index 8 Read FruleResults Write SetruleResults; end; TResultTypeformattedResultsClass = Class of TResultTypeformattedResults; { -------------------------------------------------------------------- TResultTypepageStats --------------------------------------------------------------------} TResultTypepageStats = Class(TGoogleBaseObject) Private FcssResponseBytes : String; FflashResponseBytes : String; FhtmlResponseBytes : String; FimageResponseBytes : String; FjavascriptResponseBytes : String; FnumberCssResources : integer; FnumberHosts : integer; FnumberJsResources : integer; FnumberResources : integer; FnumberStaticResources : integer; FotherResponseBytes : String; FtextResponseBytes : String; FtotalRequestBytes : String; Protected //Property setters Procedure SetcssResponseBytes(AIndex : Integer; const AValue : String); virtual; Procedure SetflashResponseBytes(AIndex : Integer; const AValue : String); virtual; Procedure SethtmlResponseBytes(AIndex : Integer; const AValue : String); virtual; Procedure SetimageResponseBytes(AIndex : Integer; const AValue : String); virtual; Procedure SetjavascriptResponseBytes(AIndex : Integer; const AValue : String); virtual; Procedure SetnumberCssResources(AIndex : Integer; const AValue : integer); virtual; Procedure SetnumberHosts(AIndex : Integer; const AValue : integer); virtual; Procedure SetnumberJsResources(AIndex : Integer; const AValue : integer); virtual; Procedure SetnumberResources(AIndex : Integer; const AValue : integer); virtual; Procedure SetnumberStaticResources(AIndex : Integer; const AValue : integer); virtual; Procedure SetotherResponseBytes(AIndex : Integer; const AValue : String); virtual; Procedure SettextResponseBytes(AIndex : Integer; const AValue : String); virtual; Procedure SettotalRequestBytes(AIndex : Integer; const AValue : String); virtual; Public Published Property cssResponseBytes : String Index 0 Read FcssResponseBytes Write SetcssResponseBytes; Property flashResponseBytes : String Index 8 Read FflashResponseBytes Write SetflashResponseBytes; Property htmlResponseBytes : String Index 16 Read FhtmlResponseBytes Write SethtmlResponseBytes; Property imageResponseBytes : String Index 24 Read FimageResponseBytes Write SetimageResponseBytes; Property javascriptResponseBytes : String Index 32 Read FjavascriptResponseBytes Write SetjavascriptResponseBytes; Property numberCssResources : integer Index 40 Read FnumberCssResources Write SetnumberCssResources; Property numberHosts : integer Index 48 Read FnumberHosts Write SetnumberHosts; Property numberJsResources : integer Index 56 Read FnumberJsResources Write SetnumberJsResources; Property numberResources : integer Index 64 Read FnumberResources Write SetnumberResources; Property numberStaticResources : integer Index 72 Read FnumberStaticResources Write SetnumberStaticResources; Property otherResponseBytes : String Index 80 Read FotherResponseBytes Write SetotherResponseBytes; Property textResponseBytes : String Index 88 Read FtextResponseBytes Write SettextResponseBytes; Property totalRequestBytes : String Index 96 Read FtotalRequestBytes Write SettotalRequestBytes; end; TResultTypepageStatsClass = Class of TResultTypepageStats; { -------------------------------------------------------------------- TResultTyperuleGroups --------------------------------------------------------------------} TResultTyperuleGroups = Class(TGoogleBaseObject) Private Protected //Property setters Public Class Function AllowAdditionalProperties : Boolean; override; Published end; TResultTyperuleGroupsClass = Class of TResultTyperuleGroups; { -------------------------------------------------------------------- TResultTypeversion --------------------------------------------------------------------} TResultTypeversion = Class(TGoogleBaseObject) Private Fmajor : integer; Fminor : integer; Protected //Property setters Procedure Setmajor(AIndex : Integer; const AValue : integer); virtual; Procedure Setminor(AIndex : Integer; const AValue : integer); virtual; Public Published Property major : integer Index 0 Read Fmajor Write Setmajor; Property minor : integer Index 8 Read Fminor Write Setminor; end; TResultTypeversionClass = Class of TResultTypeversion; { -------------------------------------------------------------------- TResult --------------------------------------------------------------------} TResult = Class(TGoogleBaseObject) Private FformattedResults : TResultTypeformattedResults; Fid : String; FinvalidRules : TStringArray; Fkind : String; FpageStats : TResultTypepageStats; FresponseCode : integer; FruleGroups : TResultTyperuleGroups; Fscreenshot : TPagespeedApiImageV2; Ftitle : String; Fversion : TResultTypeversion; Protected //Property setters Procedure SetformattedResults(AIndex : Integer; const AValue : TResultTypeformattedResults); virtual; Procedure Setid(AIndex : Integer; const AValue : String); virtual; Procedure SetinvalidRules(AIndex : Integer; const AValue : TStringArray); virtual; Procedure Setkind(AIndex : Integer; const AValue : String); virtual; Procedure SetpageStats(AIndex : Integer; const AValue : TResultTypepageStats); virtual; Procedure SetresponseCode(AIndex : Integer; const AValue : integer); virtual; Procedure SetruleGroups(AIndex : Integer; const AValue : TResultTyperuleGroups); virtual; Procedure Setscreenshot(AIndex : Integer; const AValue : TPagespeedApiImageV2); virtual; Procedure Settitle(AIndex : Integer; const AValue : String); virtual; Procedure Setversion(AIndex : Integer; const AValue : TResultTypeversion); virtual; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure SetArrayLength(Const AName : String; ALength : Longint); override; {$ENDIF VER2_6} Public Published Property formattedResults : TResultTypeformattedResults Index 0 Read FformattedResults Write SetformattedResults; Property id : String Index 8 Read Fid Write Setid; Property invalidRules : TStringArray Index 16 Read FinvalidRules Write SetinvalidRules; Property kind : String Index 24 Read Fkind Write Setkind; Property pageStats : TResultTypepageStats Index 32 Read FpageStats Write SetpageStats; Property responseCode : integer Index 40 Read FresponseCode Write SetresponseCode; Property ruleGroups : TResultTyperuleGroups Index 48 Read FruleGroups Write SetruleGroups; Property screenshot : TPagespeedApiImageV2 Index 56 Read Fscreenshot Write Setscreenshot; Property title : String Index 64 Read Ftitle Write Settitle; Property version : TResultTypeversion Index 72 Read Fversion Write Setversion; end; TResultClass = Class of TResult; { -------------------------------------------------------------------- TPagespeedapiResource --------------------------------------------------------------------} //Optional query Options for TPagespeedapiResource, method Runpagespeed TPagespeedapiRunpagespeedOptions = Record filter_third_party_resources : boolean; locale : String; rule : String; screenshot : boolean; strategy : String; url : String; end; TPagespeedapiResource = Class(TGoogleResource) Public Class Function ResourceName : String; override; Class Function DefaultAPI : TGoogleAPIClass; override; Function Runpagespeed(AQuery : string = '') : TResult; Function Runpagespeed(AQuery : TPagespeedapirunpagespeedOptions) : TResult; end; { -------------------------------------------------------------------- TPagespeedonlineAPI --------------------------------------------------------------------} TPagespeedonlineAPI = Class(TGoogleAPI) Private FPagespeedapiInstance : TPagespeedapiResource; Function GetPagespeedapiInstance : TPagespeedapiResource;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 CreatePagespeedapiResource(AOwner : TComponent) : TPagespeedapiResource;virtual;overload; Function CreatePagespeedapiResource : TPagespeedapiResource;virtual;overload; //Add default on-demand instances for resources Property PagespeedapiResource : TPagespeedapiResource Read GetPagespeedapiInstance; end; implementation { -------------------------------------------------------------------- TPagespeedApiFormatStringV2TypeargsItemTyperectsItem --------------------------------------------------------------------} Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setheight(AIndex : Integer; const AValue : integer); begin If (Fheight=AValue) then exit; Fheight:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setleft(AIndex : Integer; const AValue : integer); begin If (Fleft=AValue) then exit; Fleft:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Settop(AIndex : Integer; const AValue : integer); begin If (Ftop=AValue) then exit; Ftop:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.Setwidth(AIndex : Integer; const AValue : integer); begin If (Fwidth=AValue) then exit; Fwidth:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem --------------------------------------------------------------------} Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setheight(AIndex : Integer; const AValue : integer); begin If (Fheight=AValue) then exit; Fheight:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setleft(AIndex : Integer; const AValue : integer); begin If (Fleft=AValue) then exit; Fleft:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Settop(AIndex : Integer; const AValue : integer); begin If (Ftop=AValue) then exit; Ftop:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.Setwidth(AIndex : Integer; const AValue : integer); begin If (Fwidth=AValue) then exit; Fwidth:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TPagespeedApiFormatStringV2TypeargsItem --------------------------------------------------------------------} Procedure TPagespeedApiFormatStringV2TypeargsItem.Setkey(AIndex : Integer; const AValue : String); begin If (Fkey=AValue) then exit; Fkey:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItem.Setrects(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsItemTyperectsArray); begin If (Frects=AValue) then exit; Frects:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItem.Setsecondary_rects(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsArray); begin If (Fsecondary_rects=AValue) then exit; Fsecondary_rects:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItem.Set_type(AIndex : Integer; const AValue : String); begin If (F_type=AValue) then exit; F_type:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2TypeargsItem.Setvalue(AIndex : Integer; const AValue : String); begin If (Fvalue=AValue) then exit; Fvalue:=AValue; MarkPropertyChanged(AIndex); end; Class Function TPagespeedApiFormatStringV2TypeargsItem.ExportPropertyName(Const AName : String) :String; begin Case AName of '_type' : Result:='type'; else Result:=Inherited ExportPropertyName(AName); end; end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TPagespeedApiFormatStringV2TypeargsItem.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'rects' : SetLength(Frects,ALength); 'secondary_rects' : SetLength(Fsecondary_rects,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TPagespeedApiFormatStringV2 --------------------------------------------------------------------} Procedure TPagespeedApiFormatStringV2.Setargs(AIndex : Integer; const AValue : TPagespeedApiFormatStringV2TypeargsArray); begin If (Fargs=AValue) then exit; Fargs:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiFormatStringV2.Setformat(AIndex : Integer; const AValue : String); begin If (Fformat=AValue) then exit; Fformat:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TPagespeedApiFormatStringV2.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'args' : SetLength(Fargs,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TPagespeedApiImageV2Typepage_rect --------------------------------------------------------------------} Procedure TPagespeedApiImageV2Typepage_rect.Setheight(AIndex : Integer; const AValue : integer); begin If (Fheight=AValue) then exit; Fheight:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiImageV2Typepage_rect.Setleft(AIndex : Integer; const AValue : integer); begin If (Fleft=AValue) then exit; Fleft:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiImageV2Typepage_rect.Settop(AIndex : Integer; const AValue : integer); begin If (Ftop=AValue) then exit; Ftop:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiImageV2Typepage_rect.Setwidth(AIndex : Integer; const AValue : integer); begin If (Fwidth=AValue) then exit; Fwidth:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TPagespeedApiImageV2 --------------------------------------------------------------------} Procedure TPagespeedApiImageV2.Setdata(AIndex : Integer; const AValue : String); begin If (Fdata=AValue) then exit; Fdata:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiImageV2.Setheight(AIndex : Integer; const AValue : integer); begin If (Fheight=AValue) then exit; Fheight:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiImageV2.Setkey(AIndex : Integer; const AValue : String); begin If (Fkey=AValue) then exit; Fkey:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiImageV2.Setmime_type(AIndex : Integer; const AValue : String); begin If (Fmime_type=AValue) then exit; Fmime_type:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiImageV2.Setpage_rect(AIndex : Integer; const AValue : TPagespeedApiImageV2Typepage_rect); begin If (Fpage_rect=AValue) then exit; Fpage_rect:=AValue; MarkPropertyChanged(AIndex); end; Procedure TPagespeedApiImageV2.Setwidth(AIndex : Integer; const AValue : integer); begin If (Fwidth=AValue) then exit; Fwidth:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TResultTypeformattedResultsTyperuleResults --------------------------------------------------------------------} Class Function TResultTypeformattedResultsTyperuleResults.AllowAdditionalProperties : Boolean; begin Result:=True; end; { -------------------------------------------------------------------- TResultTypeformattedResults --------------------------------------------------------------------} Procedure TResultTypeformattedResults.Setlocale(AIndex : Integer; const AValue : String); begin If (Flocale=AValue) then exit; Flocale:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypeformattedResults.SetruleResults(AIndex : Integer; const AValue : TResultTypeformattedResultsTyperuleResults); begin If (FruleResults=AValue) then exit; FruleResults:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TResultTypepageStats --------------------------------------------------------------------} Procedure TResultTypepageStats.SetcssResponseBytes(AIndex : Integer; const AValue : String); begin If (FcssResponseBytes=AValue) then exit; FcssResponseBytes:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetflashResponseBytes(AIndex : Integer; const AValue : String); begin If (FflashResponseBytes=AValue) then exit; FflashResponseBytes:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SethtmlResponseBytes(AIndex : Integer; const AValue : String); begin If (FhtmlResponseBytes=AValue) then exit; FhtmlResponseBytes:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetimageResponseBytes(AIndex : Integer; const AValue : String); begin If (FimageResponseBytes=AValue) then exit; FimageResponseBytes:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetjavascriptResponseBytes(AIndex : Integer; const AValue : String); begin If (FjavascriptResponseBytes=AValue) then exit; FjavascriptResponseBytes:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetnumberCssResources(AIndex : Integer; const AValue : integer); begin If (FnumberCssResources=AValue) then exit; FnumberCssResources:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetnumberHosts(AIndex : Integer; const AValue : integer); begin If (FnumberHosts=AValue) then exit; FnumberHosts:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetnumberJsResources(AIndex : Integer; const AValue : integer); begin If (FnumberJsResources=AValue) then exit; FnumberJsResources:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetnumberResources(AIndex : Integer; const AValue : integer); begin If (FnumberResources=AValue) then exit; FnumberResources:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetnumberStaticResources(AIndex : Integer; const AValue : integer); begin If (FnumberStaticResources=AValue) then exit; FnumberStaticResources:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SetotherResponseBytes(AIndex : Integer; const AValue : String); begin If (FotherResponseBytes=AValue) then exit; FotherResponseBytes:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SettextResponseBytes(AIndex : Integer; const AValue : String); begin If (FtextResponseBytes=AValue) then exit; FtextResponseBytes:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypepageStats.SettotalRequestBytes(AIndex : Integer; const AValue : String); begin If (FtotalRequestBytes=AValue) then exit; FtotalRequestBytes:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TResultTyperuleGroups --------------------------------------------------------------------} Class Function TResultTyperuleGroups.AllowAdditionalProperties : Boolean; begin Result:=True; end; { -------------------------------------------------------------------- TResultTypeversion --------------------------------------------------------------------} Procedure TResultTypeversion.Setmajor(AIndex : Integer; const AValue : integer); begin If (Fmajor=AValue) then exit; Fmajor:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResultTypeversion.Setminor(AIndex : Integer; const AValue : integer); begin If (Fminor=AValue) then exit; Fminor:=AValue; MarkPropertyChanged(AIndex); end; { -------------------------------------------------------------------- TResult --------------------------------------------------------------------} Procedure TResult.SetformattedResults(AIndex : Integer; const AValue : TResultTypeformattedResults); begin If (FformattedResults=AValue) then exit; FformattedResults:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.Setid(AIndex : Integer; const AValue : String); begin If (Fid=AValue) then exit; Fid:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.SetinvalidRules(AIndex : Integer; const AValue : TStringArray); begin If (FinvalidRules=AValue) then exit; FinvalidRules:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.Setkind(AIndex : Integer; const AValue : String); begin If (Fkind=AValue) then exit; Fkind:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.SetpageStats(AIndex : Integer; const AValue : TResultTypepageStats); begin If (FpageStats=AValue) then exit; FpageStats:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.SetresponseCode(AIndex : Integer; const AValue : integer); begin If (FresponseCode=AValue) then exit; FresponseCode:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.SetruleGroups(AIndex : Integer; const AValue : TResultTyperuleGroups); begin If (FruleGroups=AValue) then exit; FruleGroups:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.Setscreenshot(AIndex : Integer; const AValue : TPagespeedApiImageV2); begin If (Fscreenshot=AValue) then exit; Fscreenshot:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.Settitle(AIndex : Integer; const AValue : String); begin If (Ftitle=AValue) then exit; Ftitle:=AValue; MarkPropertyChanged(AIndex); end; Procedure TResult.Setversion(AIndex : Integer; const AValue : TResultTypeversion); begin If (Fversion=AValue) then exit; Fversion:=AValue; MarkPropertyChanged(AIndex); end; //2.6.4. bug workaround {$IFDEF VER2_6} Procedure TResult.SetArrayLength(Const AName : String; ALength : Longint); begin Case AName of 'invalidrules' : SetLength(FinvalidRules,ALength); else Inherited SetArrayLength(AName,ALength); end; end; {$ENDIF VER2_6} { -------------------------------------------------------------------- TPagespeedapiResource --------------------------------------------------------------------} Class Function TPagespeedapiResource.ResourceName : String; begin Result:='pagespeedapi'; end; Class Function TPagespeedapiResource.DefaultAPI : TGoogleAPIClass; begin Result:=TpagespeedonlineAPI; end; Function TPagespeedapiResource.Runpagespeed(AQuery : string = '') : TResult; Const _HTTPMethod = 'GET'; _Path = 'runPagespeed'; _Methodid = 'pagespeedonline.pagespeedapi.runpagespeed'; begin Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TResult) as TResult; end; Function TPagespeedapiResource.Runpagespeed(AQuery : TPagespeedapirunpagespeedOptions) : TResult; Var _Q : String; begin _Q:=''; AddToQuery(_Q,'filter_third_party_resources',AQuery.filter_third_party_resources); AddToQuery(_Q,'locale',AQuery.locale); AddToQuery(_Q,'rule',AQuery.rule); AddToQuery(_Q,'screenshot',AQuery.screenshot); AddToQuery(_Q,'strategy',AQuery.strategy); AddToQuery(_Q,'url',AQuery.url); Result:=Runpagespeed(_Q); end; { -------------------------------------------------------------------- TPagespeedonlineAPI --------------------------------------------------------------------} Class Function TPagespeedonlineAPI.APIName : String; begin Result:='pagespeedonline'; end; Class Function TPagespeedonlineAPI.APIVersion : String; begin Result:='v2'; end; Class Function TPagespeedonlineAPI.APIRevision : String; begin Result:='20160516'; end; Class Function TPagespeedonlineAPI.APIID : String; begin Result:='pagespeedonline:v2'; end; Class Function TPagespeedonlineAPI.APITitle : String; begin Result:='PageSpeed Insights API'; end; Class Function TPagespeedonlineAPI.APIDescription : String; begin Result:='Analyzes the performance of a web page and provides tailored suggestions to make that page faster.'; end; Class Function TPagespeedonlineAPI.APIOwnerDomain : String; begin Result:='google.com'; end; Class Function TPagespeedonlineAPI.APIOwnerName : String; begin Result:='Google'; end; Class Function TPagespeedonlineAPI.APIIcon16 : String; begin Result:='https://www.google.com/images/icons/product/pagespeed-16.png'; end; Class Function TPagespeedonlineAPI.APIIcon32 : String; begin Result:='https://www.google.com/images/icons/product/pagespeed-32.png'; end; Class Function TPagespeedonlineAPI.APIdocumentationLink : String; begin Result:='https://developers.google.com/speed/docs/insights/v2/getting-started'; end; Class Function TPagespeedonlineAPI.APIrootUrl : string; begin Result:='https://www.googleapis.com/'; end; Class Function TPagespeedonlineAPI.APIbasePath : string; begin Result:='/pagespeedonline/v2/'; end; Class Function TPagespeedonlineAPI.APIbaseURL : String; begin Result:='https://www.googleapis.com/pagespeedonline/v2/'; end; Class Function TPagespeedonlineAPI.APIProtocol : string; begin Result:='rest'; end; Class Function TPagespeedonlineAPI.APIservicePath : string; begin Result:='pagespeedonline/v2/'; end; Class Function TPagespeedonlineAPI.APIbatchPath : String; begin Result:='batch'; end; Class Function TPagespeedonlineAPI.APIAuthScopes : TScopeInfoArray; begin SetLength(Result,0); end; Class Function TPagespeedonlineAPI.APINeedsAuth : Boolean; begin Result:=False; end; Class Procedure TPagespeedonlineAPI.RegisterAPIResources; begin TPagespeedApiFormatStringV2TypeargsItemTyperectsItem.RegisterObject; TPagespeedApiFormatStringV2TypeargsItemTypesecondary_rectsItem.RegisterObject; TPagespeedApiFormatStringV2TypeargsItem.RegisterObject; TPagespeedApiFormatStringV2.RegisterObject; TPagespeedApiImageV2Typepage_rect.RegisterObject; TPagespeedApiImageV2.RegisterObject; TResultTypeformattedResultsTyperuleResults.RegisterObject; TResultTypeformattedResults.RegisterObject; TResultTypepageStats.RegisterObject; TResultTyperuleGroups.RegisterObject; TResultTypeversion.RegisterObject; TResult.RegisterObject; end; Function TPagespeedonlineAPI.GetPagespeedapiInstance : TPagespeedapiResource; begin if (FPagespeedapiInstance=Nil) then FPagespeedapiInstance:=CreatePagespeedapiResource; Result:=FPagespeedapiInstance; end; Function TPagespeedonlineAPI.CreatePagespeedapiResource : TPagespeedapiResource; begin Result:=CreatePagespeedapiResource(Self); end; Function TPagespeedonlineAPI.CreatePagespeedapiResource(AOwner : TComponent) : TPagespeedapiResource; begin Result:=TPagespeedapiResource.Create(AOwner); Result.API:=Self.API; end; initialization TPagespeedonlineAPI.RegisterAPI; end.