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