private async Task OnProcess(IDictionary<string, object> owinenv)
{
var env = new OWINEnv(owinenv);
var cancel_token = env.CallCanlelled;
try {
if (!HTTPUtils.CheckAuthorization(env.GetAuthorizationToken(), env.AccessControlInfo)) {
throw new HTTPError(HttpStatusCode.Unauthorized);
}
if (env.RequestMethod!="HEAD" && env.RequestMethod!="GET") {
throw new HTTPError(HttpStatusCode.MethodNotAllowed);
}
await SendResponseFileContent(env, cancel_token);
}
catch (HTTPError err) {
env.ResponseStatusCode = (int)err.StatusCode;
}
catch (UnauthorizedAccessException) {
env.ResponseStatusCode = (int)HttpStatusCode.Forbidden;
}
}