Class WebApi
Namespace: Casewhere.WebTrigger.DSL
Assembly: Casewhere.WebTrigger.dll
public class WebApi : IWebApi, IDslApi
Inheritance
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
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
The uri object
GetUserIp()
Get current user ip
public string GetUserIp()
Returns
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