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