@@ -45,7 +45,7 @@ public partial class IpfsClient : ICoreApi
45
45
/// The environment variable "IpfsHttpApi" overrides this value.
46
46
/// </remarks>
47
47
public static Uri DefaultApiUri = new Uri (
48
- Environment . GetEnvironmentVariable ( "IpfsHttpApi" )
48
+ Environment . GetEnvironmentVariable ( "IpfsHttpApi" )
49
49
?? "http://localhost:5001" ) ;
50
50
51
51
/// <summary>
@@ -95,7 +95,7 @@ public IpfsClient(string host)
95
95
{
96
96
ApiUri = new Uri ( host ) ;
97
97
}
98
-
98
+
99
99
/// <summary>
100
100
/// The URL to the IPFS API server. The default is "http://localhost:5001".
101
101
/// </summary>
@@ -230,7 +230,7 @@ HttpClient Api()
230
230
}
231
231
api = new HttpClient ( handler )
232
232
{
233
- Timeout = System . Threading . Timeout . InfiniteTimeSpan
233
+ Timeout = Timeout . InfiniteTimeSpan
234
234
} ;
235
235
api . DefaultRequestHeaders . Add ( "User-Agent" , UserAgent ) ;
236
236
}
@@ -276,16 +276,41 @@ public async Task<string> DoCommandAsync(string command, CancellationToken cance
276
276
}
277
277
}
278
278
279
- internal async Task DoCommandAsync ( Uri url , CancellationToken cancel )
279
+ internal Task DoCommandAsync ( Uri url , CancellationToken cancel )
280
+ {
281
+ return DoCommandAsync ( url , ( HttpContent ) null , cancel ) ;
282
+ }
283
+
284
+ internal Task DoCommandAsync ( Uri url , byte [ ] bytes , CancellationToken cancel )
285
+ {
286
+ return DoCommandAsync ( url , new ByteArrayContent ( bytes ) , cancel ) ;
287
+ }
288
+
289
+ internal Task DoCommandAsync ( Uri url , Stream stream , CancellationToken cancel )
290
+ {
291
+ return DoCommandAsync ( url , new StreamContent ( stream ) , cancel ) ;
292
+ }
293
+
294
+ internal Task DoCommandAsync ( Uri url , string str , CancellationToken cancel )
295
+ {
296
+ return DoCommandAsync ( url , new StringContent ( str ) , cancel ) ;
297
+ }
298
+
299
+ internal async Task DoCommandAsync ( Uri url , HttpContent content , CancellationToken cancel )
280
300
{
281
301
if ( log . IsDebugEnabled )
282
302
log . Debug ( "POST " + url . ToString ( ) ) ;
283
- using ( var response = await Api ( ) . PostAsync ( url , null , cancel ) )
303
+
304
+ using ( var response = await Api ( ) . PostAsync ( url , new MultipartFormDataContent
305
+ {
306
+ { content , "\" file\" " }
307
+ } , cancel ) )
284
308
{
285
309
await ThrowOnErrorAsync ( response ) ;
286
310
var body = await response . Content . ReadAsStringAsync ( ) ;
287
311
if ( log . IsDebugEnabled )
288
312
log . Debug ( "RSP " + body ) ;
313
+
289
314
return ;
290
315
}
291
316
}
@@ -354,9 +379,10 @@ public async Task<Stream> PostDownloadAsync(string command, CancellationToken ca
354
379
var url = BuildCommand ( command , arg , options ) ;
355
380
if ( log . IsDebugEnabled )
356
381
log . Debug ( "POST " + url . ToString ( ) ) ;
357
- var request = new HttpRequestMessage ( HttpMethod . Post , url ) ;
358
382
383
+ var request = new HttpRequestMessage ( HttpMethod . Post , url ) ;
359
384
var response = await Api ( ) . SendAsync ( request , HttpCompletionOption . ResponseHeadersRead , cancel ) ;
385
+
360
386
await ThrowOnErrorAsync ( response ) ;
361
387
return await response . Content . ReadAsStreamAsync ( ) ;
362
388
}
@@ -389,6 +415,7 @@ public async Task<Stream> DownloadAsync(string command, CancellationToken cancel
389
415
var url = BuildCommand ( command , arg , options ) ;
390
416
if ( log . IsDebugEnabled )
391
417
log . Debug ( "GET " + url . ToString ( ) ) ;
418
+
392
419
var response = await Api ( ) . GetAsync ( url , HttpCompletionOption . ResponseHeadersRead , cancel ) ;
393
420
await ThrowOnErrorAsync ( response ) ;
394
421
return await response . Content . ReadAsStreamAsync ( ) ;
@@ -422,6 +449,7 @@ public async Task<byte[]> DownloadBytesAsync(string command, CancellationToken c
422
449
var url = BuildCommand ( command , arg , options ) ;
423
450
if ( log . IsDebugEnabled )
424
451
log . Debug ( "GET " + url . ToString ( ) ) ;
452
+
425
453
var response = await Api ( ) . GetAsync ( url , HttpCompletionOption . ResponseHeadersRead , cancel ) ;
426
454
await ThrowOnErrorAsync ( response ) ;
427
455
return await response . Content . ReadAsByteArrayAsync ( ) ;
@@ -460,6 +488,7 @@ public async Task<String> UploadAsync(string command, CancellationToken cancel,
460
488
var content = new MultipartFormDataContent ( ) ;
461
489
var streamContent = new StreamContent ( data ) ;
462
490
streamContent . Headers . ContentType = new MediaTypeHeaderValue ( "application/octet-stream" ) ;
491
+
463
492
if ( string . IsNullOrEmpty ( name ) )
464
493
content . Add ( streamContent , "file" , unknownFilename ) ;
465
494
else
@@ -468,12 +497,14 @@ public async Task<String> UploadAsync(string command, CancellationToken cancel,
468
497
var url = BuildCommand ( command , null , options ) ;
469
498
if ( log . IsDebugEnabled )
470
499
log . Debug ( "POST " + url . ToString ( ) ) ;
500
+
471
501
using ( var response = await Api ( ) . PostAsync ( url , content , cancel ) )
472
502
{
473
503
await ThrowOnErrorAsync ( response ) ;
474
504
var json = await response . Content . ReadAsStringAsync ( ) ;
475
505
if ( log . IsDebugEnabled )
476
506
log . Debug ( "RSP " + json ) ;
507
+
477
508
return json ;
478
509
}
479
510
}
@@ -510,6 +541,7 @@ public async Task<Stream> Upload2Async(string command, CancellationToken cancel,
510
541
var content = new MultipartFormDataContent ( ) ;
511
542
var streamContent = new StreamContent ( data ) ;
512
543
streamContent . Headers . ContentType = new MediaTypeHeaderValue ( "application/octet-stream" ) ;
544
+
513
545
if ( string . IsNullOrEmpty ( name ) )
514
546
content . Add ( streamContent , "file" , unknownFilename ) ;
515
547
else
@@ -518,6 +550,7 @@ public async Task<Stream> Upload2Async(string command, CancellationToken cancel,
518
550
var url = BuildCommand ( command , null , options ) ;
519
551
if ( log . IsDebugEnabled )
520
552
log . Debug ( "POST " + url . ToString ( ) ) ;
553
+
521
554
var response = await Api ( ) . PostAsync ( url , content , cancel ) ;
522
555
await ThrowOnErrorAsync ( response ) ;
523
556
return await response . Content . ReadAsStreamAsync ( ) ;
@@ -536,12 +569,14 @@ public async Task<String> UploadAsync(string command, CancellationToken cancel,
536
569
var url = BuildCommand ( command , null , options ) ;
537
570
if ( log . IsDebugEnabled )
538
571
log . Debug ( "POST " + url . ToString ( ) ) ;
572
+
539
573
using ( var response = await Api ( ) . PostAsync ( url , content , cancel ) )
540
574
{
541
575
await ThrowOnErrorAsync ( response ) ;
542
576
var json = await response . Content . ReadAsStringAsync ( ) ;
543
577
if ( log . IsDebugEnabled )
544
578
log . Debug ( "RSP " + json ) ;
579
+
545
580
return json ;
546
581
}
547
582
}
@@ -561,17 +596,20 @@ async Task<bool> ThrowOnErrorAsync(HttpResponseMessage response)
561
596
{
562
597
if ( response . IsSuccessStatusCode )
563
598
return true ;
599
+
564
600
if ( response . StatusCode == HttpStatusCode . NotFound )
565
601
{
566
602
var error = "Invalid IPFS command: " + response . RequestMessage . RequestUri . ToString ( ) ;
567
603
if ( log . IsDebugEnabled )
568
604
log . Debug ( "ERR " + error ) ;
605
+
569
606
throw new HttpRequestException ( error ) ;
570
607
}
571
608
572
609
var body = await response . Content . ReadAsStringAsync ( ) ;
573
610
if ( log . IsDebugEnabled )
574
611
log . Debug ( "ERR " + body ) ;
612
+
575
613
string message = body ;
576
614
try
577
615
{
0 commit comments