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
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
The uri object
GetUserIp()
Get current user ip
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");
void Redirect(string url)
Parameters
url
string
Redirect url