@@ -43,45 +43,44 @@ protected CenterDeviceRestClient(IOAuthInfoProvider oauthInfo, IRestClientConfig
4343 this . errorHandler = errorHandler ;
4444 this . oAuthInfoProvider = oauthInfo ;
4545 this . ApiVersionPrefix = apiVersionPrefix ;
46- client = new RestClient ( configuration . BaseAddress )
46+ var options = new RestClientOptions ( configuration . BaseAddress )
4747 {
48- UserAgent = configuration . UserAgent ,
48+ UserAgent = configuration . UserAgent
4949 } ;
50+ client = new RestClient ( options ) ;
5051 //remove all XML deserializers since response is always expected as JSON, never XML
51- client . RemoveHandler ( "" ) ;
52- client . RemoveHandler ( "*" ) ; //remove default handler which is XML instead of JSON!
53- client . RemoveHandler ( "application/xml" ) ;
54- client . RemoveHandler ( "text/xml" ) ;
55- client . RemoveHandler ( "text/javascript" ) ;
56- }
52+ client . UseJson ( ) ;
5753
58- protected string GetBaseAddress ( )
59- {
60- return client . BaseUrl . AbsoluteUri ;
54+ CustomOptionBaseAddress = options . BaseUrl . AbsoluteUri ;
55+ CustomOptionUserAgent = options . UserAgent ;
6156 }
6257
63- protected virtual IRestResponse Execute ( OAuthInfo oAuthInfo , IRestRequest request )
58+ protected readonly string CustomOptionUserAgent ;
59+
60+ protected readonly string CustomOptionBaseAddress ;
61+
62+ protected virtual RestResponse Execute ( OAuthInfo oAuthInfo , RestRequest request )
6463 {
6564 PrepareRequest ( oAuthInfo , request ) ;
6665
67- return HandleResponseSync ( oAuthInfo , request , client . Execute ( request ) ) ;
66+ return HandleResponseSync ( oAuthInfo , request , client . ExecuteAsync ( request ) . Result ) ;
6867 }
6968
70- protected virtual IRestResponse < T > Execute < T > ( OAuthInfo oAuthInfo , IRestRequest request ) where T : new ( )
69+ protected virtual RestResponse < T > Execute < T > ( OAuthInfo oAuthInfo , RestRequest request ) where T : new ( )
7170 {
7271 PrepareRequest ( oAuthInfo , request ) ;
7372
74- return HandleResponseSync ( oAuthInfo , request , client . Execute < T > ( request ) ) ;
73+ return HandleResponseSync ( oAuthInfo , request , client . ExecuteAsync < T > ( request ) . Result ) ;
7574 }
7675
77- private void PrepareRequest ( OAuthInfo oAuthInfo , IRestRequest request )
76+ private void PrepareRequest ( OAuthInfo oAuthInfo , RestRequest request )
7877 {
7978 offlineModeSimulator ? . ThrowIfOffline ( ) ;
8079
8180 AddAuthorizationHeader ( oAuthInfo , request ) ;
8281 }
8382
84- protected TimeSpan ? ExtractDelay ( IRestResponse result )
83+ protected TimeSpan ? ExtractDelay ( RestResponse result )
8584 {
8685 return ExtractDelay ( ( string ) result . Headers . FirstOrDefault ( parameter => parameter . Name . Equals ( RETRY_AFTER , StringComparison . OrdinalIgnoreCase ) ) ? . Value ) ;
8786 }
@@ -102,12 +101,12 @@ private void PrepareRequest(OAuthInfo oAuthInfo, IRestRequest request)
102101 return null ;
103102 }
104103
105- private bool IsRateLimitExceeded ( IRestResponse result )
104+ private bool IsRateLimitExceeded ( RestResponse result )
106105 {
107106 return ( int ) result . StatusCode == TOO_MANY_REQUESTS ;
108107 }
109108
110- private IRestResponse < T > HandleResponseSync < T > ( OAuthInfo oAuthInfo , IRestRequest request , IRestResponse < T > result ) where T : new ( )
109+ private RestResponse < T > HandleResponseSync < T > ( OAuthInfo oAuthInfo , RestRequest request , RestResponse < T > result ) where T : new ( )
111110 {
112111 if ( IsExpiredToken ( result ) )
113112 {
@@ -119,7 +118,7 @@ private bool IsRateLimitExceeded(IRestResponse result)
119118
120119 SwapAuthorizationHeader ( refreshOAuthInfo , request ) ;
121120
122- return client . Execute < T > ( request ) ;
121+ return client . ExecuteAsync < T > ( request ) . Result ;
123122 }
124123 else if ( IsRateLimitExceeded ( result ) )
125124 {
@@ -139,7 +138,7 @@ private bool IsRateLimitExceeded(IRestResponse result)
139138 }
140139 }
141140
142- private IRestResponse HandleResponseSync ( OAuthInfo oAuthInfo , IRestRequest request , IRestResponse result )
141+ private RestResponse HandleResponseSync ( OAuthInfo oAuthInfo , RestRequest request , RestResponse result )
143142 {
144143 if ( IsExpiredToken ( result ) )
145144 {
@@ -151,7 +150,7 @@ private IRestResponse HandleResponseSync(OAuthInfo oAuthInfo, IRestRequest reque
151150
152151 SwapAuthorizationHeader ( refreshOAuthInfo , request ) ;
153152
154- return client . Execute ( request ) ;
153+ return client . ExecuteAsync ( request ) . Result ;
155154 }
156155 else if ( IsRateLimitExceeded ( result ) )
157156 {
@@ -171,7 +170,7 @@ private IRestResponse HandleResponseSync(OAuthInfo oAuthInfo, IRestRequest reque
171170 }
172171 }
173172
174- private bool IsNotConnected ( IRestResponse result )
173+ private bool IsNotConnected ( RestResponse result )
175174 {
176175 var exception = result . ErrorException as WebException ;
177176 if ( exception == null )
@@ -182,14 +181,14 @@ private bool IsNotConnected(IRestResponse result)
182181 return exception . Status == WebExceptionStatus . ConnectFailure || exception . Status == WebExceptionStatus . NameResolutionFailure ;
183182 }
184183
185- protected void ValidateResponse ( IRestResponse result , BaseResponseHandler handler )
184+ protected void ValidateResponse ( RestResponse result , BaseResponseHandler handler )
186185 {
187186 errorHandler ? . ValidateResponse ( result ) ;
188187
189188 handler . ValidateResponse ( result ) ;
190189 }
191190
192- protected T UnwrapResponse < T > ( IRestResponse < T > result , DataResponseHandler < T > handler )
191+ protected T UnwrapResponse < T > ( RestResponse < T > result , DataResponseHandler < T > handler )
193192 {
194193 errorHandler ? . ValidateResponse ( result ) ;
195194
@@ -217,6 +216,7 @@ protected OAuthInfo GetOAuthInfo(string userId)
217216
218217 protected RestRequest AddContentTypeHeader ( RestRequest request , string contentType )
219218 {
219+ if ( request . Method == Method . Get ) throw new ArgumentException ( "Adding header Content-Type not supported for GET requests" , nameof ( request ) ) ;
220220 request . AddHeader ( CONTENT_TYPE , contentType ) ;
221221 return request ;
222222 }
@@ -231,30 +231,30 @@ protected string GetAuthorizationBearer(OAuthInfo oAuthInfo)
231231 return BEARER + oAuthInfo . access_token ;
232232 }
233233
234- private void AddAuthorizationHeader ( OAuthInfo oAuthInfo , IRestRequest request )
234+ private void AddAuthorizationHeader ( OAuthInfo oAuthInfo , RestRequest request )
235235 {
236236 request . AddHeader ( AUTHORIZATION , GetAuthorizationBearer ( oAuthInfo ) ) ;
237237 }
238238
239- private void SwapAuthorizationHeader ( OAuthInfo newOAuthInfo , IRestRequest request )
239+ private void SwapAuthorizationHeader ( OAuthInfo newOAuthInfo , RestRequest request )
240240 {
241241 RemoveAuthorizationHeader ( request ) ;
242242 AddAuthorizationHeader ( newOAuthInfo , request ) ;
243243 }
244244
245- private void RemoveAuthorizationHeader ( IRestRequest request )
245+ private void RemoveAuthorizationHeader ( RestRequest request )
246246 {
247247 ( ( List < Parameter > ) ( ( RestRequest ) request ) . GetType ( ) . GetProperty ( PARAMETERS ) . GetValue ( request ) )
248248 . RemoveAll ( parameter => parameter . Name == AUTHORIZATION ) ;
249249 }
250250
251- private bool IsExpiredToken ( IRestResponse result )
251+ private bool IsExpiredToken ( RestResponse result )
252252 {
253253 return result . StatusCode == HttpStatusCode . Unauthorized
254254 && ( result . Content == UNKNOWN_OR_EXPIRED_TOKEN || result . Content == EXPIRED_TENANT ) ;
255255 }
256256
257- private bool IsOperationTimedOut ( IRestResponse result )
257+ private bool IsOperationTimedOut ( RestResponse result )
258258 {
259259 if ( result . ErrorMessage != null )
260260 {
0 commit comments