Skip to content

Commit a004bc0

Browse files
committed
Handling HTTP exceptions
1 parent 2750ee9 commit a004bc0

File tree

1 file changed

+28
-17
lines changed

1 file changed

+28
-17
lines changed

src/Umbraco.Cms.Integrations.Crm.Dynamics/Controllers/FormsController.cs

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -96,20 +96,24 @@ public async Task<string> GetAccessToken([FromBody] OAuthRequestDto authRequestD
9696
{ "code", authRequestDto.Code }
9797
};
9898

99-
var requestMessage = new HttpRequestMessage
99+
string responseContent = string.Empty;
100+
try
100101
{
101-
Method = HttpMethod.Post,
102-
RequestUri = new Uri(string.Format(AuthorizationService.OAuthProxyTokenEndpoint, AuthorizationService.OAuthProxyBaseUrl)),
103-
Content = new FormUrlEncodedContent(data)
104-
};
105-
requestMessage.Headers.Add("service_name", AuthorizationService.Service);
102+
var requestMessage = new HttpRequestMessage
103+
{
104+
Method = HttpMethod.Post,
105+
RequestUri = new Uri(string.Format(AuthorizationService.OAuthProxyTokenEndpoint, AuthorizationService.OAuthProxyBaseUrl)),
106+
Content = new FormUrlEncodedContent(data)
107+
};
108+
requestMessage.Headers.Add("service_name", AuthorizationService.Service);
106109

107-
var response = await ClientFactory().SendAsync(requestMessage);
108-
if (response.IsSuccessStatusCode)
109-
{
110-
var result = await response.Content.ReadAsStringAsync();
110+
var response = await ClientFactory().SendAsync(requestMessage);
111111

112-
var tokenDto = JsonConvert.DeserializeObject<TokenDto>(result);
112+
responseContent = await response.Content.ReadAsStringAsync();
113+
114+
response.EnsureSuccessStatusCode();
115+
116+
var tokenDto = JsonConvert.DeserializeObject<TokenDto>(responseContent);
113117

114118
var identity = await _dynamicsService.GetIdentity(tokenDto.AccessToken);
115119

@@ -118,18 +122,25 @@ public async Task<string> GetAccessToken([FromBody] OAuthRequestDto authRequestD
118122
else
119123
return "Error: " + identity.Error.Message;
120124

121-
return result;
122-
}
125+
return responseContent;
123126

124-
if (response.StatusCode == HttpStatusCode.BadRequest)
127+
}
128+
catch (HttpRequestException ex) when (ex.Message.Contains(HttpStatusCode.BadRequest.ToString()))
125129
{
126-
var errorResult = await response.Content.ReadAsStringAsync();
127-
var errorDto = JsonConvert.DeserializeObject<ErrorDto>(errorResult);
130+
var errorDto = JsonConvert.DeserializeObject<ErrorDto>(responseContent);
128131

129132
return "Error: " + errorDto.ErrorDescription;
130133
}
134+
catch (HttpRequestException ex) when (ex.Message.Contains(HttpStatusCode.Unauthorized.ToString()))
135+
{
136+
var errorDto = JsonConvert.DeserializeObject<ErrorDto>(responseContent);
131137

132-
return "Error: An unexpected error occurred.";
138+
return "Error: " + errorDto.ErrorDescription;
139+
}
140+
catch
141+
{
142+
return "Error: An unexpected error occurred.";
143+
}
133144
}
134145

135146
[HttpGet]

0 commit comments

Comments
 (0)