public async Task <ConsentAuthorizeResponseContainer <T> > PostAuthorizationRequestAsync <T>( ConsentDiscoveryDocumentResponse discovery, ConsentAuthorizeRequest requestObject, T context) where T : class { var response = new ConsentAuthorizeResponseContainer <T> { Context = context }; try { var s_cts = new CancellationTokenSource(); s_cts.CancelAfter(_options.RequestTimeout); var httpClient = GetHttpClient(); using var httpResponse = await PostJsonContentAsync(discovery.AuthorizeEndpoint, httpClient, requestObject, s_cts.Token); if (!httpResponse.IsSuccessStatusCode) { response.Response = new ConsentAuthorizeResponse() { Subject = requestObject.Subject, Scopes = requestObject.Scopes, Authorized = false, Error = new ConsentBaseResponse.ConsentError { Message = $"StatusCode={httpResponse.StatusCode}", StatusCode = (int)httpResponse.StatusCode } }; if (httpResponse.Content is object) { var contentText = await httpResponse.Content.ReadAsStringAsync(); response.Response.Error.Message = contentText; } _logger.LogError($"authorizationEndPoint={discovery.AuthorizeEndpoint},statusCode={httpResponse.StatusCode},content=\'{response.Response.Error.Message}\'"); return(response); } if (httpResponse.Content is object && httpResponse.Content.Headers.ContentType.MediaType == "application/json") { var contentStream = await httpResponse.Content.ReadAsStreamAsync(); var consentAuthorizeResponse = await System.Text.Json.JsonSerializer.DeserializeAsync <ConsentAuthorizeResponse>(contentStream, new System.Text.Json.JsonSerializerOptions { IgnoreNullValues = true, PropertyNameCaseInsensitive = true }); response.Response = consentAuthorizeResponse; return(response); } throw new Exception("HTTP Response was invalid and cannot be deserialized."); } catch (Exception ex) { response.Response = new ConsentAuthorizeResponse() { Subject = requestObject.Subject, Scopes = requestObject.Scopes, Authorized = false, Error = new ConsentBaseResponse.ConsentError { Message = ex.Message, StatusCode = (int)HttpStatusCode.BadRequest } }; return(response); } }
public async Task <ConsentAuthorizeResponse> PostAuthorizationRequestAsync( ConsentDiscoveryDocumentResponse discovery, ConsentAuthorizeRequest requestObject) { try { var httpClient = new HttpClient(); using var httpResponse = await PostJsonContentAsync(discovery.AuthorizeEndpoint, httpClient, requestObject); if (!httpResponse.IsSuccessStatusCode) { var result = new ConsentAuthorizeResponse() { Subject = requestObject.Subject, Scopes = requestObject.Scopes, Authorized = false, Error = new Error { Message = $"StatusCode={httpResponse.StatusCode}", StatusCode = (int)httpResponse.StatusCode } }; if (httpResponse.Content is object) { var contentText = await httpResponse.Content.ReadAsStringAsync(); result.Error.Message = contentText; } _logger.LogError($"statusCode={httpResponse.StatusCode},content=\'{result.Error.Message}\'"); return(result); } if (httpResponse.Content is object && httpResponse.Content.Headers.ContentType.MediaType == "application/json") { var contentStream = await httpResponse.Content.ReadAsStreamAsync(); var consentAuthorizeResponse = await System.Text.Json.JsonSerializer.DeserializeAsync <ConsentAuthorizeResponse>(contentStream, new System.Text.Json.JsonSerializerOptions { IgnoreNullValues = true, PropertyNameCaseInsensitive = true }); return(consentAuthorizeResponse); } throw new Exception("HTTP Response was invalid and cannot be deserialised."); } catch (Exception ex) { var result = new ConsentAuthorizeResponse() { Subject = requestObject.Subject, Scopes = requestObject.Scopes, Authorized = false, Error = new Error { Message = ex.Message, StatusCode = (int)HttpStatusCode.BadRequest } }; return(result); } }