Table of Contents

Class WebApi

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

public class WebApi : IWebApi, IDslApi

Inheritance

objectWebApi

Implements

IWebApi, IDslApi

Inherited Members

object.ToString(), object.Equals(object), object.Equals(object, object), object.ReferenceEquals(object, object), object.GetHashCode(), object.GetType(), object.MemberwiseClone()

Extension Methods

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

Constructors

WebApi(IWebTriggerHandler, IAuthorizationResultService, IDocumentApi)

public WebApi(IWebTriggerHandler webTriggerHandler, IAuthorizationResultService authorizationResultService, IDocumentApi documentApi)

Parameters

webTriggerHandler IWebTriggerHandler

authorizationResultService IAuthorizationResultService

documentApi IDocumentApi

Methods

AbandonAuthorization()

Stop the flow of initial authorization

public 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");

public 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.

public 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.

public 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.

public 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.

public 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).

public 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);

public void CreateResponse<T>(T data)

Parameters

data T

Response data

Type Parameters

T

CreateTextResponse(string, string)

Create http response with text data

public 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

public 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();

public 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();

public 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();

public Uri GetUri()

Returns

Uri

The uri object

GetUserIp()

Get current user ip

public 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");

public void Redirect(string url)

Parameters

url string

Redirect url