public async Task <IActionResult> Decrypt([FromBody] DecryptDocumentRequest request) { if (request == null) { return(GetError(ErrorCodes.InvalidRequest, ErrorDescriptions.NoRequest, HttpStatusCode.BadRequest)); } var parameter = request.ToParameter(); string accessToken; TryGetAccessToken(out accessToken); try { var result = await _officeDocumentActions.Decrypt(parameter, accessToken, GetAuthenticateParameter(_options)); return(new OkObjectResult(result)); } catch (NoUmaAccessTokenException ex) { Response.Headers.Add("UmaResource", ex.UmaResourceId); Response.Headers.Add("UmaWellKnownUrl", ex.WellKnownConfiguration); return(GetError(ex.Code, ex.Message, HttpStatusCode.Unauthorized)); } catch (NotAuthorizedException ex) { return(GetError(ex.Code, ex.Message, HttpStatusCode.Unauthorized)); } catch (DocumentNotFoundException) { return(GetError(ErrorCodes.InvalidRequest, "the document doesn't exist", HttpStatusCode.NotFound)); } }
public static DecryptOfficeDocumentParameter ToParameter(this DecryptDocumentRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } return(new DecryptOfficeDocumentParameter { Credentials = request.Credentials, DocumentId = request.DocumentId, Kid = request.Kid }); }
public async Task <GetDecryptedDocumentResponse> Execute(DecryptDocumentRequest request, string url, string accessToken) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (string.IsNullOrWhiteSpace(url)) { throw new ArgumentNullException(nameof(url)); } var httpClient = _httpClientFactory.GetHttpClient(); var serializedPostPermission = JsonConvert.SerializeObject(request); var body = new StringContent(serializedPostPermission, Encoding.UTF8, "application/json"); var httpRequest = new HttpRequestMessage { Method = HttpMethod.Post, Content = body, RequestUri = new Uri($"{url}/decrypt") }; if (!string.IsNullOrWhiteSpace(accessToken)) { httpRequest.Headers.Add("Authorization", "Bearer " + accessToken); } var httpResponse = await httpClient.SendAsync(httpRequest).ConfigureAwait(false); var json = await httpResponse.Content.ReadAsStringAsync(); try { httpResponse.EnsureSuccessStatusCode(); } catch (Exception ex) { if (!string.IsNullOrWhiteSpace(json)) { return(new GetDecryptedDocumentResponse { ContainsError = true, Error = new ErrorResponse { Error = "internal", ErrorDescription = ex.Message } }); } return(new GetDecryptedDocumentResponse { ContainsError = true, Error = JsonConvert.DeserializeObject <ErrorResponse>(json) }); } return(new GetDecryptedDocumentResponse { ContainsError = false, Content = JsonConvert.DeserializeObject <DecryptedResponse>(json) }); }
public Task <GetDecryptedDocumentResponse> Decrypt(DecryptDocumentRequest request, string url, string accessToken) { return(_decryptOfficeDocumentOperation.Execute(request, url, accessToken)); }
public async Task <GetDecryptedDocumentResponse> DecryptResolve(DecryptDocumentRequest request, string configurationUrl, string accessToken) { var configuration = await _getConfigurationOperation.Execute(new Uri(configurationUrl)).ConfigureAwait(false); return(await _decryptOfficeDocumentOperation.Execute(request, configuration.OfficeDocumentsEndpoint, accessToken).ConfigureAwait(false)); }