@@ -89,15 +89,16 @@ private static bool IsMacOS
89
89
/// <returns></returns>
90
90
protected async Task CreateExceptionForFailedRequest ( HttpResponseMessage res )
91
91
{
92
- var jsonError = JObject . Parse ( await res . Content . ReadAsStringAsync ( ) . ConfigureAwait ( false ) ) ;
93
- var sys = jsonError . SelectToken ( "$.sys" ) . ToObject < SystemProperties > ( ) ;
94
- var errorDetails = jsonError . SelectToken ( "$.details" ) ? . ToObject < ErrorDetails > ( ) ;
95
- var message = jsonError . SelectToken ( "$.message" ) ? . ToString ( ) ;
92
+ var responseContent = await res . Content . ReadAsStringAsync ( ) . ConfigureAwait ( false ) ;
93
+ var jsonError = string . IsNullOrEmpty ( responseContent ) ? null : JObject . Parse ( responseContent ) ;
94
+ var sys = jsonError ? . SelectToken ( "$.sys" ) . ToObject < SystemProperties > ( ) ;
95
+ var errorDetails = jsonError ? . SelectToken ( "$.details" ) ? . ToObject < ErrorDetails > ( ) ;
96
+ var message = jsonError ? . SelectToken ( "$.message" ) ? . ToString ( ) ;
96
97
var statusCode = ( int ) res . StatusCode ;
97
98
98
99
if ( string . IsNullOrEmpty ( message ) )
99
100
{
100
- message = GetGenericErrorMessageForStatusCode ( statusCode , sys . Id ) ;
101
+ message = GetGenericErrorMessageForStatusCode ( statusCode , sys ? . Id ) ;
101
102
}
102
103
103
104
if ( errorDetails != null )
@@ -120,6 +121,18 @@ protected async Task CreateExceptionForFailedRequest(HttpResponseMessage res)
120
121
throw rateLimitException ;
121
122
}
122
123
124
+ if ( statusCode == 504 )
125
+ {
126
+ var gatewayTimeoutException = new GatewayTimeoutException ( )
127
+ {
128
+ RequestId = jsonError ? . SelectToken ( "$.requestId" ) ? . ToString ( ) ,
129
+ ErrorDetails = errorDetails ,
130
+ SystemProperties = sys
131
+ } ;
132
+
133
+ throw gatewayTimeoutException ;
134
+ }
135
+
123
136
var ex = new ContentfulException ( statusCode , message )
124
137
{
125
138
RequestId = jsonError . SelectToken ( "$.requestId" ) ? . ToString ( ) ,
@@ -186,6 +199,11 @@ private string GetGenericErrorMessageForStatusCode(int statusCode, string id)
186
199
return "The requested space is hibernated." ;
187
200
}
188
201
202
+ if ( statusCode == 504 )
203
+ {
204
+ return "Gateway timeout." ;
205
+ }
206
+
189
207
return "An error occurred." ;
190
208
}
191
209
0 commit comments