//------------------------------------------------------------------
// Proxy Unit Generated by Delphi Microservices Container 4.3.20
// Do not modify this unit!
// Generated at: 2025-04-26 18.16.51
//------------------------------------------------------------------
unit EmailRPCProxy;
interface
uses
System.SysUtils,
System.Classes,
MVCFramework.JSONRPC,
MVCFramework.JSONRPC.Client,
MVCFramework.Serializer.Commons,
System.Net.URLClient,
JsonDataObjects;
type
IEmailRPCProxy = interface
['{A05F647F-2F31-4BE6-9E6C-5E180D021757}']
function RPCExecutor: IMVCJSONRPCExecutor;
procedure IgnoreInvalidCert;
///
/// Invokes [procedure SetUserSender(const Token: string; const UserID: Int64; aSender: TJsonObject)]
///
procedure SetUserSender(const Token: string; const UserID: Int64; aSender: TJsonObject);
///
/// Invokes [function RemoveUserSender(const Token: string; const UserID: Int64): TJsonObject]
///
function RemoveUserSender(const Token: string; const UserID: Int64): TJDOJsonObject;
///
/// Invokes [function GetUserSender(const Token: string; const UserID: Int64): TSender]
///
function GetUserSender(const Token: string; const UserID: Int64): IJSONRPCResponse;
///
/// Invokes [function GetMessagesByUserName(const Token: string; const SenderUserName: string): TObjectList]
/// Returns the messages sent by SenderUserName
///
function GetMessagesByUserName(const Token: string; const SenderUserName: string): IJSONRPCResponse;
///
/// Invokes [function GetMyMessages(const Token: string; const StatusList: TJsonArray): TObjectList]
/// Returns the messages owned by the logged user
///
function GetMyMessages(const Token: string; const StatusList: TJsonArray): IJSONRPCResponse;
///
/// Invokes [function GetMessageByID(const Token: string; const MessageID: Int64): TMessage]
/// Returns the message with id MessageID
///
function GetMessageByID(const Token: string; const MessageID: Int64): IJSONRPCResponse;
///
/// Invokes [function GetMessagesByStatus(const Token: string; const StatusList: TJsonArray): TObjectList]
/// Returns the messages with the status contained in the StatusList array
///
function GetMessagesByStatus(const Token: string; const StatusList: TJsonArray): IJSONRPCResponse;
///
/// Invokes [function GetMessagesByRQL(const Token: string; const Filter: TJsonObject): TJsonObject]
/// Returns all messages (up to 6 months) which match the filter.rql property
///
function GetMessagesByRQL(const Token: string; const Filter: TJsonObject): TJDOJsonObject;
///
/// Invokes [function SendMessage(const Token: string; const aMessage: TJsonObject): TJsonObject]
/// Send a message using information stored in aMessage
///
function SendMessage(const Token: string; const aMessage: TJsonObject): TJDOJsonObject;
///
/// Invokes [function DeleteMessageByID(const Token: string; const MessageID: Int64): TJsonObject]
///
function DeleteMessageByID(const Token: string; const MessageID: Int64): TJDOJsonObject;
///
/// Invokes [function AdminSendMessage(const Token: string; const SenderUserName: string; const aMessage: TJsonObject): TJsonObject]
///
function AdminSendMessage(const Token: string; const SenderUserName: string; const aMessage: TJsonObject): TJDOJsonObject;
///
/// Invokes [function AdminSendTestMessage(const Token: string; const SenderUserName: string; const Recipient: string): TJsonObject]
///
function AdminSendTestMessage(const Token: string; const SenderUserName: string; const Recipient: string): TJDOJsonObject;
///
/// Invokes [function CreateMessage(const Token: string; const aMessage: TJsonObject): TJsonObject]
///
function CreateMessage(const Token: string; const aMessage: TJsonObject): TJDOJsonObject;
///
/// Invokes [function AddAttachmentToMessage(const Token: string; const aMessageID: Int64; const aIsRelated: Boolean; const aAttachment: TJsonObject): TJsonObject]
///
function AddAttachmentToMessage(const Token: string; const aMessageID: Int64; const aIsRelated: Boolean; const aAttachment: TJsonObject): TJDOJsonObject;
///
/// Invokes [function CompleteMessage(const Token: string; const aMessageID: Int64): TJsonObject]
///
function CompleteMessage(const Token: string; const aMessageID: Int64): TJDOJsonObject;
///
/// Invokes [function BulkSendMessages(const Token: string; const aMetaMessage: TJsonObject; const aBulkMessagesData: TJsonObject): TJsonObject]
///
function BulkSendMessages(const Token: string; const aMetaMessage: TJsonObject; const aBulkMessagesData: TJsonObject): TJDOJsonObject;
///
/// Invokes [function Login(const UserName: string; const Password: string): TJsonObject]
/// Returns the JWT token which can be used to call all other methods.
///
function Login(const UserName: string; const Password: string): TJDOJsonObject;
///
/// Invokes [function RefreshToken(const Token: string): TJsonObject]
/// Extends the expiration time of a still-valid token. Clients must use the token returned instead of the previous one.
///
function RefreshToken(const Token: string): TJDOJsonObject;
end;
TEmailRPCProxy = class(TInterfacedObject, IEmailRPCProxy)
protected
fRPCExecutor: IMVCJSONRPCExecutor;
function NewReqID: Int64;
procedure IgnoreInvalidServerCertificate(const Sender: TObject;
const ARequest: TURLRequest; const Certificate: TCertificate; var Accepted: Boolean);
public
function RPCExecutor: IMVCJSONRPCExecutor;
procedure IgnoreInvalidCert;
constructor Create(const EndpointURL: String); virtual;
///
/// Invokes [procedure SetUserSender(const Token: string; const UserID: Int64; aSender: TJsonObject)]
///
procedure SetUserSender(const Token: string; const UserID: Int64; aSender: TJsonObject);
///
/// Invokes [function RemoveUserSender(const Token: string; const UserID: Int64): TJsonObject]
///
function RemoveUserSender(const Token: string; const UserID: Int64): TJDOJsonObject;
///
/// Invokes [function GetUserSender(const Token: string; const UserID: Int64): TSender]
///
function GetUserSender(const Token: string; const UserID: Int64): IJSONRPCResponse;
///
/// Invokes [function GetMessagesByUserName(const Token: string; const SenderUserName: string): TObjectList]
/// Returns the messages sent by SenderUserName
///
function GetMessagesByUserName(const Token: string; const SenderUserName: string): IJSONRPCResponse;
///
/// Invokes [function GetMyMessages(const Token: string; const StatusList: TJsonArray): TObjectList]
/// Returns the messages owned by the logged user
///
function GetMyMessages(const Token: string; const StatusList: TJsonArray): IJSONRPCResponse;
///
/// Invokes [function GetMessageByID(const Token: string; const MessageID: Int64): TMessage]
/// Returns the message with id MessageID
///
function GetMessageByID(const Token: string; const MessageID: Int64): IJSONRPCResponse;
///
/// Invokes [function GetMessagesByStatus(const Token: string; const StatusList: TJsonArray): TObjectList]
/// Returns the messages with the status contained in the StatusList array
///
function GetMessagesByStatus(const Token: string; const StatusList: TJsonArray): IJSONRPCResponse;
///
/// Invokes [function GetMessagesByRQL(const Token: string; const Filter: TJsonObject): TJsonObject]
/// Returns all messages (up to 6 months) which match the filter.rql property
///
function GetMessagesByRQL(const Token: string; const Filter: TJsonObject): TJDOJsonObject;
///
/// Invokes [function SendMessage(const Token: string; const aMessage: TJsonObject): TJsonObject]
/// Send a message using information stored in aMessage
///
function SendMessage(const Token: string; const aMessage: TJsonObject): TJDOJsonObject;
///
/// Invokes [function DeleteMessageByID(const Token: string; const MessageID: Int64): TJsonObject]
///
function DeleteMessageByID(const Token: string; const MessageID: Int64): TJDOJsonObject;
///
/// Invokes [function AdminSendMessage(const Token: string; const SenderUserName: string; const aMessage: TJsonObject): TJsonObject]
///
function AdminSendMessage(const Token: string; const SenderUserName: string; const aMessage: TJsonObject): TJDOJsonObject;
///
/// Invokes [function AdminSendTestMessage(const Token: string; const SenderUserName: string; const Recipient: string): TJsonObject]
///
function AdminSendTestMessage(const Token: string; const SenderUserName: string; const Recipient: string): TJDOJsonObject;
///
/// Invokes [function CreateMessage(const Token: string; const aMessage: TJsonObject): TJsonObject]
///
function CreateMessage(const Token: string; const aMessage: TJsonObject): TJDOJsonObject;
///
/// Invokes [function AddAttachmentToMessage(const Token: string; const aMessageID: Int64; const aIsRelated: Boolean; const aAttachment: TJsonObject): TJsonObject]
///
function AddAttachmentToMessage(const Token: string; const aMessageID: Int64; const aIsRelated: Boolean; const aAttachment: TJsonObject): TJDOJsonObject;
///
/// Invokes [function CompleteMessage(const Token: string; const aMessageID: Int64): TJsonObject]
///
function CompleteMessage(const Token: string; const aMessageID: Int64): TJDOJsonObject;
///
/// Invokes [function BulkSendMessages(const Token: string; const aMetaMessage: TJsonObject; const aBulkMessagesData: TJsonObject): TJsonObject]
///
function BulkSendMessages(const Token: string; const aMetaMessage: TJsonObject; const aBulkMessagesData: TJsonObject): TJDOJsonObject;
///
/// Invokes [function Login(const UserName: string; const Password: string): TJsonObject]
/// Returns the JWT token which can be used to call all other methods.
///
function Login(const UserName: string; const Password: string): TJDOJsonObject;
///
/// Invokes [function RefreshToken(const Token: string): TJsonObject]
/// Extends the expiration time of a still-valid token. Clients must use the token returned instead of the previous one.
///
function RefreshToken(const Token: string): TJDOJsonObject;
end;
implementation
constructor TEmailRPCProxy.Create(const EndpointURL: String);
begin
inherited Create;
fRPCExecutor := TMVCJSONRPCExecutor.Create(EndpointURL);
fRPCExecutor.AddHTTPHeader(TNetHeader.Create('Accept-Encoding', 'gzip,deflate'));
fRPCExecutor.AddHTTPHeader(TNetHeader.Create('User-Agent', 'dmscontainer-delphi-proxy'));
end;
function TEmailRPCProxy.NewReqID: Int64;
begin
Result := 10000 + Random(10000000);
end;
function TEmailRPCProxy.RPCExecutor: IMVCJSONRPCExecutor;
begin
Result := fRPCExecutor;
end;
procedure TEmailRPCProxy.IgnoreInvalidCert;
begin
fRPCExecutor.SetOnValidateServerCertificate(IgnoreInvalidServerCertificate);
end;
procedure TEmailRPCProxy.IgnoreInvalidServerCertificate(
const Sender: TObject; const ARequest: TURLRequest;
const Certificate: TCertificate; var Accepted: Boolean);
begin
Accepted := True;
end;
procedure TEmailRPCProxy.SetUserSender(const Token: string; const UserID: Int64; aSender: TJsonObject);
var
lNotification: IJSONRPCNotification;
begin
lNotification := TJSONRPCNotification.Create('SetUserSender');
lNotification.Params.Add(Token);
lNotification.Params.Add(UserID, TJSONRPCParamDataType.pdtLongInteger);
lNotification.Params.Add(aSender);
fRPCExecutor.ExecuteNotification(lNotification);
end;
function TEmailRPCProxy.RemoveUserSender(const Token: string; const UserID: Int64): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'RemoveUserSender');
lReq.Params.Add(Token);
lReq.Params.Add(UserID, TJSONRPCParamDataType.pdtLongInteger);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.GetUserSender(const Token: string; const UserID: Int64): IJSONRPCResponse;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GetUserSender');
lReq.Params.Add(Token);
lReq.Params.Add(UserID, TJSONRPCParamDataType.pdtLongInteger);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp; //TSender
end;
function TEmailRPCProxy.GetMessagesByUserName(const Token: string; const SenderUserName: string): IJSONRPCResponse;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GetMessagesByUserName');
lReq.Params.Add(Token);
lReq.Params.Add(SenderUserName);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp; //TObjectList
end;
function TEmailRPCProxy.GetMyMessages(const Token: string; const StatusList: TJsonArray): IJSONRPCResponse;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GetMyMessages');
lReq.Params.Add(Token);
lReq.Params.Add(StatusList);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp; //TObjectList
end;
function TEmailRPCProxy.GetMessageByID(const Token: string; const MessageID: Int64): IJSONRPCResponse;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GetMessageByID');
lReq.Params.Add(Token);
lReq.Params.Add(MessageID, TJSONRPCParamDataType.pdtLongInteger);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp; //TMessage
end;
function TEmailRPCProxy.GetMessagesByStatus(const Token: string; const StatusList: TJsonArray): IJSONRPCResponse;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GetMessagesByStatus');
lReq.Params.Add(Token);
lReq.Params.Add(StatusList);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp; //TObjectList
end;
function TEmailRPCProxy.GetMessagesByRQL(const Token: string; const Filter: TJsonObject): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GetMessagesByRQL');
lReq.Params.Add(Token);
lReq.Params.Add(Filter);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.SendMessage(const Token: string; const aMessage: TJsonObject): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'SendMessage');
lReq.Params.Add(Token);
lReq.Params.Add(aMessage);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.DeleteMessageByID(const Token: string; const MessageID: Int64): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'DeleteMessageByID');
lReq.Params.Add(Token);
lReq.Params.Add(MessageID, TJSONRPCParamDataType.pdtLongInteger);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.AdminSendMessage(const Token: string; const SenderUserName: string; const aMessage: TJsonObject): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'AdminSendMessage');
lReq.Params.Add(Token);
lReq.Params.Add(SenderUserName);
lReq.Params.Add(aMessage);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.AdminSendTestMessage(const Token: string; const SenderUserName: string; const Recipient: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'AdminSendTestMessage');
lReq.Params.Add(Token);
lReq.Params.Add(SenderUserName);
lReq.Params.Add(Recipient);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.CreateMessage(const Token: string; const aMessage: TJsonObject): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'CreateMessage');
lReq.Params.Add(Token);
lReq.Params.Add(aMessage);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.AddAttachmentToMessage(const Token: string; const aMessageID: Int64; const aIsRelated: Boolean; const aAttachment: TJsonObject): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'AddAttachmentToMessage');
lReq.Params.Add(Token);
lReq.Params.Add(aMessageID, TJSONRPCParamDataType.pdtLongInteger);
lReq.Params.Add(aIsRelated);
lReq.Params.Add(aAttachment);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.CompleteMessage(const Token: string; const aMessageID: Int64): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'CompleteMessage');
lReq.Params.Add(Token);
lReq.Params.Add(aMessageID, TJSONRPCParamDataType.pdtLongInteger);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.BulkSendMessages(const Token: string; const aMetaMessage: TJsonObject; const aBulkMessagesData: TJsonObject): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'BulkSendMessages');
lReq.Params.Add(Token);
lReq.Params.Add(aMetaMessage);
lReq.Params.Add(aBulkMessagesData);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.Login(const UserName: string; const Password: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'Login');
lReq.Params.Add(UserName);
lReq.Params.Add(Password);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TEmailRPCProxy.RefreshToken(const Token: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'RefreshToken');
lReq.Params.Add(Token);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
end.