diff options
| author | michael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2016-05-24 08:35:58 +0000 |
|---|---|---|
| committer | michael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2016-05-24 08:35:58 +0000 |
| commit | 7a82cebc930dae276abf43ce85d9c72e74bfc760 (patch) | |
| tree | 18577bceb8a58b5fd00b27a4a6a1207ee0507adc /packages/googleapi/src/googlecloudbilling.pp | |
| parent | 14bb539e2cbc78a0e61bc842a2bfc1b5e458ab87 (diff) | |
| download | fpc-7a82cebc930dae276abf43ce85d9c72e74bfc760.tar.gz | |
* Updated from latest service descriptions
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@33777 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/googleapi/src/googlecloudbilling.pp')
| -rw-r--r-- | packages/googleapi/src/googlecloudbilling.pp | 776 |
1 files changed, 776 insertions, 0 deletions
diff --git a/packages/googleapi/src/googlecloudbilling.pp b/packages/googleapi/src/googlecloudbilling.pp new file mode 100644 index 0000000000..40a93234c2 --- /dev/null +++ b/packages/googleapi/src/googlecloudbilling.pp @@ -0,0 +1,776 @@ +unit googlecloudbilling; +{$MODE objfpc} +{$H+} + +interface + +uses sysutils, classes, googleservice, restbase, googlebase; + +type + + //Top-level schema types + TBillingAccount = Class; + TListBillingAccountsResponse = Class; + TListProjectBillingInfoResponse = Class; + TProjectBillingInfo = Class; + TBillingAccountArray = Array of TBillingAccount; + TListBillingAccountsResponseArray = Array of TListBillingAccountsResponse; + TListProjectBillingInfoResponseArray = Array of TListProjectBillingInfoResponse; + TProjectBillingInfoArray = Array of TProjectBillingInfo; + //Anonymous types, using auto-generated names + TListBillingAccountsResponseTypebillingAccountsArray = Array of TBillingAccount; + TListProjectBillingInfoResponseTypeprojectBillingInfoArray = Array of TProjectBillingInfo; + + { -------------------------------------------------------------------- + TBillingAccount + --------------------------------------------------------------------} + + TBillingAccount = Class(TGoogleBaseObject) + Private + Fname : String; + Fopen : boolean; + FdisplayName : String; + Protected + //Property setters + Procedure Setname(AIndex : Integer; const AValue : String); virtual; + Procedure Setopen(AIndex : Integer; const AValue : boolean); virtual; + Procedure SetdisplayName(AIndex : Integer; const AValue : String); virtual; + Public + Published + Property name : String Index 0 Read Fname Write Setname; + Property open : boolean Index 8 Read Fopen Write Setopen; + Property displayName : String Index 16 Read FdisplayName Write SetdisplayName; + end; + TBillingAccountClass = Class of TBillingAccount; + + { -------------------------------------------------------------------- + TListBillingAccountsResponse + --------------------------------------------------------------------} + + TListBillingAccountsResponse = Class(TGoogleBaseObject) + Private + FbillingAccounts : TListBillingAccountsResponseTypebillingAccountsArray; + FnextPageToken : String; + Protected + //Property setters + Procedure SetbillingAccounts(AIndex : Integer; const AValue : TListBillingAccountsResponseTypebillingAccountsArray); virtual; + Procedure SetnextPageToken(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 billingAccounts : TListBillingAccountsResponseTypebillingAccountsArray Index 0 Read FbillingAccounts Write SetbillingAccounts; + Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; + end; + TListBillingAccountsResponseClass = Class of TListBillingAccountsResponse; + + { -------------------------------------------------------------------- + TListProjectBillingInfoResponse + --------------------------------------------------------------------} + + TListProjectBillingInfoResponse = Class(TGoogleBaseObject) + Private + FprojectBillingInfo : TListProjectBillingInfoResponseTypeprojectBillingInfoArray; + FnextPageToken : String; + Protected + //Property setters + Procedure SetprojectBillingInfo(AIndex : Integer; const AValue : TListProjectBillingInfoResponseTypeprojectBillingInfoArray); virtual; + Procedure SetnextPageToken(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 projectBillingInfo : TListProjectBillingInfoResponseTypeprojectBillingInfoArray Index 0 Read FprojectBillingInfo Write SetprojectBillingInfo; + Property nextPageToken : String Index 8 Read FnextPageToken Write SetnextPageToken; + end; + TListProjectBillingInfoResponseClass = Class of TListProjectBillingInfoResponse; + + { -------------------------------------------------------------------- + TProjectBillingInfo + --------------------------------------------------------------------} + + TProjectBillingInfo = Class(TGoogleBaseObject) + Private + Fname : String; + FprojectId : String; + FbillingAccountName : String; + FbillingEnabled : boolean; + Protected + //Property setters + Procedure Setname(AIndex : Integer; const AValue : String); virtual; + Procedure SetprojectId(AIndex : Integer; const AValue : String); virtual; + Procedure SetbillingAccountName(AIndex : Integer; const AValue : String); virtual; + Procedure SetbillingEnabled(AIndex : Integer; const AValue : boolean); virtual; + Public + Published + Property name : String Index 0 Read Fname Write Setname; + Property projectId : String Index 8 Read FprojectId Write SetprojectId; + Property billingAccountName : String Index 16 Read FbillingAccountName Write SetbillingAccountName; + Property billingEnabled : boolean Index 24 Read FbillingEnabled Write SetbillingEnabled; + end; + TProjectBillingInfoClass = Class of TProjectBillingInfo; + + { -------------------------------------------------------------------- + TBillingAccountsProjectsResource + --------------------------------------------------------------------} + + + //Optional query Options for TBillingAccountsProjectsResource, method List + + TBillingAccountsProjectsListOptions = Record + pageSize : integer; + pageToken : String; + end; + + TBillingAccountsProjectsResource = Class(TGoogleResource) + Public + Class Function ResourceName : String; override; + Class Function DefaultAPI : TGoogleAPIClass; override; + Function List(_name: string; AQuery : string = '') : TListProjectBillingInfoResponse; + Function List(_name: string; AQuery : TBillingAccountsProjectslistOptions) : TListProjectBillingInfoResponse; + end; + + + { -------------------------------------------------------------------- + TBillingAccountsResource + --------------------------------------------------------------------} + + + //Optional query Options for TBillingAccountsResource, method List + + TBillingAccountsListOptions = Record + pageSize : integer; + pageToken : String; + end; + + TBillingAccountsResource = Class(TGoogleResource) + Private + FProjectsInstance : TBillingAccountsProjectsResource; + Function GetProjectsInstance : TBillingAccountsProjectsResource;virtual; + Public + Class Function ResourceName : String; override; + Class Function DefaultAPI : TGoogleAPIClass; override; + Function Get(_name: string) : TBillingAccount; + Function List(AQuery : string = '') : TListBillingAccountsResponse; + Function List(AQuery : TBillingAccountslistOptions) : TListBillingAccountsResponse; + Function CreateProjectsResource(AOwner : TComponent) : TBillingAccountsProjectsResource;virtual;overload; + Function CreateProjectsResource : TBillingAccountsProjectsResource;virtual;overload; + Property ProjectsResource : TBillingAccountsProjectsResource Read GetProjectsInstance; + end; + + + { -------------------------------------------------------------------- + TProjectsResource + --------------------------------------------------------------------} + + TProjectsResource = Class(TGoogleResource) + Public + Class Function ResourceName : String; override; + Class Function DefaultAPI : TGoogleAPIClass; override; + Function GetBillingInfo(_name: string) : TProjectBillingInfo; + Function UpdateBillingInfo(_name: string; aProjectBillingInfo : TProjectBillingInfo) : TProjectBillingInfo; + end; + + + { -------------------------------------------------------------------- + TCloudbillingAPI + --------------------------------------------------------------------} + + TCloudbillingAPI = Class(TGoogleAPI) + Private + FBillingAccountsProjectsInstance : TBillingAccountsProjectsResource; + FBillingAccountsInstance : TBillingAccountsResource; + FProjectsInstance : TProjectsResource; + Function GetBillingAccountsProjectsInstance : TBillingAccountsProjectsResource;virtual; + Function GetBillingAccountsInstance : TBillingAccountsResource;virtual; + Function GetProjectsInstance : TProjectsResource;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 CreateBillingAccountsProjectsResource(AOwner : TComponent) : TBillingAccountsProjectsResource;virtual;overload; + Function CreateBillingAccountsProjectsResource : TBillingAccountsProjectsResource;virtual;overload; + Function CreateBillingAccountsResource(AOwner : TComponent) : TBillingAccountsResource;virtual;overload; + Function CreateBillingAccountsResource : TBillingAccountsResource;virtual;overload; + Function CreateProjectsResource(AOwner : TComponent) : TProjectsResource;virtual;overload; + Function CreateProjectsResource : TProjectsResource;virtual;overload; + //Add default on-demand instances for resources + Property BillingAccountsProjectsResource : TBillingAccountsProjectsResource Read GetBillingAccountsProjectsInstance; + Property BillingAccountsResource : TBillingAccountsResource Read GetBillingAccountsInstance; + Property ProjectsResource : TProjectsResource Read GetProjectsInstance; + end; + +implementation + + +{ -------------------------------------------------------------------- + TBillingAccount + --------------------------------------------------------------------} + + +Procedure TBillingAccount.Setname(AIndex : Integer; const AValue : String); + +begin + If (Fname=AValue) then exit; + Fname:=AValue; + MarkPropertyChanged(AIndex); +end; + + + +Procedure TBillingAccount.Setopen(AIndex : Integer; const AValue : boolean); + +begin + If (Fopen=AValue) then exit; + Fopen:=AValue; + MarkPropertyChanged(AIndex); +end; + + + +Procedure TBillingAccount.SetdisplayName(AIndex : Integer; const AValue : String); + +begin + If (FdisplayName=AValue) then exit; + FdisplayName:=AValue; + MarkPropertyChanged(AIndex); +end; + + + + + +{ -------------------------------------------------------------------- + TListBillingAccountsResponse + --------------------------------------------------------------------} + + +Procedure TListBillingAccountsResponse.SetbillingAccounts(AIndex : Integer; const AValue : TListBillingAccountsResponseTypebillingAccountsArray); + +begin + If (FbillingAccounts=AValue) then exit; + FbillingAccounts:=AValue; + MarkPropertyChanged(AIndex); +end; + + + +Procedure TListBillingAccountsResponse.SetnextPageToken(AIndex : Integer; const AValue : String); + +begin + If (FnextPageToken=AValue) then exit; + FnextPageToken:=AValue; + MarkPropertyChanged(AIndex); +end; + + +//2.6.4. bug workaround +{$IFDEF VER2_6} +Procedure TListBillingAccountsResponse.SetArrayLength(Const AName : String; ALength : Longint); + +begin + Case AName of + 'billingaccounts' : SetLength(FbillingAccounts,ALength); + else + Inherited SetArrayLength(AName,ALength); + end; +end; +{$ENDIF VER2_6} + + + + +{ -------------------------------------------------------------------- + TListProjectBillingInfoResponse + --------------------------------------------------------------------} + + +Procedure TListProjectBillingInfoResponse.SetprojectBillingInfo(AIndex : Integer; const AValue : TListProjectBillingInfoResponseTypeprojectBillingInfoArray); + +begin + If (FprojectBillingInfo=AValue) then exit; + FprojectBillingInfo:=AValue; + MarkPropertyChanged(AIndex); +end; + + + +Procedure TListProjectBillingInfoResponse.SetnextPageToken(AIndex : Integer; const AValue : String); + +begin + If (FnextPageToken=AValue) then exit; + FnextPageToken:=AValue; + MarkPropertyChanged(AIndex); +end; + + +//2.6.4. bug workaround +{$IFDEF VER2_6} +Procedure TListProjectBillingInfoResponse.SetArrayLength(Const AName : String; ALength : Longint); + +begin + Case AName of + 'projectbillinginfo' : SetLength(FprojectBillingInfo,ALength); + else + Inherited SetArrayLength(AName,ALength); + end; +end; +{$ENDIF VER2_6} + + + + +{ -------------------------------------------------------------------- + TProjectBillingInfo + --------------------------------------------------------------------} + + +Procedure TProjectBillingInfo.Setname(AIndex : Integer; const AValue : String); + +begin + If (Fname=AValue) then exit; + Fname:=AValue; + MarkPropertyChanged(AIndex); +end; + + + +Procedure TProjectBillingInfo.SetprojectId(AIndex : Integer; const AValue : String); + +begin + If (FprojectId=AValue) then exit; + FprojectId:=AValue; + MarkPropertyChanged(AIndex); +end; + + + +Procedure TProjectBillingInfo.SetbillingAccountName(AIndex : Integer; const AValue : String); + +begin + If (FbillingAccountName=AValue) then exit; + FbillingAccountName:=AValue; + MarkPropertyChanged(AIndex); +end; + + + +Procedure TProjectBillingInfo.SetbillingEnabled(AIndex : Integer; const AValue : boolean); + +begin + If (FbillingEnabled=AValue) then exit; + FbillingEnabled:=AValue; + MarkPropertyChanged(AIndex); +end; + + + + + +{ -------------------------------------------------------------------- + TBillingAccountsProjectsResource + --------------------------------------------------------------------} + + +Class Function TBillingAccountsProjectsResource.ResourceName : String; + +begin + Result:='projects'; +end; + +Class Function TBillingAccountsProjectsResource.DefaultAPI : TGoogleAPIClass; + +begin + Result:=TcloudbillingAPI; +end; + +Function TBillingAccountsProjectsResource.List(_name: string; AQuery : string = '') : TListProjectBillingInfoResponse; + +Const + _HTTPMethod = 'GET'; + _Path = 'v1/{+name}/projects'; + _Methodid = 'cloudbilling.billingAccounts.projects.list'; + +Var + _P : String; + +begin + _P:=SubstitutePath(_Path,['name',_name]); + Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TListProjectBillingInfoResponse) as TListProjectBillingInfoResponse; +end; + + +Function TBillingAccountsProjectsResource.List(_name: string; AQuery : TBillingAccountsProjectslistOptions) : TListProjectBillingInfoResponse; + +Var + _Q : String; + +begin + _Q:=''; + AddToQuery(_Q,'pageSize',AQuery.pageSize); + AddToQuery(_Q,'pageToken',AQuery.pageToken); + Result:=List(_name,_Q); +end; + + + +{ -------------------------------------------------------------------- + TBillingAccountsResource + --------------------------------------------------------------------} + + +Class Function TBillingAccountsResource.ResourceName : String; + +begin + Result:='billingAccounts'; +end; + +Class Function TBillingAccountsResource.DefaultAPI : TGoogleAPIClass; + +begin + Result:=TcloudbillingAPI; +end; + +Function TBillingAccountsResource.Get(_name: string) : TBillingAccount; + +Const + _HTTPMethod = 'GET'; + _Path = 'v1/{+name}'; + _Methodid = 'cloudbilling.billingAccounts.get'; + +Var + _P : String; + +begin + _P:=SubstitutePath(_Path,['name',_name]); + Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TBillingAccount) as TBillingAccount; +end; + +Function TBillingAccountsResource.List(AQuery : string = '') : TListBillingAccountsResponse; + +Const + _HTTPMethod = 'GET'; + _Path = 'v1/billingAccounts'; + _Methodid = 'cloudbilling.billingAccounts.list'; + +begin + Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TListBillingAccountsResponse) as TListBillingAccountsResponse; +end; + + +Function TBillingAccountsResource.List(AQuery : TBillingAccountslistOptions) : TListBillingAccountsResponse; + +Var + _Q : String; + +begin + _Q:=''; + AddToQuery(_Q,'pageSize',AQuery.pageSize); + AddToQuery(_Q,'pageToken',AQuery.pageToken); + Result:=List(_Q); +end; + + + +Function TBillingAccountsResource.GetProjectsInstance : TBillingAccountsProjectsResource; + +begin + if (FProjectsInstance=Nil) then + FProjectsInstance:=CreateProjectsResource; + Result:=FProjectsInstance; +end; + +Function TBillingAccountsResource.CreateProjectsResource : TBillingAccountsProjectsResource; + +begin + Result:=CreateProjectsResource(Self); +end; + + +Function TBillingAccountsResource.CreateProjectsResource(AOwner : TComponent) : TBillingAccountsProjectsResource; + +begin + Result:=TBillingAccountsProjectsResource.Create(AOwner); + Result.API:=Self.API; +end; + + + +{ -------------------------------------------------------------------- + TProjectsResource + --------------------------------------------------------------------} + + +Class Function TProjectsResource.ResourceName : String; + +begin + Result:='projects'; +end; + +Class Function TProjectsResource.DefaultAPI : TGoogleAPIClass; + +begin + Result:=TcloudbillingAPI; +end; + +Function TProjectsResource.GetBillingInfo(_name: string) : TProjectBillingInfo; + +Const + _HTTPMethod = 'GET'; + _Path = 'v1/{+name}/billingInfo'; + _Methodid = 'cloudbilling.projects.getBillingInfo'; + +Var + _P : String; + +begin + _P:=SubstitutePath(_Path,['name',_name]); + Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TProjectBillingInfo) as TProjectBillingInfo; +end; + +Function TProjectsResource.UpdateBillingInfo(_name: string; aProjectBillingInfo : TProjectBillingInfo) : TProjectBillingInfo; + +Const + _HTTPMethod = 'PUT'; + _Path = 'v1/{+name}/billingInfo'; + _Methodid = 'cloudbilling.projects.updateBillingInfo'; + +Var + _P : String; + +begin + _P:=SubstitutePath(_Path,['name',_name]); + Result:=ServiceCall(_HTTPMethod,_P,'',aProjectBillingInfo,TProjectBillingInfo) as TProjectBillingInfo; +end; + + + +{ -------------------------------------------------------------------- + TCloudbillingAPI + --------------------------------------------------------------------} + +Class Function TCloudbillingAPI.APIName : String; + +begin + Result:='cloudbilling'; +end; + +Class Function TCloudbillingAPI.APIVersion : String; + +begin + Result:='v1'; +end; + +Class Function TCloudbillingAPI.APIRevision : String; + +begin + Result:='20151222'; +end; + +Class Function TCloudbillingAPI.APIID : String; + +begin + Result:='cloudbilling:v1'; +end; + +Class Function TCloudbillingAPI.APITitle : String; + +begin + Result:='Google Cloud Billing API'; +end; + +Class Function TCloudbillingAPI.APIDescription : String; + +begin + Result:='Retrieves Google Developers Console billing accounts and associates them with projects.'; +end; + +Class Function TCloudbillingAPI.APIOwnerDomain : String; + +begin + Result:='google.com'; +end; + +Class Function TCloudbillingAPI.APIOwnerName : String; + +begin + Result:='Google'; +end; + +Class Function TCloudbillingAPI.APIIcon16 : String; + +begin + Result:='http://www.google.com/images/icons/product/search-16.gif'; +end; + +Class Function TCloudbillingAPI.APIIcon32 : String; + +begin + Result:='http://www.google.com/images/icons/product/search-32.gif'; +end; + +Class Function TCloudbillingAPI.APIdocumentationLink : String; + +begin + Result:='https://cloud.google.com/billing/'; +end; + +Class Function TCloudbillingAPI.APIrootUrl : string; + +begin + Result:='https://cloudbilling.googleapis.com/'; +end; + +Class Function TCloudbillingAPI.APIbasePath : string; + +begin + Result:=''; +end; + +Class Function TCloudbillingAPI.APIbaseURL : String; + +begin + Result:='https://cloudbilling.googleapis.com/'; +end; + +Class Function TCloudbillingAPI.APIProtocol : string; + +begin + Result:='rest'; +end; + +Class Function TCloudbillingAPI.APIservicePath : string; + +begin + Result:=''; +end; + +Class Function TCloudbillingAPI.APIbatchPath : String; + +begin + Result:='batch'; +end; + +Class Function TCloudbillingAPI.APIAuthScopes : TScopeInfoArray; + +begin + SetLength(Result,1); + Result[0].Name:='https://www.googleapis.com/auth/cloud-platform'; + Result[0].Description:='View and manage your data across Google Cloud Platform services'; + +end; + +Class Function TCloudbillingAPI.APINeedsAuth : Boolean; + +begin + Result:=True; +end; + +Class Procedure TCloudbillingAPI.RegisterAPIResources; + +begin + TBillingAccount.RegisterObject; + TListBillingAccountsResponse.RegisterObject; + TListProjectBillingInfoResponse.RegisterObject; + TProjectBillingInfo.RegisterObject; +end; + + +Function TCloudbillingAPI.GetBillingAccountsProjectsInstance : TBillingAccountsProjectsResource; + +begin + if (FBillingAccountsProjectsInstance=Nil) then + FBillingAccountsProjectsInstance:=CreateBillingAccountsProjectsResource; + Result:=FBillingAccountsProjectsInstance; +end; + +Function TCloudbillingAPI.CreateBillingAccountsProjectsResource : TBillingAccountsProjectsResource; + +begin + Result:=CreateBillingAccountsProjectsResource(Self); +end; + + +Function TCloudbillingAPI.CreateBillingAccountsProjectsResource(AOwner : TComponent) : TBillingAccountsProjectsResource; + +begin + Result:=TBillingAccountsProjectsResource.Create(AOwner); + Result.API:=Self.API; +end; + + + +Function TCloudbillingAPI.GetBillingAccountsInstance : TBillingAccountsResource; + +begin + if (FBillingAccountsInstance=Nil) then + FBillingAccountsInstance:=CreateBillingAccountsResource; + Result:=FBillingAccountsInstance; +end; + +Function TCloudbillingAPI.CreateBillingAccountsResource : TBillingAccountsResource; + +begin + Result:=CreateBillingAccountsResource(Self); +end; + + +Function TCloudbillingAPI.CreateBillingAccountsResource(AOwner : TComponent) : TBillingAccountsResource; + +begin + Result:=TBillingAccountsResource.Create(AOwner); + Result.API:=Self.API; +end; + + + +Function TCloudbillingAPI.GetProjectsInstance : TProjectsResource; + +begin + if (FProjectsInstance=Nil) then + FProjectsInstance:=CreateProjectsResource; + Result:=FProjectsInstance; +end; + +Function TCloudbillingAPI.CreateProjectsResource : TProjectsResource; + +begin + Result:=CreateProjectsResource(Self); +end; + + +Function TCloudbillingAPI.CreateProjectsResource(AOwner : TComponent) : TProjectsResource; + +begin + Result:=TProjectsResource.Create(AOwner); + Result.API:=Self.API; +end; + + + +initialization + TCloudbillingAPI.RegisterAPI; +end. |
