Repository URL to install this package:
|
Version:
3.2.0 ▾
|
unit googlekgsearch;
{$MODE objfpc}
{$H+}
interface
uses sysutils, classes, googleservice, restbase, googlebase;
type
//Top-level schema types
TSearchResponse = Class;
TSearchResponseArray = Array of TSearchResponse;
//Anonymous types, using auto-generated names
{ --------------------------------------------------------------------
TSearchResponse
--------------------------------------------------------------------}
TSearchResponse = Class(TGoogleBaseObject)
Private
Fcontext : TJSONSchema;
F_type : TJSONSchema;
FitemListElement : TTJSONSchemaArray;
Protected
Class Function ExportPropertyName(Const AName : String) : string; override;
//Property setters
Procedure Setcontext(AIndex : Integer; const AValue : TJSONSchema); virtual;
Procedure Set_type(AIndex : Integer; const AValue : TJSONSchema); virtual;
Procedure SetitemListElement(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
//2.6.4. bug workaround
{$IFDEF VER2_6}
Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
{$ENDIF VER2_6}
Public
Published
Property context : TJSONSchema Index 0 Read Fcontext Write Setcontext;
Property _type : TJSONSchema Index 8 Read F_type Write Set_type;
Property itemListElement : TTJSONSchemaArray Index 16 Read FitemListElement Write SetitemListElement;
end;
TSearchResponseClass = Class of TSearchResponse;
{ --------------------------------------------------------------------
TEntitiesResource
--------------------------------------------------------------------}
//Optional query Options for TEntitiesResource, method Search
TEntitiesSearchOptions = Record
query : String;
ids : String;
languages : String;
types : String;
indent : boolean;
prefix : boolean;
limit : integer;
end;
TEntitiesResource = Class(TGoogleResource)
Public
Class Function ResourceName : String; override;
Class Function DefaultAPI : TGoogleAPIClass; override;
Function Search(AQuery : string = '') : TSearchResponse;
Function Search(AQuery : TEntitiessearchOptions) : TSearchResponse;
end;
{ --------------------------------------------------------------------
TKgsearchAPI
--------------------------------------------------------------------}
TKgsearchAPI = Class(TGoogleAPI)
Private
FEntitiesInstance : TEntitiesResource;
Function GetEntitiesInstance : TEntitiesResource;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 CreateEntitiesResource(AOwner : TComponent) : TEntitiesResource;virtual;overload;
Function CreateEntitiesResource : TEntitiesResource;virtual;overload;
//Add default on-demand instances for resources
Property EntitiesResource : TEntitiesResource Read GetEntitiesInstance;
end;
implementation
{ --------------------------------------------------------------------
TSearchResponse
--------------------------------------------------------------------}
Procedure TSearchResponse.Setcontext(AIndex : Integer; const AValue : TJSONSchema);
begin
If (Fcontext=AValue) then exit;
Fcontext:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TSearchResponse.Set_type(AIndex : Integer; const AValue : TJSONSchema);
begin
If (F_type=AValue) then exit;
F_type:=AValue;
MarkPropertyChanged(AIndex);
end;
Procedure TSearchResponse.SetitemListElement(AIndex : Integer; const AValue : TTJSONSchemaArray);
begin
If (FitemListElement=AValue) then exit;
FitemListElement:=AValue;
MarkPropertyChanged(AIndex);
end;
Class Function TSearchResponse.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 TSearchResponse.SetArrayLength(Const AName : String; ALength : Longint);
begin
Case AName of
'itemlistelement' : SetLength(FitemListElement,ALength);
else
Inherited SetArrayLength(AName,ALength);
end;
end;
{$ENDIF VER2_6}
{ --------------------------------------------------------------------
TEntitiesResource
--------------------------------------------------------------------}
Class Function TEntitiesResource.ResourceName : String;
begin
Result:='entities';
end;
Class Function TEntitiesResource.DefaultAPI : TGoogleAPIClass;
begin
Result:=TkgsearchAPI;
end;
Function TEntitiesResource.Search(AQuery : string = '') : TSearchResponse;
Const
_HTTPMethod = 'GET';
_Path = 'v1/entities:search';
_Methodid = 'kgsearch.entities.search';
begin
Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TSearchResponse) as TSearchResponse;
end;
Function TEntitiesResource.Search(AQuery : TEntitiessearchOptions) : TSearchResponse;
Var
_Q : String;
begin
_Q:='';
AddToQuery(_Q,'query',AQuery.query);
AddToQuery(_Q,'ids',AQuery.ids);
AddToQuery(_Q,'languages',AQuery.languages);
AddToQuery(_Q,'types',AQuery.types);
AddToQuery(_Q,'indent',AQuery.indent);
AddToQuery(_Q,'prefix',AQuery.prefix);
AddToQuery(_Q,'limit',AQuery.limit);
Result:=Search(_Q);
end;
{ --------------------------------------------------------------------
TKgsearchAPI
--------------------------------------------------------------------}
Class Function TKgsearchAPI.APIName : String;
begin
Result:='kgsearch';
end;
Class Function TKgsearchAPI.APIVersion : String;
begin
Result:='v1';
end;
Class Function TKgsearchAPI.APIRevision : String;
begin
Result:='20151215';
end;
Class Function TKgsearchAPI.APIID : String;
begin
Result:='kgsearch:v1';
end;
Class Function TKgsearchAPI.APITitle : String;
begin
Result:='Knowledge Graph Search API';
end;
Class Function TKgsearchAPI.APIDescription : String;
begin
Result:='Knowledge Graph Search API allows developers to search the Google Knowledge Graph for entities.';
end;
Class Function TKgsearchAPI.APIOwnerDomain : String;
begin
Result:='google.com';
end;
Class Function TKgsearchAPI.APIOwnerName : String;
begin
Result:='Google';
end;
Class Function TKgsearchAPI.APIIcon16 : String;
begin
Result:='http://www.google.com/images/icons/product/search-16.gif';
end;
Class Function TKgsearchAPI.APIIcon32 : String;
begin
Result:='http://www.google.com/images/icons/product/search-32.gif';
end;
Class Function TKgsearchAPI.APIdocumentationLink : String;
begin
Result:='https://developers.google.com/knowledge-graph/';
end;
Class Function TKgsearchAPI.APIrootUrl : string;
begin
Result:='https://kgsearch.googleapis.com/';
end;
Class Function TKgsearchAPI.APIbasePath : string;
begin
Result:='';
end;
Class Function TKgsearchAPI.APIbaseURL : String;
begin
Result:='https://kgsearch.googleapis.com/';
end;
Class Function TKgsearchAPI.APIProtocol : string;
begin
Result:='rest';
end;
Class Function TKgsearchAPI.APIservicePath : string;
begin
Result:='';
end;
Class Function TKgsearchAPI.APIbatchPath : String;
begin
Result:='batch';
end;
Class Function TKgsearchAPI.APIAuthScopes : TScopeInfoArray;
begin
SetLength(Result,0);
end;
Class Function TKgsearchAPI.APINeedsAuth : Boolean;
begin
Result:=False;
end;
Class Procedure TKgsearchAPI.RegisterAPIResources;
begin
TSearchResponse.RegisterObject;
end;
Function TKgsearchAPI.GetEntitiesInstance : TEntitiesResource;
begin
if (FEntitiesInstance=Nil) then
FEntitiesInstance:=CreateEntitiesResource;
Result:=FEntitiesInstance;
end;
Function TKgsearchAPI.CreateEntitiesResource : TEntitiesResource;
begin
Result:=CreateEntitiesResource(Self);
end;
Function TKgsearchAPI.CreateEntitiesResource(AOwner : TComponent) : TEntitiesResource;
begin
Result:=TEntitiesResource.Create(AOwner);
Result.API:=Self.API;
end;
initialization
TKgsearchAPI.RegisterAPI;
end.