10
10
using Amazon . Runtime . Internal . Util ;
11
11
using System . Net ;
12
12
using System . Reflection ;
13
+ using System . Net . Http ;
13
14
14
15
using Amazon . S3 ;
15
16
using Amazon . S3 . Model ;
@@ -167,7 +168,12 @@ private ExecutionContext CreateExecutionContextForListBuckets()
167
168
public class MockHttpRequestFactory : IHttpRequestFactory < Stream >
168
169
{
169
170
public Action GetResponseAction { get ; set ; }
171
+
172
+ #if BCL
170
173
public Func < MockHttpRequest , HttpWebResponse > ResponseCreator { get ; set ; }
174
+ #else
175
+ public Func < MockHttpRequest , HttpResponseMessage > ResponseCreator { get ; set ; }
176
+ #endif
171
177
172
178
public MockHttpRequest LastCreatedRequest { get ; private set ; }
173
179
@@ -201,23 +207,29 @@ public class MockHttpRequest : IHttpRequest<Stream>
201
207
public Uri RequestUri { get ; set ; }
202
208
203
209
public Action GetResponseAction { get ; set ; }
204
- public Func < MockHttpRequest , HttpWebResponse > ResponseCreator { get ; set ; }
205
210
206
211
public Version HttpProtocolVersion { get ; set ; }
207
212
213
+ #if BCL
214
+ public Func < MockHttpRequest , HttpWebResponse > ResponseCreator { get ; set ; }
215
+
208
216
public MockHttpRequest ( Uri requestUri , Action action , Func < MockHttpRequest , HttpWebResponse > responseCreator = null )
217
+ #else
218
+ public Func < MockHttpRequest , HttpResponseMessage > ResponseCreator { get ; set ; }
219
+
220
+ public MockHttpRequest ( Uri requestUri , Action action , Func < MockHttpRequest , HttpResponseMessage > responseCreator = null )
221
+ #endif
209
222
{
210
223
this . RequestUri = requestUri ;
211
224
this . GetResponseAction = action ;
212
- #if BCL
213
225
this . ResponseCreator = responseCreator ?? CreateResponse ;
214
- #else
215
- throw new NotImplementedException ( ) ;
216
- #endif
217
226
}
218
227
219
228
#if BCL
220
229
private HttpWebResponse CreateResponse ( MockHttpRequest request )
230
+ #else
231
+ private HttpResponseMessage CreateResponse ( MockHttpRequest request )
232
+ #endif
221
233
{
222
234
// Extract the last segment of the URI, this is the custom URI
223
235
// sent by the unit tests.
@@ -227,10 +239,22 @@ private HttpWebResponse CreateResponse(MockHttpRequest request)
227
239
if ( response . StatusCode >= HttpStatusCode . OK && response . StatusCode <= ( HttpStatusCode ) 299 )
228
240
return response ;
229
241
else
230
- throw new HttpErrorResponseException ( new HttpWebRequestResponseData ( response ) ) ;
231
- }
242
+ #if BCL
243
+ throw new HttpErrorResponseException ( new HttpWebRequestResponseData ( response ) ) ;
244
+ #else
245
+ {
246
+ var instance = Activator . CreateInstance (
247
+ typeof ( HttpClientResponseData ) ,
248
+ BindingFlags . Instance | BindingFlags . NonPublic ,
249
+ binder : null ,
250
+ args : new [ ] { response } ,
251
+ culture : null
252
+ ) ;
253
+ throw new HttpErrorResponseException ( instance as HttpClientResponseData ) ;
254
+ }
232
255
#endif
233
-
256
+ }
257
+
234
258
public void ConfigureRequest ( IRequestContext requestContext )
235
259
{
236
260
this . IsConfigureRequestCalled = true ;
@@ -250,14 +274,21 @@ public Stream GetRequestContent()
250
274
251
275
public Amazon . Runtime . Internal . Transform . IWebResponseData GetResponse ( )
252
276
{
253
- #if BCL
254
277
if ( this . GetResponseAction != null )
255
278
this . GetResponseAction ( ) ;
256
279
257
280
var response = ResponseCreator ( this ) ;
281
+ #if BCL
258
282
return new HttpWebRequestResponseData ( response ) ;
259
283
#else
260
- throw new NotImplementedException ( ) ;
284
+ var instance = Activator . CreateInstance (
285
+ typeof ( HttpClientResponseData ) ,
286
+ BindingFlags . Instance | BindingFlags . NonPublic ,
287
+ binder : null ,
288
+ args : new [ ] { response } ,
289
+ culture : null
290
+ ) ;
291
+ return instance as HttpClientResponseData ;
261
292
#endif
262
293
}
263
294
0 commit comments