Revision 8f918cb0 trunk/Pithos.Network/CloudFilesClient.cs
b/trunk/Pithos.Network/CloudFilesClient.cs | ||
---|---|---|
1393 | 1393 |
var directories=this.ListObjects(container.Account, container.Name, "/"); |
1394 | 1394 |
} |
1395 | 1395 |
*/ |
1396 |
|
|
1397 |
public bool CanUpload(string account, ObjectInfo cloudFile) |
|
1398 |
{ |
|
1399 |
Contract.Requires(!String.IsNullOrWhiteSpace(account)); |
|
1400 |
Contract.Requires(cloudFile!=null); |
|
1401 |
|
|
1402 |
using (var client = new RestClient(_baseClient)) |
|
1403 |
{ |
|
1404 |
if (!String.IsNullOrWhiteSpace(account)) |
|
1405 |
client.BaseAddress = GetAccountUrl(account); |
|
1406 |
|
|
1407 |
|
|
1408 |
var parts = cloudFile.Name.Split('/'); |
|
1409 |
var folder = String.Join("/", parts,0,parts.Length-1); |
|
1410 |
|
|
1411 |
var fileUrl=String.Format("{0}/{1}/{2}.pithos.ignore",cloudFile.Container,folder,Guid.NewGuid()); |
|
1412 |
|
|
1413 |
client.Parameters.Clear(); |
|
1414 |
try |
|
1415 |
{ |
|
1416 |
client.PutWithRetry(fileUrl, 3, @"application/octet-stream"); |
|
1417 |
|
|
1418 |
var expectedCodes = new[] { HttpStatusCode.OK, HttpStatusCode.NoContent, HttpStatusCode.Created}; |
|
1419 |
return (expectedCodes.Contains(client.StatusCode)); |
|
1420 |
} |
|
1421 |
catch |
|
1422 |
{ |
|
1423 |
return false; |
|
1424 |
} |
|
1425 |
finally |
|
1426 |
{ |
|
1427 |
DeleteObject(account,cloudFile.Container,fileUrl); |
|
1428 |
} |
|
1429 |
} |
|
1430 |
} |
|
1396 | 1431 |
} |
1397 | 1432 |
|
1398 | 1433 |
public class ShareAccountInfo |
Also available in: Unified diff