//------------------------------------------------------------------
// Proxy Unit Generated by Delphi Microservices Container 4.3.20
// Do not modify this unit!
// Generated at: 2025-04-26 18.35.09
//------------------------------------------------------------------
unit ReportsRPCProxy;
interface
uses
System.SysUtils,
System.Classes,
MVCFramework.JSONRPC,
MVCFramework.JSONRPC.Client,
MVCFramework.Serializer.Commons,
System.Net.URLClient,
JsonDataObjects;
type
IReportsRPCProxy = interface
['{50F3D865-FEDE-4402-A82F-C3AF5DF2A30C}']
function RPCExecutor: IMVCJSONRPCExecutor;
procedure IgnoreInvalidCert;
///
/// Invokes [function GenerateMultipleReport(const Token: string; const Template: TJsonObject; const ReportData: TJsonObject; const OutputFormat: string): TJsonObject]
/// Generates report based on a docx template and a JSON structure. Generates one PDF file for each element in the "items" JSON property.
///
function GenerateMultipleReport(const Token: string; const Template: TJsonObject; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
///
/// Invokes [function GenerateMultipleReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJsonObject]
/// Generates report based on a docx template named "report_name" stored on server and a JSON structure. Generates one PDF file for each element in the "items" JSON property and return it as zipped base64 file.
///
function GenerateMultipleReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
///
/// Invokes [function GenerateReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJsonObject]
/// Generates a report based on a docx template named "report_name" stored on server and a JSON structure. Generates only one PDF file and return it as not compressed base64 stream, just save it and you get the PDF - the "items" JSON property must contains a single object.
///
function GenerateReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
///
/// Invokes [function GenerateMultipleReportAsync(const Token: string; const ReportName: string; const Template: TJsonObject; const ReportData: TJsonObject; const UserToNotify: TJsonArray; const OutputFormat: string): TJsonObject]
/// Generates report asynchronously based on a docx template and a JSON structure. Generates one PDF file for each element in the "items" JSON property.
///
function GenerateMultipleReportAsync(const Token: string; const ReportName: string; const Template: TJsonObject; const ReportData: TJsonObject; const UserToNotify: TJsonArray; const OutputFormat: string): TJDOJsonObject;
///
/// Invokes [function GetAsyncReport(const Token: string; const ReportID: string): TJsonObject]
/// Returns a report generated asychronously with GenerateMultipleReportAsync
///
function GetAsyncReport(const Token: string; const ReportID: string): TJDOJsonObject;
///
/// Invokes [function GetStoredReportNames(const Token: string; const RegExExpressionFilter: string): TJsonObject]
/// Returns all the stored report template names
///
function GetStoredReportNames(const Token: string; const RegExExpressionFilter: string): 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;
TReportsRPCProxy = class(TInterfacedObject, IReportsRPCProxy)
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 [function GenerateMultipleReport(const Token: string; const Template: TJsonObject; const ReportData: TJsonObject; const OutputFormat: string): TJsonObject]
/// Generates report based on a docx template and a JSON structure. Generates one PDF file for each element in the "items" JSON property.
///
function GenerateMultipleReport(const Token: string; const Template: TJsonObject; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
///
/// Invokes [function GenerateMultipleReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJsonObject]
/// Generates report based on a docx template named "report_name" stored on server and a JSON structure. Generates one PDF file for each element in the "items" JSON property and return it as zipped base64 file.
///
function GenerateMultipleReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
///
/// Invokes [function GenerateReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJsonObject]
/// Generates a report based on a docx template named "report_name" stored on server and a JSON structure. Generates only one PDF file and return it as not compressed base64 stream, just save it and you get the PDF - the "items" JSON property must contains a single object.
///
function GenerateReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
///
/// Invokes [function GenerateMultipleReportAsync(const Token: string; const ReportName: string; const Template: TJsonObject; const ReportData: TJsonObject; const UserToNotify: TJsonArray; const OutputFormat: string): TJsonObject]
/// Generates report asynchronously based on a docx template and a JSON structure. Generates one PDF file for each element in the "items" JSON property.
///
function GenerateMultipleReportAsync(const Token: string; const ReportName: string; const Template: TJsonObject; const ReportData: TJsonObject; const UserToNotify: TJsonArray; const OutputFormat: string): TJDOJsonObject;
///
/// Invokes [function GetAsyncReport(const Token: string; const ReportID: string): TJsonObject]
/// Returns a report generated asychronously with GenerateMultipleReportAsync
///
function GetAsyncReport(const Token: string; const ReportID: string): TJDOJsonObject;
///
/// Invokes [function GetStoredReportNames(const Token: string; const RegExExpressionFilter: string): TJsonObject]
/// Returns all the stored report template names
///
function GetStoredReportNames(const Token: string; const RegExExpressionFilter: string): 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 TReportsRPCProxy.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 TReportsRPCProxy.NewReqID: Int64;
begin
Result := 10000 + Random(10000000);
end;
function TReportsRPCProxy.RPCExecutor: IMVCJSONRPCExecutor;
begin
Result := fRPCExecutor;
end;
procedure TReportsRPCProxy.IgnoreInvalidCert;
begin
fRPCExecutor.SetOnValidateServerCertificate(IgnoreInvalidServerCertificate);
end;
procedure TReportsRPCProxy.IgnoreInvalidServerCertificate(
const Sender: TObject; const ARequest: TURLRequest;
const Certificate: TCertificate; var Accepted: Boolean);
begin
Accepted := True;
end;
function TReportsRPCProxy.GenerateMultipleReport(const Token: string; const Template: TJsonObject; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GenerateMultipleReport');
lReq.Params.Add(Token);
lReq.Params.Add(Template);
lReq.Params.Add(ReportData);
lReq.Params.Add(OutputFormat);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TReportsRPCProxy.GenerateMultipleReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GenerateMultipleReportByName');
lReq.Params.Add(Token);
lReq.Params.Add(ReportName);
lReq.Params.Add(ReportData);
lReq.Params.Add(OutputFormat);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TReportsRPCProxy.GenerateReportByName(const Token: string; const ReportName: string; const ReportData: TJsonObject; const OutputFormat: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GenerateReportByName');
lReq.Params.Add(Token);
lReq.Params.Add(ReportName);
lReq.Params.Add(ReportData);
lReq.Params.Add(OutputFormat);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TReportsRPCProxy.GenerateMultipleReportAsync(const Token: string; const ReportName: string; const Template: TJsonObject; const ReportData: TJsonObject; const UserToNotify: TJsonArray; const OutputFormat: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GenerateMultipleReportAsync');
lReq.Params.Add(Token);
lReq.Params.Add(ReportName);
lReq.Params.Add(Template);
lReq.Params.Add(ReportData);
lReq.Params.Add(UserToNotify);
lReq.Params.Add(OutputFormat);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TReportsRPCProxy.GetAsyncReport(const Token: string; const ReportID: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GetAsyncReport');
lReq.Params.Add(Token);
lReq.Params.Add(ReportID);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TReportsRPCProxy.GetStoredReportNames(const Token: string; const RegExExpressionFilter: string): TJDOJsonObject;
var
lReq: IJSONRPCRequest;
lResp: IJSONRPCResponse;
begin
lReq := TJSONRPCRequest.Create(NewReqID, 'GetStoredReportNames');
lReq.Params.Add(Token);
lReq.Params.Add(RegExExpressionFilter);
lResp := fRPCExecutor.ExecuteRequest(lReq);
Result := lResp.ResultAsJSONObject.Clone as TJDOJsonObject; //TJsonObject
end;
function TReportsRPCProxy.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 TReportsRPCProxy.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.