-#region
-/* -----------------------------------------------------------------------
- * <copyright file="ICloudClient.cs" company="GRNet">
- *
- * Copyright 2011-2012 GRNET S.A. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * 1. Redistributions of source code must retain the above
- * copyright notice, this list of conditions and the following
- * disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- *
- * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and
- * documentation are those of the authors and should not be
- * interpreted as representing official policies, either expressed
- * or implied, of GRNET S.A.
- * </copyright>
- * -----------------------------------------------------------------------
- */
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Diagnostics.Contracts;
-using System.Net;
-using System.Threading.Tasks;
-using Pithos.Interfaces;
-
-namespace Pithos.Network
-{
- [ContractClass(typeof(ICloudClientContract))]
- public interface ICloudClient
- {
-
- string ApiKey { get; set; }
- string UserName { get; set; }
- Uri StorageUrl { get; set; }
-
- string Token { get; set; }
-
- bool UsePithos { get; set; }
- AccountInfo Authenticate();
- //WebProxy Proxy { get; set; }
- double DownloadPercentLimit { get; set; }
- double UploadPercentLimit { get; set; }
- string AuthenticationUrl { get; set; }
-
- #region Container operations
-
- IList<ContainerInfo> ListContainers(string account);
- IList<ObjectInfo> ListObjects(string account, string container, DateTime? since = null);
- IList<ObjectInfo> ListObjects(string account, string container, string folder, DateTime? since = null);
- bool ContainerExists(string account, string container);
- ContainerInfo GetContainerInfo(string account, string container);
- void CreateContainer(string account, string container);
- void DeleteContainer(string account, string container);
- #endregion
-
- #region Object operations
- Task GetObject(string account, string container, string objectName, string fileName);
- Task PutObject(string account, string container, string objectName, string fileName, string hash = null, string contentType = "application/octet-stream");
- void DeleteObject(string account, string container, string objectName);
- //void DeleteObject(string container, string objectName, string account = null);
- void MoveObject(string account, string sourceContainer, string oldObjectName, string targetContainer, string newObjectName);
- bool ObjectExists(string account, string container, string objectName);
- ObjectInfo GetObjectInfo(string account, string container, string objectName);
- void CreateFolder(string account, string container, string folder);
- #endregion
-
- #region Hashmap operations
- Task<TreeHash> GetHashMap(string account, string container, string objectName);
- Task<IList<string>> PutHashMap(string account, string container, string objectName, TreeHash hash);
- Task PostBlock(string account, string container, byte[] block, int offset, int count);
- Task<byte[]> GetBlock(string account, string container, Uri relativeUrl, long start, long? end);
- #endregion
-
- #region Sharing operations
- IList<ObjectInfo> ListSharedObjects(DateTime? since);
- void ShareObject(string account, string container, string objectName, string shareTo, bool read, bool write);
-
- #endregion
-
- AccountInfo GetAccountPolicies(AccountInfo accountInfo);
-
- void UpdateMetadata(ObjectInfo objectInfo);
-
- void UpdateMetadata(ContainerInfo Container);
- IList<ShareAccountInfo> ListSharingAccounts(DateTime? since=null);
- }
-
-
- [ContractClassFor(typeof(ICloudClient))]
- public abstract class ICloudClientContract:ICloudClient
- {
-
- public string ApiKey { get; set; }
- public string UserName { get; set; }
- public Uri StorageUrl { get; set; }
- public string Token { get; set; }
-
- public double DownloadPercentLimit { get; set; }
- public double UploadPercentLimit { get; set; }
-
- public string AuthenticationUrl { get; set; }
-
- public bool UsePithos { get; set; }
-
- public AccountInfo Authenticate()
- {
- Contract.Requires<ArgumentNullException>(!String.IsNullOrWhiteSpace(ApiKey), "ApiKey must be filled before calling Authenticate");
- Contract.Requires<ArgumentNullException>(!String.IsNullOrWhiteSpace(UserName), "UserName must be filled before calling Authenticate");
-
- return default(AccountInfo);
- }
-
- public IList<ContainerInfo> ListContainers(string account)
- {
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
-
- return default(IList<ContainerInfo>);
- }
-
- public IList<ObjectInfo> ListSharedObjects(DateTime? since)
- {
-
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
-
- return default(IList<ObjectInfo>);
- }
-
- public void ShareObject(string account, string container, string objectName, string shareTo, bool read, bool write)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
- Contract.Requires(!String.IsNullOrWhiteSpace(account));
- Contract.Requires(!String.IsNullOrWhiteSpace(shareTo));
-
- }
-
- public AccountInfo GetAccountPolicies(AccountInfo accountInfo)
- {
- Contract.Requires(accountInfo!=null);
-
- return default(AccountInfo);
- }
-
- public void UpdateMetadata(ObjectInfo objectInfo)
- {
- Contract.Requires(objectInfo!=null);
-
- return ;
- }
-
- public void UpdateMetadata(ContainerInfo objectInfo)
- {
- Contract.Requires(objectInfo!=null);
-
- return ;
- }
-
- public IList<ShareAccountInfo> ListSharingAccounts(DateTime? since = new DateTime?())
- {
- return default(IList<ShareAccountInfo>);
- }
-
-
- public IList<ObjectInfo> ListObjects(string account, string container, DateTime? since = null)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
-
- return default(IList<ObjectInfo>);
- }
-
- public IList<ObjectInfo> ListObjects(string account, string container, string folder, DateTime? since = null)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- //Contract.Requires(!String.IsNullOrWhiteSpace(folder));
-
- return default(IList<ObjectInfo>);
- }
-
- public bool ContainerExists(string account, string container)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
-
- return default(bool);
- }
-
- public ContainerInfo GetContainerInfo(string account, string container)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
-
- return default(ContainerInfo);
- }
-
- public void CreateContainer(string account, string container)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- }
-
- public void DeleteContainer(string account, string container)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- }
-
- public Task GetObject(string account, string container, string objectName, string fileName)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
-
- return default(Task);
- }
-
- public Task PutObject(string account, string container, string objectName, string fileName, string hash = null, string contentType = "application/octet-stream")
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(fileName));
- Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
- Contract.Requires(!String.IsNullOrWhiteSpace(contentType));
-
- return default(Task);
- }
-
- public void DeleteObject(string account, string container, string objectName)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
- }
-
- public void MoveObject(string account, string sourceContainer, string oldObjectName, string targetContainer, string newObjectName)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(sourceContainer));
- Contract.Requires(!String.IsNullOrWhiteSpace(oldObjectName));
- Contract.Requires(!String.IsNullOrWhiteSpace(targetContainer));
- Contract.Requires(!String.IsNullOrWhiteSpace(newObjectName));
- }
-
- public bool ObjectExists(string account, string container, string objectName)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
-
- return default(bool);
- }
-
- public ObjectInfo GetObjectInfo(string account, string container, string objectName)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl!=null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
-
- return default(ObjectInfo);
- }
-
- public void CreateFolder(string account, string container, string folder)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(folder));
- }
-
- public Task<TreeHash> GetHashMap(string account, string container, string objectName)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
-
- return default(Task<TreeHash>);
- }
-
- public Task<IList<string>> PutHashMap(string account, string container, string objectName, TreeHash hash)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
- Contract.Requires(hash != null);
-
- return default(Task<IList<string>>);
- }
-
- public Task PostBlock(string account, string container, byte[] block, int offset, int count)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(block != null);
- Contract.Requires(offset>=0);
- Contract.Requires(offset < block.Length);
- Contract.Requires(count>=0);
- Contract.Requires(count <= block.Length);
-
- return default(Task);
- }
-
- public Task<byte[]> GetBlock(string account, string container, Uri relativeUrl, long start, long? end)
- {
-
- Contract.Requires(!String.IsNullOrWhiteSpace(Token));
- Contract.Requires(StorageUrl != null);
- Contract.Requires(!String.IsNullOrWhiteSpace(container));
- Contract.Requires(relativeUrl!=null);
- Contract.Requires(start>=0);
- Contract.Requires(end==null || end>=0);
-
- return default(Task<byte[]>);
- }
-
- }
-}
+#region\r
+/* -----------------------------------------------------------------------\r
+ * <copyright file="ICloudClient.cs" company="GRNet">\r
+ * \r
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or\r
+ * without modification, are permitted provided that the following\r
+ * conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer in the documentation and/or other materials\r
+ * provided with the distribution.\r
+ *\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF\r
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\r
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * The views and conclusions contained in the software and\r
+ * documentation are those of the authors and should not be\r
+ * interpreted as representing official policies, either expressed\r
+ * or implied, of GRNET S.A.\r
+ * </copyright>\r
+ * -----------------------------------------------------------------------\r
+ */\r
+#endregion\r
+using System;\r
+using System.Collections.Generic;\r
+using System.Diagnostics.Contracts;\r
+using System.Net;\r
+using System.Threading;\r
+using System.Threading.Tasks;\r
+using Pithos.Interfaces;\r
+\r
+namespace Pithos.Network\r
+{\r
+ [ContractClass(typeof(ICloudClientContract))]\r
+ public interface ICloudClient\r
+ {\r
+\r
+ string ApiKey { get; set; }\r
+ string UserName { get; set; }\r
+ Uri StorageUrl { get; set; }\r
+\r
+ string Token { get; set; }\r
+\r
+ bool UsePithos { get; set; }\r
+ Task<AccountInfo> Authenticate();\r
+ //WebProxy Proxy { get; set; }\r
+ double DownloadPercentLimit { get; set; }\r
+ double UploadPercentLimit { get; set; }\r
+ string AuthenticationUrl { get; set; }\r
+\r
+ #region Container operations\r
+\r
+ Task<IList<ContainerInfo>> ListContainers(string account);\r
+ IList<ObjectInfo> ListObjects(string account, Uri container, DateTime? since = null);\r
+ IList<ObjectInfo> ListObjects(string account, Uri container, Uri folder, DateTime? since = null);\r
+ bool ContainerExists(string account, Uri container);\r
+ ContainerInfo GetContainerInfo(string account, Uri container);\r
+ void CreateContainer(string account, Uri container);\r
+ void DeleteContainer(string account, Uri container);\r
+ #endregion\r
+\r
+ #region Object operations \r
+ Task GetObject(string account, Uri container, Uri objectName, string fileName, CancellationToken cancellationToken);\r
+ Task PutObject(string account, Uri container, Uri objectName, string fileName, string hash = null, string contentType = "application/octet-stream");\r
+ void DeleteObject(string account, Uri container, Uri objectName, bool isDirectory);\r
+ //void DeleteObject(string container, string objectName, string account = null);\r
+ void MoveObject(string account, Uri sourceContainer, Uri oldObjectName, Uri targetContainer, Uri newObjectName);\r
+ bool ObjectExists(string account, Uri container, Uri objectName);\r
+ ObjectInfo GetObjectInfo(string account, Uri container, Uri objectName);\r
+ void CreateFolder(string account, Uri container, Uri folder);\r
+ #endregion\r
+\r
+ #region Hashmap operations \r
+ Task<TreeHash> GetHashMap(string account, Uri container, Uri objectName);\r
+ Task<IList<string>> PutHashMap(string account, Uri container, Uri objectName, TreeHash hash);\r
+ Task PostBlock(string account, Uri container, byte[] block, int offset, int count, CancellationToken token);\r
+ Task<byte[]> GetBlock(string account, Uri container, Uri relativeUrl, long start, long? end, CancellationToken cancellationToken);\r
+ #endregion\r
+\r
+ #region Sharing operations \r
+ IList<ObjectInfo> ListSharedObjects(HashSet<string> knownContainers, DateTime? since);\r
+ void ShareObject(string account, Uri container, Uri objectName, string shareTo, bool read, bool write);\r
+\r
+ #endregion\r
+\r
+ AccountInfo GetAccountPolicies(AccountInfo accountInfo);\r
+\r
+ void UpdateMetadata(ObjectInfo objectInfo);\r
+\r
+ void UpdateMetadata(ContainerInfo Container);\r
+ IList<ShareAccountInfo> ListSharingAccounts(DateTime? since=null);\r
+ }\r
+\r
+\r
+ [ContractClassFor(typeof(ICloudClient))]\r
+ public abstract class ICloudClientContract:ICloudClient\r
+ {\r
+\r
+ public string ApiKey { get; set; }\r
+ public string UserName { get; set; }\r
+ public Uri StorageUrl { get; set; }\r
+ public string Token { get; set; }\r
+ \r
+ public double DownloadPercentLimit { get; set; }\r
+ public double UploadPercentLimit { get; set; }\r
+\r
+ public string AuthenticationUrl { get; set; }\r
+\r
+ public bool UsePithos { get; set; }\r
+\r
+ public Task<AccountInfo> Authenticate()\r
+ {\r
+ Contract.Requires<ArgumentNullException>(!String.IsNullOrWhiteSpace(ApiKey), "ApiKey must be filled before calling Authenticate");\r
+ Contract.Requires<ArgumentNullException>(!String.IsNullOrWhiteSpace(UserName), "UserName must be filled before calling Authenticate");\r
+\r
+ return default(Task<AccountInfo>);\r
+ }\r
+\r
+ public Task<IList<ContainerInfo>> ListContainers(string account)\r
+ {\r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null); \r
+\r
+ return default(Task<IList<ContainerInfo>>);\r
+ }\r
+\r
+ public IList<ObjectInfo> ListSharedObjects(HashSet<string> knownContainers, DateTime? since)\r
+ {\r
+\r
+ Contract.Requires(knownContainers!=null);\r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+\r
+ return default(IList<ObjectInfo>);\r
+ }\r
+\r
+ public void ShareObject(string account, Uri container, Uri objectName, string shareTo, bool read, bool write)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+ Contract.Requires(container!=null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(objectName != null);\r
+ Contract.Requires(!objectName.IsAbsoluteUri);\r
+ Contract.Requires(!String.IsNullOrWhiteSpace(account));\r
+ Contract.Requires(!String.IsNullOrWhiteSpace(shareTo));\r
+ \r
+ }\r
+\r
+ public AccountInfo GetAccountPolicies(AccountInfo accountInfo)\r
+ {\r
+ Contract.Requires(accountInfo!=null);\r
+\r
+ return default(AccountInfo);\r
+ }\r
+\r
+ public void UpdateMetadata(ObjectInfo objectInfo)\r
+ {\r
+ Contract.Requires(objectInfo!=null);\r
+\r
+ return ;\r
+ }\r
+ \r
+ public void UpdateMetadata(ContainerInfo objectInfo)\r
+ {\r
+ Contract.Requires(objectInfo!=null);\r
+\r
+ return ;\r
+ }\r
+\r
+ public IList<ShareAccountInfo> ListSharingAccounts(DateTime? since = new DateTime?())\r
+ {\r
+ return default(IList<ShareAccountInfo>);\r
+ }\r
+\r
+\r
+ public IList<ObjectInfo> ListObjects(string account, Uri container, DateTime? since = null)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+\r
+ return default(IList<ObjectInfo>);\r
+ }\r
+\r
+ public IList<ObjectInfo> ListObjects(string account, Uri container, Uri folder, DateTime? since = null)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+\r
+ //Contract.Requires(!String.IsNullOrWhiteSpace(folder));\r
+\r
+ return default(IList<ObjectInfo>);\r
+ }\r
+\r
+ public bool ContainerExists(string account, Uri container)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+\r
+ return default(bool);\r
+ }\r
+\r
+ public ContainerInfo GetContainerInfo(string account, Uri container)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+\r
+ return default(ContainerInfo);\r
+ }\r
+\r
+ public void CreateContainer(string account, Uri container)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ }\r
+\r
+ public void DeleteContainer(string account, Uri container)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ }\r
+\r
+ public Task GetObject(string account, Uri container, Uri objectName, string fileName, CancellationToken cancellationToken)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(objectName != null);\r
+ Contract.Requires(!objectName.IsAbsoluteUri);\r
+\r
+ return default(Task);\r
+ }\r
+\r
+ public Task PutObject(string account, Uri container, Uri objectName, string fileName, string hash = null, string contentType = "application/octet-stream")\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(!String.IsNullOrWhiteSpace(fileName));\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(objectName != null);\r
+ Contract.Requires(!objectName.IsAbsoluteUri);\r
+ Contract.Requires(!String.IsNullOrWhiteSpace(contentType));\r
+\r
+ return default(Task);\r
+ }\r
+\r
+ public void DeleteObject(string account, Uri container, Uri objectName, bool isDirectory)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(objectName != null);\r
+ Contract.Requires(!objectName.IsAbsoluteUri);\r
+ }\r
+\r
+ public void MoveObject(string account, Uri sourceContainer, Uri oldObjectName, Uri targetContainer, Uri newObjectName)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(sourceContainer != null);\r
+ Contract.Requires(!sourceContainer.IsAbsoluteUri);\r
+ Contract.Requires(oldObjectName != null);\r
+ Contract.Requires(!oldObjectName.IsAbsoluteUri);\r
+\r
+ Contract.Requires(targetContainer != null);\r
+ Contract.Requires(!targetContainer.IsAbsoluteUri);\r
+ Contract.Requires(newObjectName != null);\r
+ Contract.Requires(!newObjectName.IsAbsoluteUri);\r
+\r
+ }\r
+\r
+ public bool ObjectExists(string account, Uri container, Uri objectName)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(objectName != null);\r
+ Contract.Requires(!objectName.IsAbsoluteUri);\r
+\r
+ return default(bool);\r
+ }\r
+\r
+ public ObjectInfo GetObjectInfo(string account, Uri container, Uri objectName)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl!=null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(objectName != null);\r
+ Contract.Requires(!objectName.IsAbsoluteUri);\r
+\r
+ return default(ObjectInfo);\r
+ }\r
+\r
+ public void CreateFolder(string account, Uri container, Uri folder)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(folder != null);\r
+ Contract.Requires(!folder .IsAbsoluteUri);\r
+ }\r
+\r
+ public Task<TreeHash> GetHashMap(string account, Uri container, Uri objectName)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(objectName != null);\r
+ Contract.Requires(!objectName.IsAbsoluteUri);\r
+\r
+ return default(Task<TreeHash>);\r
+ }\r
+\r
+ public Task<IList<string>> PutHashMap(string account, Uri container, Uri objectName, TreeHash hash)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(objectName != null);\r
+ Contract.Requires(!objectName.IsAbsoluteUri);\r
+ Contract.Requires(hash != null);\r
+\r
+ return default(Task<IList<string>>);\r
+ }\r
+\r
+ public Task PostBlock(string account, Uri container, byte[] block, int offset, int count, CancellationToken token)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(block != null);\r
+ Contract.Requires(offset>=0);\r
+ Contract.Requires(offset < block.Length);\r
+ Contract.Requires(count>=0);\r
+ Contract.Requires(count <= block.Length);\r
+ \r
+ return default(Task);\r
+ }\r
+\r
+ public Task<byte[]> GetBlock(string account, Uri container, Uri relativeUrl, long start, long? end, CancellationToken cancellationToken)\r
+ {\r
+ \r
+ Contract.Requires(!String.IsNullOrWhiteSpace(Token));\r
+ Contract.Requires(StorageUrl != null);\r
+ Contract.Requires(container != null);\r
+ Contract.Requires(!container.IsAbsoluteUri);\r
+ Contract.Requires(relativeUrl != null);\r
+ Contract.Requires(start>=0);\r
+ Contract.Requires(end==null || end>=0);\r
+\r
+ return default(Task<byte[]>);\r
+ }\r
+\r
+ }\r
+}\r