public static ReadErrorResponse ( |
||
response | ||
return |
public static async Task <T> SendPostRequestAndDeserializeJsonResponseAsync <T>(string uri, RequestParameters requestParameters, CallState callState) { ClientMetrics clientMetrics = new ClientMetrics(); try { IHttpWebRequest request = NetworkPlugin.HttpWebRequestFactory.Create(uri); request.ContentType = "application/x-www-form-urlencoded"; AddCorrelationIdHeadersToRequest(request, callState); AdalIdHelper.AddAsHeaders(request); clientMetrics.BeginClientMetricsRecord(request, callState); SetPostRequest(request, requestParameters, callState); using (IHttpWebResponse response = await request.GetResponseSyncOrAsync(callState)) { VerifyCorrelationIdHeaderInReponse(response, callState); clientMetrics.SetLastError(null); return(DeserializeResponse <T>(response)); } } catch (WebException ex) { TokenResponse tokenResponse = OAuth2Response.ReadErrorResponse(ex.Response); clientMetrics.SetLastError(tokenResponse != null ? tokenResponse.ErrorCodes : null); throw new AdalServiceException(tokenResponse.Error, tokenResponse.ErrorDescription, tokenResponse.ErrorCodes, ex); } finally { clientMetrics.EndClientMetricsRecord(ClientMetricsEndpointType.Token, callState); } }
public async Task VerifyAnotherHostByInstanceDiscoveryAsync(string host, string tenant, CallState callState) { string instanceDiscoveryEndpoint = this.InstanceDiscoveryEndpoint; instanceDiscoveryEndpoint += ("?api-version=1.0&authorization_endpoint=" + AuthorizeEndpointTemplate); instanceDiscoveryEndpoint = instanceDiscoveryEndpoint.Replace("{host}", host); instanceDiscoveryEndpoint = instanceDiscoveryEndpoint.Replace("{tenant}", tenant); instanceDiscoveryEndpoint = HttpHelper.CheckForExtraQueryParameter(instanceDiscoveryEndpoint); ClientMetrics clientMetrics = new ClientMetrics(); try { IHttpWebRequest request = NetworkPlugin.HttpWebRequestFactory.Create(instanceDiscoveryEndpoint); request.Method = "GET"; HttpHelper.AddCorrelationIdHeadersToRequest(request, callState); AdalIdHelper.AddAsHeaders(request); clientMetrics.BeginClientMetricsRecord(request, callState); using (var response = await request.GetResponseSyncOrAsync(callState)) { HttpHelper.VerifyCorrelationIdHeaderInReponse(response, callState); InstanceDiscoveryResponse discoveryResponse = HttpHelper.DeserializeResponse <InstanceDiscoveryResponse>(response); clientMetrics.SetLastError(null); if (discoveryResponse.TenantDiscoveryEndpoint == null) { var ex = new AdalException(AdalError.AuthorityNotInValidList); Logger.LogException(null, ex); throw ex; } } } catch (WebException ex) { TokenResponse tokenResponse = OAuth2Response.ReadErrorResponse(ex.Response); clientMetrics.SetLastError(tokenResponse.ErrorCodes); if (tokenResponse.Error == "invalid_instance") { var serviceEx = new AdalServiceException(AdalError.AuthorityNotInValidList, ex); Logger.LogException(null, serviceEx); throw serviceEx; } else { var serviceEx = new AdalServiceException( AdalError.AuthorityValidationFailed, string.Format(CultureInfo.InvariantCulture, "{0}. {1}: {2}", AdalErrorMessage.AuthorityValidationFailed, tokenResponse.Error, tokenResponse.ErrorDescription), ex); Logger.LogException(null, serviceEx); throw serviceEx; } } finally { clientMetrics.EndClientMetricsRecord(ClientMetricsEndpointType.InstanceDiscovery, callState); } }