mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-16 12:43:04 +01:00
628 lines
18 KiB
ObjectPascal
628 lines
18 KiB
ObjectPascal
unit googlelicensing;
|
|
{$MODE objfpc}
|
|
{$H+}
|
|
|
|
interface
|
|
|
|
uses sysutils, classes, googleservice, restbase, googlebase;
|
|
|
|
type
|
|
|
|
//Top-level schema types
|
|
TLicenseAssignment = Class;
|
|
TLicenseAssignmentInsert = Class;
|
|
TLicenseAssignmentList = Class;
|
|
TLicenseAssignmentArray = Array of TLicenseAssignment;
|
|
TLicenseAssignmentInsertArray = Array of TLicenseAssignmentInsert;
|
|
TLicenseAssignmentListArray = Array of TLicenseAssignmentList;
|
|
//Anonymous types, using auto-generated names
|
|
TLicenseAssignmentListTypeitemsArray = Array of TLicenseAssignment;
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicenseAssignment
|
|
--------------------------------------------------------------------}
|
|
|
|
TLicenseAssignment = Class(TGoogleBaseObject)
|
|
Private
|
|
Fetags : String;
|
|
Fkind : String;
|
|
FproductId : String;
|
|
FselfLink : String;
|
|
FskuId : String;
|
|
FuserId : String;
|
|
Protected
|
|
//Property setters
|
|
Procedure Setetags(AIndex : Integer; const AValue : String); virtual;
|
|
Procedure Setkind(AIndex : Integer; const AValue : String); virtual;
|
|
Procedure SetproductId(AIndex : Integer; const AValue : String); virtual;
|
|
Procedure SetselfLink(AIndex : Integer; const AValue : String); virtual;
|
|
Procedure SetskuId(AIndex : Integer; const AValue : String); virtual;
|
|
Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
|
|
Public
|
|
Published
|
|
Property etags : String Index 0 Read Fetags Write Setetags;
|
|
Property kind : String Index 8 Read Fkind Write Setkind;
|
|
Property productId : String Index 16 Read FproductId Write SetproductId;
|
|
Property selfLink : String Index 24 Read FselfLink Write SetselfLink;
|
|
Property skuId : String Index 32 Read FskuId Write SetskuId;
|
|
Property userId : String Index 40 Read FuserId Write SetuserId;
|
|
end;
|
|
TLicenseAssignmentClass = Class of TLicenseAssignment;
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicenseAssignmentInsert
|
|
--------------------------------------------------------------------}
|
|
|
|
TLicenseAssignmentInsert = Class(TGoogleBaseObject)
|
|
Private
|
|
FuserId : String;
|
|
Protected
|
|
//Property setters
|
|
Procedure SetuserId(AIndex : Integer; const AValue : String); virtual;
|
|
Public
|
|
Published
|
|
Property userId : String Index 0 Read FuserId Write SetuserId;
|
|
end;
|
|
TLicenseAssignmentInsertClass = Class of TLicenseAssignmentInsert;
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicenseAssignmentList
|
|
--------------------------------------------------------------------}
|
|
|
|
TLicenseAssignmentList = Class(TGoogleBaseObject)
|
|
Private
|
|
Fetag : String;
|
|
Fitems : TLicenseAssignmentListTypeitemsArray;
|
|
Fkind : String;
|
|
FnextPageToken : String;
|
|
Protected
|
|
//Property setters
|
|
Procedure Setetag(AIndex : Integer; const AValue : String); virtual;
|
|
Procedure Setitems(AIndex : Integer; const AValue : TLicenseAssignmentListTypeitemsArray); virtual;
|
|
Procedure Setkind(AIndex : Integer; const AValue : String); 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 etag : String Index 0 Read Fetag Write Setetag;
|
|
Property items : TLicenseAssignmentListTypeitemsArray Index 8 Read Fitems Write Setitems;
|
|
Property kind : String Index 16 Read Fkind Write Setkind;
|
|
Property nextPageToken : String Index 24 Read FnextPageToken Write SetnextPageToken;
|
|
end;
|
|
TLicenseAssignmentListClass = Class of TLicenseAssignmentList;
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicenseAssignmentsResource
|
|
--------------------------------------------------------------------}
|
|
|
|
|
|
//Optional query Options for TLicenseAssignmentsResource, method ListForProduct
|
|
|
|
TLicenseAssignmentsListForProductOptions = Record
|
|
customerId : String;
|
|
maxResults : integer;
|
|
pageToken : String;
|
|
end;
|
|
|
|
|
|
//Optional query Options for TLicenseAssignmentsResource, method ListForProductAndSku
|
|
|
|
TLicenseAssignmentsListForProductAndSkuOptions = Record
|
|
customerId : String;
|
|
maxResults : integer;
|
|
pageToken : String;
|
|
end;
|
|
|
|
TLicenseAssignmentsResource = Class(TGoogleResource)
|
|
Public
|
|
Class Function ResourceName : String; override;
|
|
Class Function DefaultAPI : TGoogleAPIClass; override;
|
|
Procedure Delete(productId: string; skuId: string; userId: string);
|
|
Function Get(productId: string; skuId: string; userId: string) : TLicenseAssignment;
|
|
Function Insert(productId: string; skuId: string; aLicenseAssignmentInsert : TLicenseAssignmentInsert) : TLicenseAssignment;
|
|
Function ListForProduct(productId: string; AQuery : string = '') : TLicenseAssignmentList;
|
|
Function ListForProduct(productId: string; AQuery : TLicenseAssignmentslistForProductOptions) : TLicenseAssignmentList;
|
|
Function ListForProductAndSku(productId: string; skuId: string; AQuery : string = '') : TLicenseAssignmentList;
|
|
Function ListForProductAndSku(productId: string; skuId: string; AQuery : TLicenseAssignmentslistForProductAndSkuOptions) : TLicenseAssignmentList;
|
|
Function Patch(productId: string; skuId: string; userId: string; aLicenseAssignment : TLicenseAssignment) : TLicenseAssignment;
|
|
Function Update(productId: string; skuId: string; userId: string; aLicenseAssignment : TLicenseAssignment) : TLicenseAssignment;
|
|
end;
|
|
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicensingAPI
|
|
--------------------------------------------------------------------}
|
|
|
|
TLicensingAPI = Class(TGoogleAPI)
|
|
Private
|
|
FLicenseAssignmentsInstance : TLicenseAssignmentsResource;
|
|
Function GetLicenseAssignmentsInstance : TLicenseAssignmentsResource;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 CreateLicenseAssignmentsResource(AOwner : TComponent) : TLicenseAssignmentsResource;virtual;overload;
|
|
Function CreateLicenseAssignmentsResource : TLicenseAssignmentsResource;virtual;overload;
|
|
//Add default on-demand instances for resources
|
|
Property LicenseAssignmentsResource : TLicenseAssignmentsResource Read GetLicenseAssignmentsInstance;
|
|
end;
|
|
|
|
implementation
|
|
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicenseAssignment
|
|
--------------------------------------------------------------------}
|
|
|
|
|
|
Procedure TLicenseAssignment.Setetags(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (Fetags=AValue) then exit;
|
|
Fetags:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
Procedure TLicenseAssignment.Setkind(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (Fkind=AValue) then exit;
|
|
Fkind:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
Procedure TLicenseAssignment.SetproductId(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (FproductId=AValue) then exit;
|
|
FproductId:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
Procedure TLicenseAssignment.SetselfLink(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (FselfLink=AValue) then exit;
|
|
FselfLink:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
Procedure TLicenseAssignment.SetskuId(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (FskuId=AValue) then exit;
|
|
FskuId:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
Procedure TLicenseAssignment.SetuserId(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (FuserId=AValue) then exit;
|
|
FuserId:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicenseAssignmentInsert
|
|
--------------------------------------------------------------------}
|
|
|
|
|
|
Procedure TLicenseAssignmentInsert.SetuserId(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (FuserId=AValue) then exit;
|
|
FuserId:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicenseAssignmentList
|
|
--------------------------------------------------------------------}
|
|
|
|
|
|
Procedure TLicenseAssignmentList.Setetag(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (Fetag=AValue) then exit;
|
|
Fetag:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
Procedure TLicenseAssignmentList.Setitems(AIndex : Integer; const AValue : TLicenseAssignmentListTypeitemsArray);
|
|
|
|
begin
|
|
If (Fitems=AValue) then exit;
|
|
Fitems:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
Procedure TLicenseAssignmentList.Setkind(AIndex : Integer; const AValue : String);
|
|
|
|
begin
|
|
If (Fkind=AValue) then exit;
|
|
Fkind:=AValue;
|
|
MarkPropertyChanged(AIndex);
|
|
end;
|
|
|
|
|
|
|
|
Procedure TLicenseAssignmentList.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 TLicenseAssignmentList.SetArrayLength(Const AName : String; ALength : Longint);
|
|
|
|
begin
|
|
Case AName of
|
|
'items' : SetLength(Fitems,ALength);
|
|
else
|
|
Inherited SetArrayLength(AName,ALength);
|
|
end;
|
|
end;
|
|
{$ENDIF VER2_6}
|
|
|
|
|
|
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicenseAssignmentsResource
|
|
--------------------------------------------------------------------}
|
|
|
|
|
|
Class Function TLicenseAssignmentsResource.ResourceName : String;
|
|
|
|
begin
|
|
Result:='licenseAssignments';
|
|
end;
|
|
|
|
Class Function TLicenseAssignmentsResource.DefaultAPI : TGoogleAPIClass;
|
|
|
|
begin
|
|
Result:=TlicensingAPI;
|
|
end;
|
|
|
|
Procedure TLicenseAssignmentsResource.Delete(productId: string; skuId: string; userId: string);
|
|
|
|
Const
|
|
_HTTPMethod = 'DELETE';
|
|
_Path = '{productId}/sku/{skuId}/user/{userId}';
|
|
_Methodid = 'licensing.licenseAssignments.delete';
|
|
|
|
Var
|
|
_P : String;
|
|
|
|
begin
|
|
_P:=SubstitutePath(_Path,['productId',productId,'skuId',skuId,'userId',userId]);
|
|
ServiceCall(_HTTPMethod,_P,'',Nil,Nil);
|
|
end;
|
|
|
|
Function TLicenseAssignmentsResource.Get(productId: string; skuId: string; userId: string) : TLicenseAssignment;
|
|
|
|
Const
|
|
_HTTPMethod = 'GET';
|
|
_Path = '{productId}/sku/{skuId}/user/{userId}';
|
|
_Methodid = 'licensing.licenseAssignments.get';
|
|
|
|
Var
|
|
_P : String;
|
|
|
|
begin
|
|
_P:=SubstitutePath(_Path,['productId',productId,'skuId',skuId,'userId',userId]);
|
|
Result:=ServiceCall(_HTTPMethod,_P,'',Nil,TLicenseAssignment) as TLicenseAssignment;
|
|
end;
|
|
|
|
Function TLicenseAssignmentsResource.Insert(productId: string; skuId: string; aLicenseAssignmentInsert : TLicenseAssignmentInsert) : TLicenseAssignment;
|
|
|
|
Const
|
|
_HTTPMethod = 'POST';
|
|
_Path = '{productId}/sku/{skuId}/user';
|
|
_Methodid = 'licensing.licenseAssignments.insert';
|
|
|
|
Var
|
|
_P : String;
|
|
|
|
begin
|
|
_P:=SubstitutePath(_Path,['productId',productId,'skuId',skuId]);
|
|
Result:=ServiceCall(_HTTPMethod,_P,'',aLicenseAssignmentInsert,TLicenseAssignment) as TLicenseAssignment;
|
|
end;
|
|
|
|
Function TLicenseAssignmentsResource.ListForProduct(productId: string; AQuery : string = '') : TLicenseAssignmentList;
|
|
|
|
Const
|
|
_HTTPMethod = 'GET';
|
|
_Path = '{productId}/users';
|
|
_Methodid = 'licensing.licenseAssignments.listForProduct';
|
|
|
|
Var
|
|
_P : String;
|
|
|
|
begin
|
|
_P:=SubstitutePath(_Path,['productId',productId]);
|
|
Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TLicenseAssignmentList) as TLicenseAssignmentList;
|
|
end;
|
|
|
|
|
|
Function TLicenseAssignmentsResource.ListForProduct(productId: string; AQuery : TLicenseAssignmentslistForProductOptions) : TLicenseAssignmentList;
|
|
|
|
Var
|
|
_Q : String;
|
|
|
|
begin
|
|
_Q:='';
|
|
AddToQuery(_Q,'customerId',AQuery.customerId);
|
|
AddToQuery(_Q,'maxResults',AQuery.maxResults);
|
|
AddToQuery(_Q,'pageToken',AQuery.pageToken);
|
|
Result:=ListForProduct(productId,_Q);
|
|
end;
|
|
|
|
Function TLicenseAssignmentsResource.ListForProductAndSku(productId: string; skuId: string; AQuery : string = '') : TLicenseAssignmentList;
|
|
|
|
Const
|
|
_HTTPMethod = 'GET';
|
|
_Path = '{productId}/sku/{skuId}/users';
|
|
_Methodid = 'licensing.licenseAssignments.listForProductAndSku';
|
|
|
|
Var
|
|
_P : String;
|
|
|
|
begin
|
|
_P:=SubstitutePath(_Path,['productId',productId,'skuId',skuId]);
|
|
Result:=ServiceCall(_HTTPMethod,_P,AQuery,Nil,TLicenseAssignmentList) as TLicenseAssignmentList;
|
|
end;
|
|
|
|
|
|
Function TLicenseAssignmentsResource.ListForProductAndSku(productId: string; skuId: string; AQuery : TLicenseAssignmentslistForProductAndSkuOptions) : TLicenseAssignmentList;
|
|
|
|
Var
|
|
_Q : String;
|
|
|
|
begin
|
|
_Q:='';
|
|
AddToQuery(_Q,'customerId',AQuery.customerId);
|
|
AddToQuery(_Q,'maxResults',AQuery.maxResults);
|
|
AddToQuery(_Q,'pageToken',AQuery.pageToken);
|
|
Result:=ListForProductAndSku(productId,skuId,_Q);
|
|
end;
|
|
|
|
Function TLicenseAssignmentsResource.Patch(productId: string; skuId: string; userId: string; aLicenseAssignment : TLicenseAssignment) : TLicenseAssignment;
|
|
|
|
Const
|
|
_HTTPMethod = 'PATCH';
|
|
_Path = '{productId}/sku/{skuId}/user/{userId}';
|
|
_Methodid = 'licensing.licenseAssignments.patch';
|
|
|
|
Var
|
|
_P : String;
|
|
|
|
begin
|
|
_P:=SubstitutePath(_Path,['productId',productId,'skuId',skuId,'userId',userId]);
|
|
Result:=ServiceCall(_HTTPMethod,_P,'',aLicenseAssignment,TLicenseAssignment) as TLicenseAssignment;
|
|
end;
|
|
|
|
Function TLicenseAssignmentsResource.Update(productId: string; skuId: string; userId: string; aLicenseAssignment : TLicenseAssignment) : TLicenseAssignment;
|
|
|
|
Const
|
|
_HTTPMethod = 'PUT';
|
|
_Path = '{productId}/sku/{skuId}/user/{userId}';
|
|
_Methodid = 'licensing.licenseAssignments.update';
|
|
|
|
Var
|
|
_P : String;
|
|
|
|
begin
|
|
_P:=SubstitutePath(_Path,['productId',productId,'skuId',skuId,'userId',userId]);
|
|
Result:=ServiceCall(_HTTPMethod,_P,'',aLicenseAssignment,TLicenseAssignment) as TLicenseAssignment;
|
|
end;
|
|
|
|
|
|
|
|
{ --------------------------------------------------------------------
|
|
TLicensingAPI
|
|
--------------------------------------------------------------------}
|
|
|
|
Class Function TLicensingAPI.APIName : String;
|
|
|
|
begin
|
|
Result:='licensing';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIVersion : String;
|
|
|
|
begin
|
|
Result:='v1';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIRevision : String;
|
|
|
|
begin
|
|
Result:='20150901';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIID : String;
|
|
|
|
begin
|
|
Result:='licensing:v1';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APITitle : String;
|
|
|
|
begin
|
|
Result:='Enterprise License Manager API';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIDescription : String;
|
|
|
|
begin
|
|
Result:='Licensing API to view and manage license for your domain.';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIOwnerDomain : String;
|
|
|
|
begin
|
|
Result:='google.com';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIOwnerName : String;
|
|
|
|
begin
|
|
Result:='Google';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIIcon16 : String;
|
|
|
|
begin
|
|
Result:='http://www.google.com/images/icons/product/search-16.gif';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIIcon32 : String;
|
|
|
|
begin
|
|
Result:='http://www.google.com/images/icons/product/search-32.gif';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIdocumentationLink : String;
|
|
|
|
begin
|
|
Result:='https://developers.google.com/google-apps/licensing/';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIrootUrl : string;
|
|
|
|
begin
|
|
Result:='https://www.googleapis.com/';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIbasePath : string;
|
|
|
|
begin
|
|
Result:='/apps/licensing/v1/product/';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIbaseURL : String;
|
|
|
|
begin
|
|
Result:='https://www.googleapis.com/apps/licensing/v1/product/';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIProtocol : string;
|
|
|
|
begin
|
|
Result:='rest';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIservicePath : string;
|
|
|
|
begin
|
|
Result:='apps/licensing/v1/product/';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIbatchPath : String;
|
|
|
|
begin
|
|
Result:='batch';
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APIAuthScopes : TScopeInfoArray;
|
|
|
|
begin
|
|
SetLength(Result,1);
|
|
Result[0].Name:='https://www.googleapis.com/auth/apps.licensing';
|
|
Result[0].Description:='View and manage Google Apps licenses for your domain';
|
|
|
|
end;
|
|
|
|
Class Function TLicensingAPI.APINeedsAuth : Boolean;
|
|
|
|
begin
|
|
Result:=True;
|
|
end;
|
|
|
|
Class Procedure TLicensingAPI.RegisterAPIResources;
|
|
|
|
begin
|
|
TLicenseAssignment.RegisterObject;
|
|
TLicenseAssignmentInsert.RegisterObject;
|
|
TLicenseAssignmentList.RegisterObject;
|
|
end;
|
|
|
|
|
|
Function TLicensingAPI.GetLicenseAssignmentsInstance : TLicenseAssignmentsResource;
|
|
|
|
begin
|
|
if (FLicenseAssignmentsInstance=Nil) then
|
|
FLicenseAssignmentsInstance:=CreateLicenseAssignmentsResource;
|
|
Result:=FLicenseAssignmentsInstance;
|
|
end;
|
|
|
|
Function TLicensingAPI.CreateLicenseAssignmentsResource : TLicenseAssignmentsResource;
|
|
|
|
begin
|
|
Result:=CreateLicenseAssignmentsResource(Self);
|
|
end;
|
|
|
|
|
|
Function TLicensingAPI.CreateLicenseAssignmentsResource(AOwner : TComponent) : TLicenseAssignmentsResource;
|
|
|
|
begin
|
|
Result:=TLicenseAssignmentsResource.Create(AOwner);
|
|
Result.API:=Self.API;
|
|
end;
|
|
|
|
|
|
|
|
initialization
|
|
TLicensingAPI.RegisterAPI;
|
|
end.
|