You've already forked lazarus-ccr
type_lib_edtr: type library editor git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@190 8e941d3f-bd1b-0410-a28a-d453659cc2b4
563 lines
17 KiB
ObjectPascal
563 lines
17 KiB
ObjectPascal
unit ebay;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, base_service_intf;
|
|
|
|
const
|
|
sAPP_ID = 'INOUSSAOUEU258CIC9Z5E83UXC1BE5';//'<your AppId>';
|
|
sEBAY_VERSION = '467';
|
|
|
|
type
|
|
|
|
TAckCodeType = ( Success, Failure, Warning, PartialFailure, CustomCode );
|
|
|
|
{ TErrorType = class(TBaseComplexRemotable)
|
|
published
|
|
property ShortMessage : string read FShortMessage write FShortMessage stored HasShortMessage;
|
|
property LongMessage : string read FLongMessage write FLongMessage stored HasLongMessage;
|
|
end;
|
|
}
|
|
|
|
{ TPaginationType }
|
|
|
|
TPaginationType = class(TBaseComplexRemotable)
|
|
private
|
|
FEntriesPerPage: Integer;
|
|
FPageNumber: Integer;
|
|
function HasEntriesPerPage: boolean;
|
|
function HasPageNumber: boolean;
|
|
published
|
|
property EntriesPerPage : Integer read FEntriesPerPage write FEntriesPerPage stored HasEntriesPerPage;
|
|
property PageNumber : Integer read FPageNumber write FPageNumber stored HasPageNumber;
|
|
end;
|
|
|
|
{ TPaginationResultType }
|
|
|
|
TPaginationResultType = class(TBaseComplexRemotable)
|
|
private
|
|
FTotalNumberOfEntries: Integer;
|
|
FTotalNumberOfPages: Integer;
|
|
function HasTotalNumberOfEntries: boolean;
|
|
function HasTotalNumberOfPages: boolean;
|
|
published
|
|
property TotalNumberOfPages : Integer read FTotalNumberOfPages write FTotalNumberOfPages stored HasTotalNumberOfPages;
|
|
property TotalNumberOfEntries : Integer read FTotalNumberOfEntries write FTotalNumberOfEntries stored HasTotalNumberOfEntries;
|
|
end;
|
|
|
|
{ TCategoryType }
|
|
|
|
TCategoryType = class(TBaseComplexRemotable)
|
|
private
|
|
FAutoPayEnabled: Boolean;
|
|
FB2BVATEnabled: Boolean;
|
|
FBestOfferEnabled: Boolean;
|
|
FCatalogEnabled: Boolean;
|
|
FCategoryID: string;
|
|
FCategoryLevel: Integer;
|
|
FCategoryName: string;
|
|
FCategoryParentID: string;
|
|
FCategoryParentName: string;
|
|
FKeywords: string;
|
|
FProductFinderAvailable: Boolean;
|
|
FProductFinderID: Integer;
|
|
FProductSearchPageAvailable: Boolean;
|
|
function HasCategoryID: boolean;
|
|
function HasCategoryLevel: boolean;
|
|
function HasCategoryName: boolean;
|
|
function HasCategoryParentID: boolean;
|
|
function HasCategoryParentName: boolean;
|
|
function HasKeywords: boolean;
|
|
function HasProductFinderID: boolean;
|
|
published
|
|
property BestOfferEnabled : Boolean read FBestOfferEnabled write FBestOfferEnabled stored FBestOfferEnabled;
|
|
property AutoPayEnabled : Boolean read FAutoPayEnabled write FAutoPayEnabled stored FAutoPayEnabled;
|
|
property B2BVATEnabled : Boolean read FB2BVATEnabled write FB2BVATEnabled stored FB2BVATEnabled;
|
|
property CatalogEnabled : Boolean read FCatalogEnabled write FCatalogEnabled stored FCatalogEnabled;
|
|
property CategoryID : string read FCategoryID write FCategoryID stored HasCategoryID;
|
|
property CategoryLevel : Integer read FCategoryLevel write FCategoryLevel stored HasCategoryLevel;
|
|
property CategoryName : string read FCategoryName write FCategoryName stored HasCategoryName;
|
|
property CategoryParentID : string read FCategoryParentID write FCategoryParentID stored HasCategoryParentID;
|
|
property CategoryParentName : string read FCategoryParentName write FCategoryParentName stored HasCategoryParentName;
|
|
property ProductFinderID : Integer read FProductFinderID write FProductFinderID stored HasProductFinderID;
|
|
property ProductSearchPageAvailable : Boolean read FProductSearchPageAvailable write FProductSearchPageAvailable stored FProductSearchPageAvailable;
|
|
property ProductFinderAvailable : Boolean read FProductFinderAvailable write FProductFinderAvailable stored FProductFinderAvailable;
|
|
property Keywords : string read FKeywords write FKeywords stored HasKeywords;
|
|
end;
|
|
|
|
{ TCategoryArrayType }
|
|
|
|
TCategoryArrayType = class(TBaseObjectArrayRemotable)
|
|
private
|
|
function GetCategoryItem(AIndex: Integer): TCategoryType;
|
|
public
|
|
class function GetItemClass():TBaseRemotableClass;override;
|
|
property Item[AIndex:Integer] : TCategoryType read GetCategoryItem;
|
|
property Category[AIndex:Integer] : TCategoryType read GetCategoryItem;default;
|
|
end;
|
|
|
|
{ TUserIdPasswordType }
|
|
|
|
TUserIdPasswordType = class(TBaseComplexRemotable)
|
|
private
|
|
FAppId: string;
|
|
FAuthCert: string;
|
|
FDevId: string;
|
|
FPassword: string;
|
|
FUsername: string;
|
|
function HasAppId: boolean;
|
|
function HasAuthCert: boolean;
|
|
function HasDevId: boolean;
|
|
function HasPassword: boolean;
|
|
function HasUsername: boolean;
|
|
published
|
|
property AppId : string read FAppId write FAppId stored HasAppId;
|
|
property DevId : string read FDevId write FDevId stored HasDevId;
|
|
property AuthCert : string read FAuthCert write FAuthCert stored HasAuthCert;
|
|
property Username : string read FUsername write FUsername stored HasUsername;
|
|
property Password : string read FPassword write FPassword stored HasPassword;
|
|
end;
|
|
|
|
{ TCustomSecurityHeaderType }
|
|
|
|
TCustomSecurityHeaderType = class(THeaderBlock)
|
|
private
|
|
FCredentials: TUserIdPasswordType;
|
|
FeBayAuthToken: string;
|
|
public
|
|
constructor Create();override;
|
|
destructor Destroy();override;
|
|
published
|
|
property eBayAuthToken : string read FeBayAuthToken write FeBayAuthToken;
|
|
property Credentials : TUserIdPasswordType read FCredentials write FCredentials;
|
|
end;
|
|
|
|
{ TAbstractRequestType }
|
|
|
|
TAbstractRequestType = class(TBaseComplexRemotable)
|
|
private
|
|
FVersion: string;
|
|
published
|
|
property Version : string read FVersion write FVersion;
|
|
end;
|
|
|
|
{ TAbstractResponseType }
|
|
|
|
TAbstractResponseType = class(TBaseComplexRemotable)
|
|
private
|
|
FAck: TAckCodeType;
|
|
FCorrelationID: string;
|
|
FMessage: string;
|
|
FVersion: string;
|
|
function HasAck: boolean;
|
|
function HasCorrelationID: boolean;
|
|
function HasMessage: boolean;
|
|
function HasVersion: boolean;
|
|
published
|
|
property CorrelationID : string read FCorrelationID write FCorrelationID stored HasCorrelationID;
|
|
property Message : string read FMessage write FMessage stored HasMessage;
|
|
property Version : string read FVersion write FVersion stored HasVersion;
|
|
property Ack : TAckCodeType read FAck write FAck stored HasAck;
|
|
end;
|
|
|
|
{ TGetCategoriesRequestType }
|
|
|
|
TGetCategoriesRequestType = class(TAbstractRequestType)
|
|
private
|
|
FCategorySiteID: string;
|
|
function HasCategorySiteID: boolean;
|
|
published
|
|
property CategorySiteID : string read FCategorySiteID write FCategorySiteID stored HasCategorySiteID;
|
|
end;
|
|
|
|
{ TGetCategoriesResponseType }
|
|
|
|
TGetCategoriesResponseType = class(TAbstractResponseType)
|
|
private
|
|
FCategoryCount: Integer;
|
|
FCategoryVersion: string;
|
|
FMinimumReservePrice: Double;
|
|
FReservePriceAllowed: Boolean;
|
|
function HasCategoryCount: boolean;
|
|
function HasCategoryVersion: boolean;
|
|
function HasMinimumReservePrice: boolean;
|
|
function HasReservePriceAllowed: boolean;
|
|
published
|
|
property CategoryCount : Integer read FCategoryCount write FCategoryCount stored HasCategoryCount;
|
|
property CategoryVersion : string read FCategoryVersion write FCategoryVersion stored HasCategoryVersion;
|
|
property ReservePriceAllowed : Boolean read FReservePriceAllowed write FReservePriceAllowed stored HasReservePriceAllowed;
|
|
property MinimumReservePrice : Double read FMinimumReservePrice write FMinimumReservePrice stored HasMinimumReservePrice;
|
|
end;
|
|
|
|
{ TGetPopularKeywordsRequestType }
|
|
|
|
TGetPopularKeywordsRequestType = class(TAbstractRequestType)
|
|
private
|
|
FCategoryID: string;
|
|
FIncludeChildCategories: Boolean;
|
|
FMaxKeywordsRetrieved: Integer;
|
|
FPagination: TPaginationType;
|
|
function HasCategoryID: boolean;
|
|
function HasIncludeChildCategories: boolean;
|
|
function HasMaxKeywordsRetrieved: boolean;
|
|
function HasPagination: boolean;
|
|
public
|
|
constructor Create();override;
|
|
destructor Destroy();override;
|
|
published
|
|
property CategoryID : string read FCategoryID write FCategoryID stored HasCategoryID;
|
|
property IncludeChildCategories : Boolean read FIncludeChildCategories write FIncludeChildCategories stored HasIncludeChildCategories;
|
|
property MaxKeywordsRetrieved : Integer read FMaxKeywordsRetrieved write FMaxKeywordsRetrieved stored HasMaxKeywordsRetrieved;
|
|
property Pagination : TPaginationType read FPagination write FPagination stored HasPagination;
|
|
end;
|
|
|
|
{ TGetPopularKeywordsResponseType }
|
|
|
|
TGetPopularKeywordsResponseType = class(TAbstractResponseType)
|
|
private
|
|
FCategoryArray: TCategoryArrayType;
|
|
FHasMore: Boolean;
|
|
FPaginationResult: TPaginationResultType;
|
|
function HasCategoryArray: boolean;
|
|
function HasPaginationResult: boolean;
|
|
procedure SetCategoryArray(const AValue: TCategoryArrayType);
|
|
procedure SetPaginationResult(const AValue: TPaginationResultType);
|
|
public
|
|
constructor Create();override;
|
|
destructor Destroy();override;
|
|
published
|
|
property HasMore : Boolean read FHasMore write FHasMore stored FHasMore;
|
|
property CategoryArray : TCategoryArrayType read FCategoryArray write SetCategoryArray stored HasCategoryArray;
|
|
property PaginationResult : TPaginationResultType read FPaginationResult write SetPaginationResult stored HasPaginationResult;
|
|
end;
|
|
|
|
IeBayAPIInterfaceService = interface
|
|
{function GetCategories(GetCategoriesRequest : TGetCategoriesRequestType ) : TGetCategoriesResponseType;}
|
|
procedure GetCategories(
|
|
const GetCategoriesRequest : TGetCategoriesRequestType;
|
|
out GetCategoriesResponse : TGetCategoriesResponseType
|
|
);
|
|
procedure GetPopularKeywords(
|
|
const GetPopularKeywordsRequest : TGetPopularKeywordsRequestType;
|
|
out GetPopularKeywordsResponse : TGetPopularKeywordsResponseType
|
|
);
|
|
end;
|
|
|
|
procedure Register_ebay_ServiceMetadata();
|
|
|
|
implementation
|
|
uses imp_utils, metadata_repository;
|
|
|
|
const
|
|
sE_BAY_API_VERSION = 'Version 467';
|
|
sE_BAY_NAME_SPACE = 'urn:ebay:apis:eBLBaseComponents';
|
|
|
|
{ TAbstractResponseType }
|
|
|
|
function TAbstractResponseType.HasCorrelationID: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FCorrelationID);
|
|
end;
|
|
|
|
function TAbstractResponseType.HasAck: boolean;
|
|
begin
|
|
Result := FAck > Success;
|
|
end;
|
|
|
|
function TAbstractResponseType.HasMessage: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FMessage);
|
|
end;
|
|
|
|
function TAbstractResponseType.HasVersion: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FVersion);
|
|
end;
|
|
|
|
{ TGetCategoriesRequestType }
|
|
|
|
function TGetCategoriesRequestType.HasCategorySiteID: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FCategorySiteID);
|
|
end;
|
|
|
|
{ TGetCategoriesResponseType }
|
|
|
|
function TGetCategoriesResponseType.HasCategoryCount: boolean;
|
|
begin
|
|
Result := ( FCategoryCount > 0 );
|
|
end;
|
|
|
|
function TGetCategoriesResponseType.HasCategoryVersion: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FCategoryVersion);
|
|
end;
|
|
|
|
function TGetCategoriesResponseType.HasMinimumReservePrice: boolean;
|
|
begin
|
|
Result := ( MinimumReservePrice <> 0 );
|
|
end;
|
|
|
|
function TGetCategoriesResponseType.HasReservePriceAllowed: boolean;
|
|
begin
|
|
Result := FReservePriceAllowed;
|
|
end;
|
|
|
|
{ TUserIdPasswordType }
|
|
|
|
function TUserIdPasswordType.HasAppId: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FAppId);
|
|
end;
|
|
|
|
function TUserIdPasswordType.HasAuthCert: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FAuthCert);
|
|
end;
|
|
|
|
function TUserIdPasswordType.HasDevId: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FDevId);
|
|
end;
|
|
|
|
function TUserIdPasswordType.HasPassword: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FPassword);
|
|
end;
|
|
|
|
function TUserIdPasswordType.HasUsername: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FUsername);
|
|
end;
|
|
|
|
{ TCustomSecurityHeaderType }
|
|
|
|
constructor TCustomSecurityHeaderType.Create();
|
|
begin
|
|
inherited Create();
|
|
FCredentials := TUserIdPasswordType.Create();
|
|
end;
|
|
|
|
destructor TCustomSecurityHeaderType.Destroy();
|
|
begin
|
|
FreeAndNil(FCredentials);
|
|
inherited Destroy();
|
|
end;
|
|
|
|
{ TPaginationType }
|
|
|
|
function TPaginationType.HasEntriesPerPage: boolean;
|
|
begin
|
|
Result := HasEntriesPerPage;
|
|
end;
|
|
|
|
function TPaginationType.HasPageNumber: boolean;
|
|
begin
|
|
Result := ( FPageNumber <> 0 );
|
|
end;
|
|
|
|
{ TGetPopularKeywordsRequestType }
|
|
|
|
function TGetPopularKeywordsRequestType.HasCategoryID: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FCategoryID);
|
|
end;
|
|
|
|
function TGetPopularKeywordsRequestType.HasIncludeChildCategories: boolean;
|
|
begin
|
|
Result := IncludeChildCategories;
|
|
end;
|
|
|
|
function TGetPopularKeywordsRequestType.HasMaxKeywordsRetrieved: boolean;
|
|
begin
|
|
Result := ( MaxKeywordsRetrieved <> 0 );
|
|
end;
|
|
|
|
function TGetPopularKeywordsRequestType.HasPagination: boolean;
|
|
begin
|
|
Result := Assigned(FPagination) and
|
|
( FPagination.HasEntriesPerPage or FPagination.HasPageNumber);
|
|
end;
|
|
|
|
constructor TGetPopularKeywordsRequestType.Create();
|
|
begin
|
|
inherited Create();
|
|
end;
|
|
|
|
destructor TGetPopularKeywordsRequestType.Destroy();
|
|
begin
|
|
FreeAndNil(FPagination);
|
|
inherited Destroy();
|
|
end;
|
|
|
|
{ TCategoryType }
|
|
|
|
function TCategoryType.HasCategoryID: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FCategoryID);
|
|
end;
|
|
|
|
function TCategoryType.HasCategoryLevel: boolean;
|
|
begin
|
|
Result := ( FCategoryLevel <> 0 );
|
|
end;
|
|
|
|
function TCategoryType.HasCategoryName: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FCategoryName);
|
|
end;
|
|
|
|
function TCategoryType.HasCategoryParentID: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FCategoryParentID);
|
|
end;
|
|
|
|
function TCategoryType.HasCategoryParentName: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FCategoryParentName);
|
|
end;
|
|
|
|
function TCategoryType.HasKeywords: boolean;
|
|
begin
|
|
Result := not IsStrEmpty(FKeywords);
|
|
end;
|
|
|
|
function TCategoryType.HasProductFinderID: boolean;
|
|
begin
|
|
Result := ( FProductFinderID > 0 );
|
|
end;
|
|
|
|
{ TCategoryArrayType }
|
|
|
|
function TCategoryArrayType.GetCategoryItem(AIndex: Integer): TCategoryType;
|
|
begin
|
|
Result := inherited GetItem(AIndex) as TCategoryType;
|
|
end;
|
|
|
|
class function TCategoryArrayType.GetItemClass(): TBaseRemotableClass;
|
|
begin
|
|
Result := TCategoryType;
|
|
end;
|
|
|
|
{ TGetPopularKeywordsResponseType }
|
|
|
|
function TGetPopularKeywordsResponseType.HasCategoryArray: boolean;
|
|
begin
|
|
Result := ( FCategoryArray.Length > 0 );
|
|
end;
|
|
|
|
function TGetPopularKeywordsResponseType.HasPaginationResult: boolean;
|
|
begin
|
|
Result := ( FPaginationResult.TotalNumberOfEntries <> 0 ) or
|
|
( FPaginationResult.TotalNumberOfPages <> 0 ) ;
|
|
end;
|
|
|
|
procedure TGetPopularKeywordsResponseType.SetCategoryArray(
|
|
const AValue: TCategoryArrayType
|
|
);
|
|
begin
|
|
if ( FCategoryArray = AValue ) then
|
|
exit;
|
|
FCategoryArray.Assign(AValue) ;
|
|
end;
|
|
|
|
procedure TGetPopularKeywordsResponseType.SetPaginationResult(
|
|
const AValue: TPaginationResultType
|
|
);
|
|
begin
|
|
if ( FPaginationResult = AValue ) then
|
|
exit;
|
|
FPaginationResult.Assign(AValue);
|
|
end;
|
|
|
|
constructor TGetPopularKeywordsResponseType.Create();
|
|
begin
|
|
FCategoryArray := TCategoryArrayType.Create();
|
|
FPaginationResult := TPaginationResultType.Create();
|
|
inherited Create();
|
|
end;
|
|
|
|
destructor TGetPopularKeywordsResponseType.Destroy();
|
|
begin
|
|
FreeAndNil(FPaginationResult);
|
|
FreeAndNil(FCategoryArray);
|
|
inherited Destroy();
|
|
end;
|
|
|
|
procedure RegisterEbayTypes();
|
|
Var
|
|
r : TTypeRegistry;
|
|
ri : TTypeRegistryItem;
|
|
begin
|
|
r := GetTypeRegistry();
|
|
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TAckCodeType),'AckCodeType');
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TCategoryType),'CategoryType');
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TCategoryArrayType),'CategoryArrayType');
|
|
|
|
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TPaginationType),'PaginationType');
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TPaginationResultType),'PaginationResultType');
|
|
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TGetPopularKeywordsRequestType),'GetPopularKeywordsRequestType');
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TGetPopularKeywordsResponseType),'GetPopularKeywordsResponseType');
|
|
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TUserIdPasswordType),'UserIdPasswordType');
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TCustomSecurityHeaderType),'RequesterCredentials');//'CustomSecurityHeaderType');
|
|
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TGetCategoriesRequestType),'GetCategoriesRequestType');
|
|
r.Register(sE_BAY_NAME_SPACE,TypeInfo(TGetCategoriesResponseType),'GetCategoriesResponseType');
|
|
end;
|
|
|
|
procedure Register_ebay_ServiceMetadata();
|
|
var
|
|
mm : IModuleMetadataMngr;
|
|
begin
|
|
mm := GetModuleMetadataMngr();
|
|
mm.SetOperationCustomData(
|
|
'ebay',
|
|
'IeBayAPIInterfaceService',
|
|
'GetCategories',
|
|
'Address',
|
|
'https://api.sandbox.ebay.com/wsapi?' +
|
|
'callname=GetCategories' +
|
|
'&siteid=0' +
|
|
'&appid=' + sAPP_ID +
|
|
'&version=' + sEBAY_VERSION
|
|
);
|
|
|
|
mm.SetOperationCustomData(
|
|
'ebay',
|
|
'IeBayAPIInterfaceService',
|
|
'GetPopularKeywords',
|
|
'Address',
|
|
'https://api.sandbox.ebay.com/wsapi?' +
|
|
'callname=GetPopularKeywords' +
|
|
'&siteid=0' +
|
|
'&appid=' + sAPP_ID +
|
|
'&version=' + sEBAY_VERSION
|
|
|
|
);
|
|
|
|
end;
|
|
|
|
{ TPaginationResultType }
|
|
|
|
function TPaginationResultType.HasTotalNumberOfEntries: boolean;
|
|
begin
|
|
Result := ( FTotalNumberOfEntries <> 0 );
|
|
end;
|
|
|
|
function TPaginationResultType.HasTotalNumberOfPages: boolean;
|
|
begin
|
|
Result := ( FTotalNumberOfPages <> 0 );
|
|
end;
|
|
|
|
initialization
|
|
//RegisterEbayTypes();
|
|
|
|
end.
|