public async Task OnAuthorizationAsync(AuthorizationFilterContext context) { if (string.IsNullOrWhiteSpace(DWKitRuntime.IntegrationApiKey)) { context.Result = new UnauthorizedObjectResult("IntegrationApiKey must have value. Set it in DWKit settings"); return; } context.HttpContext.Request.EnableBuffering(); var queryDictionary = await IntegrationApiHttp.GetParametersFromRequest(context.HttpContext.Request); context.HttpContext.Request.Body.Position = 0; queryDictionary.TryGetValue(IntegrationApiKeys.ApiKey, out var queryKey); if (await Authenticate(queryKey).ConfigureAwait(false)) { return; } var(_, headerValue) = context.HttpContext.Request.Headers.FirstOrDefault(header => header.Key.Equals(IntegrationApiKeys.HeaderApiKey, StringComparison.OrdinalIgnoreCase)); if (!await Authenticate(headerValue.ToString()).ConfigureAwait(false)) { context.Result = new UnauthorizedObjectResult(Message); } }
public async Task <ActionResult> FormApi() { try { var result = await IntegrationApiHttp.Process(HttpContext.Request); return(Json(result)); } catch (Exception ex) { return(Json(new IntegrationApiFailResponse(ex))); } }
public async Task <ActionResult> GetSwaggerFile() { try { var swagger = await IntegrationApiHttp.GetSwaggerSpecsAsync(HttpContext.Request); var filename = "dwkit.yaml"; var contentType = "application/yaml"; return(File(Encoding.UTF8.GetBytes(swagger), contentType, filename)); } catch (Exception ex) { return(Json(new FailResponse(ex))); } }