RESTful Engine V2 .NET Client Reference

This article describes how to get the Windward RESTful V2 .NETClient installed, as well as a list of all methods and models defined in the client.

Setting up the Client

To see a sample application using the Windward RESTful V2 .NET Client, please refer to our sample .NET application github page

You can add the client as a NuGet package to your .NET project or solution:

  • NuGet package name: WindwardRestApi
  • NuGet package latest version: 21.0.0.0

You then want to import the Client class, and instantiate an instance of the client:

using WindwardRestApi.src.Api;
.
.
.
public class Program    
{        
    private static WindwardClient client;
    .
    .
    client = new WindwardClient(new Uri(restful_engine_url));

Client Models

This section will go over the relevant models associated with the client that you will use.

To import the models into your project, use:

using WindwardRestApi.src.Model;

Template:

These are the parameters for the Template object constructor

:param callback : If set, this url will be called with a POST when a job completes. If the text "{guid}" is in the url, that text will
be replaced with the Guid for the callback.
:type str

:param outputFormat : The desired output file type (set using the Template.OutputFormatEnum())
:type str

:param data : The file path for your template (the client will encode to base64) (only use if connectionString is None)
:type str : string representation of the file path

:param connectionString : The connection string to your template file (only use if data is None)
:type str

:param format : The format of the template to be processed (if left empty it will auto populate)
:type str

:param properties : Windward properties for this report. These override any properties set in the configuration file on the server side.
:type List[Property] : A list of Property objects

:param parameters : A set of input parameters for this report. The parameters are global and shared among all data sources.
:type List[Parameter] : A list of Property objects

:param datasources : The datasources to apply to the template. The datasources are applied simultaneously.
:type List[Datasource] : A list of Datasource objects

:param tag : A tag you want to assign to the template. 
This is passed in to the repository job handlers and is set in the final generated Report object
:type str

:param trackImports : Return all imports with the generated document
:type bool

:param trackErrors : Enable or disable the error handling and verify functionality.
:type bool

:param mainPrinter : If you are using printer output use to specify main printer. Printer must be recognized by Network
:type str

:param firstPagePrinter : Set first page printer if main printer is already set
:type str

:param printerJobName : Assign the print job a name
:type str

:param printCopies : Set number of copies the print job should print
:type str

:param printDuplex : Selects the printers duplex mode
:type str

Here are the different constructors for the Template object:

Template(OutputFormatEnum outputFormat, string connectionString, FormatEnum format)

Template(OutputFormatEnum outputFormat, byte[] data, FormatEnum format)

Template(string connectionString, FormatEnum format)

Template(byte[] data, FormatEnum format)

Template()


Only set the input parameters that apply to your report. You must have either the data input parameter or the connectionString input parameter set.

XML 1.0 Data Source:

These are the input parameters for the XML 1.0 data source constructor:

:param name : The datasource name that maps to the datasource attribute in tags
:type str

:param connectionString : The connection string to the XML1 data (only use if data is None)
:type str

:param data : The file path to the XML1 data file (only use if connectionString is None)
:type str : the file path to the XML1 data file as a string

:param schemaConnectionString : The connection string to the XSD file. None if no schema
:type str

Here are the different constructors for the Xml_10DataSource object:

Xml_10DataSource(string name, string connectionString, string schemaConnectionString)

Xml_10DataSource(string name, byte[] data, byte[] schemaData)


SQL Data Source:

These are the input parameters for the SQL data source constructor:

:param name : The datasource name that maps to the datasource attribute in tags
:type str

:param className : The ADO.NET connector classname
:type str

:param connectionString : The connection string to the SQL data
:type str

Here is the constructor for the SqlDataSource object:

SqlDataSource(string name, string className, string connectionString)

Salesforce OAuth Data Source:

These are the input parameters for the SalesforceOauth data source constructor:

:param name : The datasource name that maps to the datasource attribute in tags
:type str

:param connectionString : The connection string to the SalesforceOAuth data
:type str

Here is the constructor for the SalesforceOAuthDataSourceobject:

SalesforceOAuthDataSource(string name, string connectionString)

Salesforce Data Source:

These are the input parameters for the Salesforce data source constructor:

:param name : The datasource name that maps to the datasource attribute in tags
:type str

:param connectionString : The connection string to the Salesforce data
:type str

Here is the constructor for the SalesforceDataSource object:

SalesforceDataSource(string name, string connectionString)

OData Source:

These are the input parameters for the OData data source constructor:

:param name : The datasource name that maps to the datasource attribute in tags
:type str

:param connectionString : The connection string to the OData data
:type str

Here is the constructor for the ODataDataSource object:

ODataDataSource(string name, string connectionString)

JSON Data Source:

These are the input parameters for the JSON data source constructor:

:param name : The datasource name that maps to the datasource attribute in tags
:type str

:param connectionString : The connection string to the JSON data file (only use if data is None)
:type str

:param data : The file path to the JSON data file (only use if connectionString is None)
:type str : the file path to the JSON data file as a string

Here arethe constructors for the JsonDataSource object:

JsonDataSource(string name, string connectionString)

JsonDataSource(string name, byte[] data)

Parameter:

These are the input parameters for the Parameter constructor:

:param name : The name of the property
:type str

:param value: The value of the property. You can pass any primitive, null, a DateTime, or DateTimeOffset. You cannot pass lists or arrays
:type object

(Parameter value explained next)

The template object takes in a List<Parameter>, so if you have multiple, append them to an array and pass them in that way.

template.Parameters.Add(new Parameter(pair.Key, pair.Value));

Client Methods

Constructor:

:param Uri: The uri to your RESTful engine instance
:type str

:param licenseKey: Optional parameter if you wanted to process a report with a specific license key.

:type str

This is how you would call it:

client = new WindwardClient(new Uri(restful_engine_url));

Client.GetVersion():

This method is used to get the version information with regards to the server and the local client. No input parameters. 

How to call:

VersionInfo version = client.GetVersion().Result;

Returns version data

Client.postDocument(Template t):

This method is used to post the constructed template object to the RESTful engine. Takes in a Template object

How to call:

Document document = client.PostDocument(template).Result;

Returns a document object 

Client.getDocument.Status(string GUID):

This method is used to get the status of the document being processed. You MUST use this method to check the status of the document before getting the document back.

How to call:

HttpStatusCode status = client.GetDocumentStatus(guid).Result;

This is how I recommend using this in your application:

 while (true)            
{                
   Thread.Sleep(100);                
   HttpStatusCode status = client.GetDocumentStatus(guid).Result;                 if (status == HttpStatusCode.Found)                    
      break;                
   if (status == HttpStatusCode.Accepted || status == HttpStatusCode.Created)        continue;

We need to wait until GetDocumentStatus() returns 302. The method returns Http status codes.

Client.GetDocument(string GUID):

This method is used to get the document after its done processing. 

Document document = client.GetDocument(guid).Result;

0 Comments

Add your comment

E-Mail me when someone replies to this comment