123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809 |
- unit googlescript;
- {$MODE objfpc}
- {$H+}
- interface
- uses sysutils, classes, googleservice, restbase, googlebase;
- type
-
- //Top-level schema types
- TExecutionRequest = Class;
- TOperation = Class;
- TStatus = Class;
- TExecutionError = Class;
- TScriptStackTraceElement = Class;
- TExecutionResponse = Class;
- TExecutionRequestArray = Array of TExecutionRequest;
- TOperationArray = Array of TOperation;
- TStatusArray = Array of TStatus;
- TExecutionErrorArray = Array of TExecutionError;
- TScriptStackTraceElementArray = Array of TScriptStackTraceElement;
- TExecutionResponseArray = Array of TExecutionResponse;
- //Anonymous types, using auto-generated names
- TOperationTypemetadata = Class;
- TOperationTyperesponse = Class;
- TStatusTypedetailsItem = Class;
- TStatusTypedetailsArray = Array of TStatusTypedetailsItem;
- TExecutionErrorTypescriptStackTraceElementsArray = Array of TScriptStackTraceElement;
-
- { --------------------------------------------------------------------
- TExecutionRequest
- --------------------------------------------------------------------}
-
- TExecutionRequest = Class(TGoogleBaseObject)
- Private
- F_function : String;
- Fparameters : TTJSONSchemaArray;
- FsessionState : String;
- FdevMode : boolean;
- Protected
- Class Function ExportPropertyName(Const AName : String) : string; override;
- //Property setters
- Procedure Set_function(AIndex : Integer; const AValue : String); virtual;
- Procedure Setparameters(AIndex : Integer; const AValue : TTJSONSchemaArray); virtual;
- Procedure SetsessionState(AIndex : Integer; const AValue : String); virtual;
- Procedure SetdevMode(AIndex : Integer; const AValue : boolean); virtual;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
- {$ENDIF VER2_6}
- Public
- Published
- Property _function : String Index 0 Read F_function Write Set_function;
- Property parameters : TTJSONSchemaArray Index 8 Read Fparameters Write Setparameters;
- Property sessionState : String Index 16 Read FsessionState Write SetsessionState;
- Property devMode : boolean Index 24 Read FdevMode Write SetdevMode;
- end;
- TExecutionRequestClass = Class of TExecutionRequest;
-
- { --------------------------------------------------------------------
- TOperationTypemetadata
- --------------------------------------------------------------------}
-
- TOperationTypemetadata = Class(TGoogleBaseObject)
- Private
- Protected
- //Property setters
- Public
- Class Function AllowAdditionalProperties : Boolean; override;
- Published
- end;
- TOperationTypemetadataClass = Class of TOperationTypemetadata;
-
- { --------------------------------------------------------------------
- TOperationTyperesponse
- --------------------------------------------------------------------}
-
- TOperationTyperesponse = Class(TGoogleBaseObject)
- Private
- Protected
- //Property setters
- Public
- Class Function AllowAdditionalProperties : Boolean; override;
- Published
- end;
- TOperationTyperesponseClass = Class of TOperationTyperesponse;
-
- { --------------------------------------------------------------------
- TOperation
- --------------------------------------------------------------------}
-
- TOperation = Class(TGoogleBaseObject)
- Private
- Fname : String;
- Fmetadata : TOperationTypemetadata;
- Fdone : boolean;
- Ferror : TStatus;
- Fresponse : TOperationTyperesponse;
- Protected
- //Property setters
- Procedure Setname(AIndex : Integer; const AValue : String); virtual;
- Procedure Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata); virtual;
- Procedure Setdone(AIndex : Integer; const AValue : boolean); virtual;
- Procedure Seterror(AIndex : Integer; const AValue : TStatus); virtual;
- Procedure Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse); virtual;
- Public
- Published
- Property name : String Index 0 Read Fname Write Setname;
- Property metadata : TOperationTypemetadata Index 8 Read Fmetadata Write Setmetadata;
- Property done : boolean Index 16 Read Fdone Write Setdone;
- Property error : TStatus Index 24 Read Ferror Write Seterror;
- Property response : TOperationTyperesponse Index 32 Read Fresponse Write Setresponse;
- end;
- TOperationClass = Class of TOperation;
-
- { --------------------------------------------------------------------
- TStatusTypedetailsItem
- --------------------------------------------------------------------}
-
- TStatusTypedetailsItem = Class(TGoogleBaseObject)
- Private
- Protected
- //Property setters
- Public
- Class Function AllowAdditionalProperties : Boolean; override;
- Published
- end;
- TStatusTypedetailsItemClass = Class of TStatusTypedetailsItem;
-
- { --------------------------------------------------------------------
- TStatus
- --------------------------------------------------------------------}
-
- TStatus = Class(TGoogleBaseObject)
- Private
- Fcode : integer;
- Fmessage : String;
- Fdetails : TStatusTypedetailsArray;
- Protected
- //Property setters
- Procedure Setcode(AIndex : Integer; const AValue : integer); virtual;
- Procedure Setmessage(AIndex : Integer; const AValue : String); virtual;
- Procedure Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray); virtual;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
- {$ENDIF VER2_6}
- Public
- Published
- Property code : integer Index 0 Read Fcode Write Setcode;
- Property message : String Index 8 Read Fmessage Write Setmessage;
- Property details : TStatusTypedetailsArray Index 16 Read Fdetails Write Setdetails;
- end;
- TStatusClass = Class of TStatus;
-
- { --------------------------------------------------------------------
- TExecutionError
- --------------------------------------------------------------------}
-
- TExecutionError = Class(TGoogleBaseObject)
- Private
- FscriptStackTraceElements : TExecutionErrorTypescriptStackTraceElementsArray;
- FerrorMessage : String;
- FerrorType : String;
- Protected
- //Property setters
- Procedure SetscriptStackTraceElements(AIndex : Integer; const AValue : TExecutionErrorTypescriptStackTraceElementsArray); virtual;
- Procedure SeterrorMessage(AIndex : Integer; const AValue : String); virtual;
- Procedure SeterrorType(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 scriptStackTraceElements : TExecutionErrorTypescriptStackTraceElementsArray Index 0 Read FscriptStackTraceElements Write SetscriptStackTraceElements;
- Property errorMessage : String Index 8 Read FerrorMessage Write SeterrorMessage;
- Property errorType : String Index 16 Read FerrorType Write SeterrorType;
- end;
- TExecutionErrorClass = Class of TExecutionError;
-
- { --------------------------------------------------------------------
- TScriptStackTraceElement
- --------------------------------------------------------------------}
-
- TScriptStackTraceElement = Class(TGoogleBaseObject)
- Private
- F_function : String;
- FlineNumber : integer;
- Protected
- Class Function ExportPropertyName(Const AName : String) : string; override;
- //Property setters
- Procedure Set_function(AIndex : Integer; const AValue : String); virtual;
- Procedure SetlineNumber(AIndex : Integer; const AValue : integer); virtual;
- Public
- Published
- Property _function : String Index 0 Read F_function Write Set_function;
- Property lineNumber : integer Index 8 Read FlineNumber Write SetlineNumber;
- end;
- TScriptStackTraceElementClass = Class of TScriptStackTraceElement;
-
- { --------------------------------------------------------------------
- TExecutionResponse
- --------------------------------------------------------------------}
-
- TExecutionResponse = Class(TGoogleBaseObject)
- Private
- Fresult : TJSONSchema;
- Protected
- //Property setters
- Procedure Setresult(AIndex : Integer; const AValue : TJSONSchema); virtual;
- Public
- Published
- Property result : TJSONSchema Index 0 Read Fresult Write Setresult;
- end;
- TExecutionResponseClass = Class of TExecutionResponse;
-
- { --------------------------------------------------------------------
- TScriptsResource
- --------------------------------------------------------------------}
-
- TScriptsResource = Class(TGoogleResource)
- Public
- Class Function ResourceName : String; override;
- Class Function DefaultAPI : TGoogleAPIClass; override;
- Function Run(scriptId: string; aExecutionRequest : TExecutionRequest) : TOperation;
- end;
-
-
- { --------------------------------------------------------------------
- TScriptAPI
- --------------------------------------------------------------------}
-
- TScriptAPI = Class(TGoogleAPI)
- Private
- FScriptsInstance : TScriptsResource;
- Function GetScriptsInstance : TScriptsResource;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 CreateScriptsResource(AOwner : TComponent) : TScriptsResource;virtual;overload;
- Function CreateScriptsResource : TScriptsResource;virtual;overload;
- //Add default on-demand instances for resources
- Property ScriptsResource : TScriptsResource Read GetScriptsInstance;
- end;
- implementation
- { --------------------------------------------------------------------
- TExecutionRequest
- --------------------------------------------------------------------}
- Procedure TExecutionRequest.Set_function(AIndex : Integer; const AValue : String);
- begin
- If (F_function=AValue) then exit;
- F_function:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TExecutionRequest.Setparameters(AIndex : Integer; const AValue : TTJSONSchemaArray);
- begin
- If (Fparameters=AValue) then exit;
- Fparameters:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TExecutionRequest.SetsessionState(AIndex : Integer; const AValue : String);
- begin
- If (FsessionState=AValue) then exit;
- FsessionState:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TExecutionRequest.SetdevMode(AIndex : Integer; const AValue : boolean);
- begin
- If (FdevMode=AValue) then exit;
- FdevMode:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Class Function TExecutionRequest.ExportPropertyName(Const AName : String) :String;
- begin
- Case AName of
- '_function' : Result:='function';
- else
- Result:=Inherited ExportPropertyName(AName);
- end;
- end;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure TExecutionRequest.SetArrayLength(Const AName : String; ALength : Longint);
- begin
- Case AName of
- 'parameters' : SetLength(Fparameters,ALength);
- else
- Inherited SetArrayLength(AName,ALength);
- end;
- end;
- {$ENDIF VER2_6}
- { --------------------------------------------------------------------
- TOperationTypemetadata
- --------------------------------------------------------------------}
- Class Function TOperationTypemetadata.AllowAdditionalProperties : Boolean;
- begin
- Result:=True;
- end;
- { --------------------------------------------------------------------
- TOperationTyperesponse
- --------------------------------------------------------------------}
- Class Function TOperationTyperesponse.AllowAdditionalProperties : Boolean;
- begin
- Result:=True;
- end;
- { --------------------------------------------------------------------
- TOperation
- --------------------------------------------------------------------}
- Procedure TOperation.Setname(AIndex : Integer; const AValue : String);
- begin
- If (Fname=AValue) then exit;
- Fname:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TOperation.Setmetadata(AIndex : Integer; const AValue : TOperationTypemetadata);
- begin
- If (Fmetadata=AValue) then exit;
- Fmetadata:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TOperation.Setdone(AIndex : Integer; const AValue : boolean);
- begin
- If (Fdone=AValue) then exit;
- Fdone:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TOperation.Seterror(AIndex : Integer; const AValue : TStatus);
- begin
- If (Ferror=AValue) then exit;
- Ferror:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TOperation.Setresponse(AIndex : Integer; const AValue : TOperationTyperesponse);
- begin
- If (Fresponse=AValue) then exit;
- Fresponse:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- { --------------------------------------------------------------------
- TStatusTypedetailsItem
- --------------------------------------------------------------------}
- Class Function TStatusTypedetailsItem.AllowAdditionalProperties : Boolean;
- begin
- Result:=True;
- end;
- { --------------------------------------------------------------------
- TStatus
- --------------------------------------------------------------------}
- Procedure TStatus.Setcode(AIndex : Integer; const AValue : integer);
- begin
- If (Fcode=AValue) then exit;
- Fcode:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TStatus.Setmessage(AIndex : Integer; const AValue : String);
- begin
- If (Fmessage=AValue) then exit;
- Fmessage:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TStatus.Setdetails(AIndex : Integer; const AValue : TStatusTypedetailsArray);
- begin
- If (Fdetails=AValue) then exit;
- Fdetails:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure TStatus.SetArrayLength(Const AName : String; ALength : Longint);
- begin
- Case AName of
- 'details' : SetLength(Fdetails,ALength);
- else
- Inherited SetArrayLength(AName,ALength);
- end;
- end;
- {$ENDIF VER2_6}
- { --------------------------------------------------------------------
- TExecutionError
- --------------------------------------------------------------------}
- Procedure TExecutionError.SetscriptStackTraceElements(AIndex : Integer; const AValue : TExecutionErrorTypescriptStackTraceElementsArray);
- begin
- If (FscriptStackTraceElements=AValue) then exit;
- FscriptStackTraceElements:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TExecutionError.SeterrorMessage(AIndex : Integer; const AValue : String);
- begin
- If (FerrorMessage=AValue) then exit;
- FerrorMessage:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TExecutionError.SeterrorType(AIndex : Integer; const AValue : String);
- begin
- If (FerrorType=AValue) then exit;
- FerrorType:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- //2.6.4. bug workaround
- {$IFDEF VER2_6}
- Procedure TExecutionError.SetArrayLength(Const AName : String; ALength : Longint);
- begin
- Case AName of
- 'scriptstacktraceelements' : SetLength(FscriptStackTraceElements,ALength);
- else
- Inherited SetArrayLength(AName,ALength);
- end;
- end;
- {$ENDIF VER2_6}
- { --------------------------------------------------------------------
- TScriptStackTraceElement
- --------------------------------------------------------------------}
- Procedure TScriptStackTraceElement.Set_function(AIndex : Integer; const AValue : String);
- begin
- If (F_function=AValue) then exit;
- F_function:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Procedure TScriptStackTraceElement.SetlineNumber(AIndex : Integer; const AValue : integer);
- begin
- If (FlineNumber=AValue) then exit;
- FlineNumber:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- Class Function TScriptStackTraceElement.ExportPropertyName(Const AName : String) :String;
- begin
- Case AName of
- '_function' : Result:='function';
- else
- Result:=Inherited ExportPropertyName(AName);
- end;
- end;
- { --------------------------------------------------------------------
- TExecutionResponse
- --------------------------------------------------------------------}
- Procedure TExecutionResponse.Setresult(AIndex : Integer; const AValue : TJSONSchema);
- begin
- If (Fresult=AValue) then exit;
- Fresult:=AValue;
- MarkPropertyChanged(AIndex);
- end;
- { --------------------------------------------------------------------
- TScriptsResource
- --------------------------------------------------------------------}
- Class Function TScriptsResource.ResourceName : String;
- begin
- Result:='scripts';
- end;
- Class Function TScriptsResource.DefaultAPI : TGoogleAPIClass;
- begin
- Result:=TscriptAPI;
- end;
- Function TScriptsResource.Run(scriptId: string; aExecutionRequest : TExecutionRequest) : TOperation;
- Const
- _HTTPMethod = 'POST';
- _Path = 'v1/scripts/{scriptId}:run';
- _Methodid = 'script.scripts.run';
- Var
- _P : String;
- begin
- _P:=SubstitutePath(_Path,['scriptId',scriptId]);
- Result:=ServiceCall(_HTTPMethod,_P,'',aExecutionRequest,TOperation) as TOperation;
- end;
- { --------------------------------------------------------------------
- TScriptAPI
- --------------------------------------------------------------------}
- Class Function TScriptAPI.APIName : String;
- begin
- Result:='script';
- end;
- Class Function TScriptAPI.APIVersion : String;
- begin
- Result:='v1';
- end;
- Class Function TScriptAPI.APIRevision : String;
- begin
- Result:='20160426';
- end;
- Class Function TScriptAPI.APIID : String;
- begin
- Result:='script:v1';
- end;
- Class Function TScriptAPI.APITitle : String;
- begin
- Result:='Google Apps Script Execution API';
- end;
- Class Function TScriptAPI.APIDescription : String;
- begin
- Result:='Executes Google Apps Script projects.';
- end;
- Class Function TScriptAPI.APIOwnerDomain : String;
- begin
- Result:='google.com';
- end;
- Class Function TScriptAPI.APIOwnerName : String;
- begin
- Result:='Google';
- end;
- Class Function TScriptAPI.APIIcon16 : String;
- begin
- Result:='http://www.google.com/images/icons/product/search-16.gif';
- end;
- Class Function TScriptAPI.APIIcon32 : String;
- begin
- Result:='http://www.google.com/images/icons/product/search-32.gif';
- end;
- Class Function TScriptAPI.APIdocumentationLink : String;
- begin
- Result:='https://developers.google.com/apps-script/execution/rest/v1/scripts/run';
- end;
- Class Function TScriptAPI.APIrootUrl : string;
- begin
- Result:='https://script.googleapis.com/';
- end;
- Class Function TScriptAPI.APIbasePath : string;
- begin
- Result:='';
- end;
- Class Function TScriptAPI.APIbaseURL : String;
- begin
- Result:='https://script.googleapis.com/';
- end;
- Class Function TScriptAPI.APIProtocol : string;
- begin
- Result:='rest';
- end;
- Class Function TScriptAPI.APIservicePath : string;
- begin
- Result:='';
- end;
- Class Function TScriptAPI.APIbatchPath : String;
- begin
- Result:='batch';
- end;
- Class Function TScriptAPI.APIAuthScopes : TScopeInfoArray;
- begin
- SetLength(Result,11);
- Result[0].Name:='https://mail.google.com/';
- Result[0].Description:='View and manage your mail';
- Result[1].Name:='https://www.google.com/calendar/feeds';
- Result[1].Description:='Manage your calendars';
- Result[2].Name:='https://www.google.com/m8/feeds';
- Result[2].Description:='Manage your contacts';
- Result[3].Name:='https://www.googleapis.com/auth/admin.directory.group';
- Result[3].Description:='View and manage the provisioning of groups on your domain';
- Result[4].Name:='https://www.googleapis.com/auth/admin.directory.user';
- Result[4].Description:='View and manage the provisioning of users on your domain';
- Result[5].Name:='https://www.googleapis.com/auth/drive';
- Result[5].Description:='View and manage the files in your Google Drive';
- Result[6].Name:='https://www.googleapis.com/auth/forms';
- Result[6].Description:='View and manage your forms in Google Drive';
- Result[7].Name:='https://www.googleapis.com/auth/forms.currentonly';
- Result[7].Description:='View and manage forms that this application has been installed in';
- Result[8].Name:='https://www.googleapis.com/auth/groups';
- Result[8].Description:='View and manage your Google Groups';
- Result[9].Name:='https://www.googleapis.com/auth/spreadsheets';
- Result[9].Description:='View and manage your spreadsheets in Google Drive';
- Result[10].Name:='https://www.googleapis.com/auth/userinfo.email';
- Result[10].Description:='View your email address';
-
- end;
- Class Function TScriptAPI.APINeedsAuth : Boolean;
- begin
- Result:=True;
- end;
- Class Procedure TScriptAPI.RegisterAPIResources;
- begin
- TExecutionRequest.RegisterObject;
- TOperationTypemetadata.RegisterObject;
- TOperationTyperesponse.RegisterObject;
- TOperation.RegisterObject;
- TStatusTypedetailsItem.RegisterObject;
- TStatus.RegisterObject;
- TExecutionError.RegisterObject;
- TScriptStackTraceElement.RegisterObject;
- TExecutionResponse.RegisterObject;
- end;
- Function TScriptAPI.GetScriptsInstance : TScriptsResource;
- begin
- if (FScriptsInstance=Nil) then
- FScriptsInstance:=CreateScriptsResource;
- Result:=FScriptsInstance;
- end;
- Function TScriptAPI.CreateScriptsResource : TScriptsResource;
- begin
- Result:=CreateScriptsResource(Self);
- end;
- Function TScriptAPI.CreateScriptsResource(AOwner : TComponent) : TScriptsResource;
- begin
- Result:=TScriptsResource.Create(AOwner);
- Result.API:=Self.API;
- end;
- initialization
- TScriptAPI.RegisterAPI;
- end.
|