Table of Contents

Interface IWebApi

Namespace: Casewhere.WebTrigger.DSL
Assembly: Casewhere.WebTrigger.dll

Provide methods to interact with current http request.

public interface IWebApi : IDslApi

Implements

IDslApi

Extension Methods

ObjectExtension.ConvertToBsonValue(object), EnumExtensions.DeepClone<IWebApi>(IWebApi)

Methods

AbandonAuthorization()

Stop the flow of initial authorization

void AbandonAuthorization()

Examples

var webApi = ctx.Use<IWebApi>();        
webApi.AbandonAuthorization();

CreateErrorResponse(int, string)

Create http error response with status code and message

var webApi = ctx.Use<IWebApi>();
webApi.CreateErrorResponse(401, "You are not authorized");

void CreateErrorResponse(int statusCode, string message)

Parameters

statusCode int

Status code

message string

Error message

CreateFileResponse(string, string, string, string)

Create http file response with a given file name, file path, media type and disposition header. The file can be downloaded or will be viewed in the browser client.

void CreateFileResponse(string fileName, string filePath, string mediaType = "application/octet-stream", string dispositionHeader = "attachment")

Parameters

fileName string

filePath string

mediaType string

dispositionHeader string

CreateFileResponse(string, byte[], string, string)

Create http file response with a given file name, file content, media type and disposition header. The file can be downloaded or will be viewed in the browser client.

void CreateFileResponse(string fileName, byte[] fileContent, string mediaType = "application/octet-stream", string dispositionHeader = "attachment")

Parameters

fileName string

fileContent byte[]

mediaType string

dispositionHeader string

CreateFileResponse(string, Stream, string, string)

Create http file response with a given file name, file stream, media type and disposition header. The file can be downloaded or will be viewed in the browser client.

void CreateFileResponse(string fileName, Stream fileStream, string mediaType = "application/octet-stream", string dispositionHeader = "attachment")

Parameters

fileName string

fileStream Stream

mediaType string

dispositionHeader string

CreateFileResponse(DocumentInfo, string, string)

Create http file response with a given document info, media type and disposition header. The file can be downloaded or will be viewed in the browser client.

void CreateFileResponse(DocumentInfo documentInfo, string mediaType = "application/octet-stream", string dispositionHeader = "attachment")

Parameters

documentInfo DocumentInfo

mediaType string

dispositionHeader string

CreateFileResponse(string, Action<Stream>, string, string)

Create http file response with a given file name with an action named as beginWritingStream. That action is called when an output stream is available, allowing the action to write to it directly. Thus, allow we can write a largest file (more than 1GB with controlling memory usage).

void CreateFileResponse(string fileName, Action<Stream> beginWritingStream, string mediaType = "application/octet-stream", string dispositionHeader = "attachment")

Parameters

fileName string

beginWritingStream Action<Stream>

mediaType string

dispositionHeader string

Examples

var dataApi = ctx.Use<IDataApi>(); 
var webApi = ctx.Use<IWebApi>();

var collectionName = ctx.Parameters.Get<string>("name");
if (string.IsNullOrWhiteSpace(collectionName))
    throw new Casewhere.Common.Exceptions.BadDataException("Missing parameter name");
Log.Info("Start downloading {collectionName}", collectionName);
webApi.CreateFileResponse($"{collectionName}_{DateTime.UtcNow.ToString("yyyyMMddHHmmss")}.json", 
    // delegate function when beginning write data to client
    beginWritingStream: (outputStream) => {
    // prepare writer for output stream
    var writer = new StreamWriter(outputStream, encoding: Encoding.UTF8, bufferSize: 4096, leaveOpen: true);
    writer.AutoFlush = true;
    // read query data
    var filter = FilterBuilder.Create().Build();
    var query = DataEnumerationQuery.For(collectionName).FilterBy(filter);
    foreach (var employee in dataApi.Enumerate(query))
    {
        writer.WriteLine(JsonConvert.SerializeObject(employee) + ",");
    }
	// flush last data in memory before closing stream
    writer.Flush();      
	// close file after stream all content to client
	outputStream.Close();
});

CreateResponse<T>(T)

Create http response with data

var webApi = ctx.Use<IWebApi>();
var data = new { FirstName = "Thao", LastName = "Dinh" };
webApi.CreateResponse(data);

void CreateResponse<T>(T data)

Parameters

data T

Response data

Type Parameters

T

CreateTextResponse(string, string)

Create http response with text data

void CreateTextResponse(string text, string mediaType = "text/plain")

Parameters

text string

The text

mediaType string

The mediaType. Default is text/plain.

GetBrowserAgent()

Get the complete user-agent string of the client

string GetBrowserAgent()

Returns

string

The complete user-agent string of the client.

GetHeaders()

Get headers from the current request

var webApi = ctx.Use<IWebApi>();
var headers = webApi.GetHeaders();

IDictionary<string, IEnumerable<string>> GetHeaders()

Returns

IDictionary<string, IEnumerable<string>>

The header dictionary

GetQueryString()

Get query string from the current request

var webApi = ctx.Use<IWebApi>();
var queryString = webApi.GetQueryString();

IDictionary<string, IEnumerable<string>> GetQueryString()

Returns

IDictionary<string, IEnumerable<string>>

The query string dictionary

GetUri()

Get URI from the current request

var webApi = ctx.Use<IWebApi>();
var uri = webApi.GetUri();

Uri GetUri()

Returns

Uri

The uri object

GetUserIp()

Get current user ip

string GetUserIp()

Returns

string

Current user ip

Redirect(string)

Redirect the specific url

var webApi = ctx.Use<IWebApi>();
webApi.Redirect("https://api-local.casewhere.com/external/v0.1/trigger/kk-nemlogin-logout-callback?nonce=b3c7c6ea-f38a-4b2a-aa6e-9c69fce65ec1");

void Redirect(string url)

Parameters

url string

Redirect url