Statistics
| Branch: | Revision:

root / trunk / Pithos.Network / ICloudClient.cs @ 759bd3c4

History | View | Annotate | Download (14.6 kB)

1 255f5f86 Panagiotis Kanavos
#region
2 255f5f86 Panagiotis Kanavos
/* -----------------------------------------------------------------------
3 255f5f86 Panagiotis Kanavos
 * <copyright file="ICloudClient.cs" company="GRNet">
4 255f5f86 Panagiotis Kanavos
 * 
5 255f5f86 Panagiotis Kanavos
 * Copyright 2011-2012 GRNET S.A. All rights reserved.
6 255f5f86 Panagiotis Kanavos
 *
7 255f5f86 Panagiotis Kanavos
 * Redistribution and use in source and binary forms, with or
8 255f5f86 Panagiotis Kanavos
 * without modification, are permitted provided that the following
9 255f5f86 Panagiotis Kanavos
 * conditions are met:
10 255f5f86 Panagiotis Kanavos
 *
11 255f5f86 Panagiotis Kanavos
 *   1. Redistributions of source code must retain the above
12 255f5f86 Panagiotis Kanavos
 *      copyright notice, this list of conditions and the following
13 255f5f86 Panagiotis Kanavos
 *      disclaimer.
14 255f5f86 Panagiotis Kanavos
 *
15 255f5f86 Panagiotis Kanavos
 *   2. Redistributions in binary form must reproduce the above
16 255f5f86 Panagiotis Kanavos
 *      copyright notice, this list of conditions and the following
17 255f5f86 Panagiotis Kanavos
 *      disclaimer in the documentation and/or other materials
18 255f5f86 Panagiotis Kanavos
 *      provided with the distribution.
19 255f5f86 Panagiotis Kanavos
 *
20 255f5f86 Panagiotis Kanavos
 *
21 255f5f86 Panagiotis Kanavos
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
22 255f5f86 Panagiotis Kanavos
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 255f5f86 Panagiotis Kanavos
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 255f5f86 Panagiotis Kanavos
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
25 255f5f86 Panagiotis Kanavos
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 255f5f86 Panagiotis Kanavos
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 255f5f86 Panagiotis Kanavos
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
28 255f5f86 Panagiotis Kanavos
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29 255f5f86 Panagiotis Kanavos
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 255f5f86 Panagiotis Kanavos
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 255f5f86 Panagiotis Kanavos
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 255f5f86 Panagiotis Kanavos
 * POSSIBILITY OF SUCH DAMAGE.
33 255f5f86 Panagiotis Kanavos
 *
34 255f5f86 Panagiotis Kanavos
 * The views and conclusions contained in the software and
35 255f5f86 Panagiotis Kanavos
 * documentation are those of the authors and should not be
36 255f5f86 Panagiotis Kanavos
 * interpreted as representing official policies, either expressed
37 255f5f86 Panagiotis Kanavos
 * or implied, of GRNET S.A.
38 255f5f86 Panagiotis Kanavos
 * </copyright>
39 255f5f86 Panagiotis Kanavos
 * -----------------------------------------------------------------------
40 255f5f86 Panagiotis Kanavos
 */
41 255f5f86 Panagiotis Kanavos
#endregion
42 255f5f86 Panagiotis Kanavos
using System;
43 d78cbf09 Panagiotis Kanavos
using System.Collections.Generic;
44 d78cbf09 Panagiotis Kanavos
using System.Diagnostics.Contracts;
45 65282d58 Panagiotis Kanavos
using System.Net;
46 b5061ac8 Panagiotis Kanavos
using System.Threading.Tasks;
47 1caef52e Panagiotis Kanavos
using Pithos.Interfaces;
48 d78cbf09 Panagiotis Kanavos
49 1caef52e Panagiotis Kanavos
namespace Pithos.Network
50 d78cbf09 Panagiotis Kanavos
{
51 d78cbf09 Panagiotis Kanavos
    [ContractClass(typeof(ICloudClientContract))]
52 d78cbf09 Panagiotis Kanavos
    public interface ICloudClient
53 d78cbf09 Panagiotis Kanavos
    {
54 c53aa229 Panagiotis Kanavos
55 d78cbf09 Panagiotis Kanavos
        string ApiKey { get; set; }
56 d78cbf09 Panagiotis Kanavos
        string UserName { get; set; }
57 b6c72f62 Panagiotis Kanavos
        Uri StorageUrl { get; set; }
58 c53aa229 Panagiotis Kanavos
59 d78cbf09 Panagiotis Kanavos
        string Token { get; set; }
60 c53aa229 Panagiotis Kanavos
61 2c053915 Panagiotis Kanavos
        bool UsePithos { get; set; }
62 c53aa229 Panagiotis Kanavos
        AccountInfo Authenticate();
63 34bdb91d Panagiotis Kanavos
        //WebProxy Proxy { get; set; }
64 b5061ac8 Panagiotis Kanavos
        double DownloadPercentLimit { get; set; }
65 b5061ac8 Panagiotis Kanavos
        double UploadPercentLimit { get; set; }
66 79736291 Panagiotis Kanavos
        string AuthenticationUrl { get; set; }
67 79736291 Panagiotis Kanavos
68 cfed7823 Panagiotis Kanavos
        #region Container operations
69 c53aa229 Panagiotis Kanavos
70 c53aa229 Panagiotis Kanavos
        IList<ContainerInfo> ListContainers(string account);
71 cfed7823 Panagiotis Kanavos
        IList<ObjectInfo> ListObjects(string account, string container, DateTime? since = null);
72 cfed7823 Panagiotis Kanavos
        IList<ObjectInfo> ListObjects(string account, string container, string folder, DateTime? since = null);
73 cfed7823 Panagiotis Kanavos
        bool ContainerExists(string account, string container);
74 cfed7823 Panagiotis Kanavos
        ContainerInfo GetContainerInfo(string account, string container);
75 cfed7823 Panagiotis Kanavos
        void CreateContainer(string account, string container);
76 cfed7823 Panagiotis Kanavos
        void DeleteContainer(string account, string container);
77 cfed7823 Panagiotis Kanavos
        #endregion
78 cfed7823 Panagiotis Kanavos
79 cfed7823 Panagiotis Kanavos
        #region Object operations        
80 cfed7823 Panagiotis Kanavos
        Task GetObject(string account, string container, string objectName, string fileName);
81 4f6d51d4 Panagiotis Kanavos
        Task PutObject(string account, string container, string objectName, string fileName, string hash = null, string contentType = "application/octet-stream");
82 c53aa229 Panagiotis Kanavos
        void DeleteObject(string account, string container, string objectName);
83 cfed7823 Panagiotis Kanavos
        //void DeleteObject(string container, string objectName, string account = null);
84 cfed7823 Panagiotis Kanavos
        void MoveObject(string account, string sourceContainer, string oldObjectName, string targetContainer, string newObjectName);
85 cfed7823 Panagiotis Kanavos
        bool ObjectExists(string account, string container, string objectName);
86 cfed7823 Panagiotis Kanavos
        ObjectInfo GetObjectInfo(string account, string container, string objectName);
87 cfed7823 Panagiotis Kanavos
        void CreateFolder(string account, string container, string folder);
88 cfed7823 Panagiotis Kanavos
        #endregion
89 cfed7823 Panagiotis Kanavos
90 cfed7823 Panagiotis Kanavos
        #region Hashmap operations        
91 cfed7823 Panagiotis Kanavos
        Task<TreeHash> GetHashMap(string account, string container, string objectName);
92 cfed7823 Panagiotis Kanavos
        Task<IList<string>> PutHashMap(string account, string container, string objectName, TreeHash hash);
93 cfed7823 Panagiotis Kanavos
        Task PostBlock(string account, string container, byte[] block, int offset, int count);
94 cfed7823 Panagiotis Kanavos
        Task<byte[]> GetBlock(string account, string container, Uri relativeUrl, long start, long? end);
95 cfed7823 Panagiotis Kanavos
        #endregion
96 cfed7823 Panagiotis Kanavos
97 cfed7823 Panagiotis Kanavos
        #region Sharing operations        
98 cfed7823 Panagiotis Kanavos
        IList<ObjectInfo> ListSharedObjects(DateTime? since);
99 cfed7823 Panagiotis Kanavos
        void ShareObject(string account, string container, string objectName, string shareTo, bool read, bool write);
100 cfed7823 Panagiotis Kanavos
101 cfed7823 Panagiotis Kanavos
        #endregion
102 0bd56b7c Panagiotis Kanavos
103 0bd56b7c Panagiotis Kanavos
        AccountInfo GetAccountPolicies(AccountInfo accountInfo);
104 aba9e6d9 Panagiotis Kanavos
105 aba9e6d9 Panagiotis Kanavos
        void UpdateMetadata(ObjectInfo objectInfo);
106 c92e02f3 Panagiotis Kanavos
107 c92e02f3 Panagiotis Kanavos
        void UpdateMetadata(ContainerInfo Container);
108 759bd3c4 Panagiotis Kanavos
        IList<ShareAccountInfo> ListSharingAccounts(DateTime? since=null);
109 d78cbf09 Panagiotis Kanavos
    }
110 d78cbf09 Panagiotis Kanavos
111 d78cbf09 Panagiotis Kanavos
112 d78cbf09 Panagiotis Kanavos
    [ContractClassFor(typeof(ICloudClient))]
113 d78cbf09 Panagiotis Kanavos
    public abstract class ICloudClientContract:ICloudClient
114 d78cbf09 Panagiotis Kanavos
    {
115 c53aa229 Panagiotis Kanavos
116 d78cbf09 Panagiotis Kanavos
        public string ApiKey { get; set; }
117 d78cbf09 Panagiotis Kanavos
        public string UserName { get; set; }
118 b6c72f62 Panagiotis Kanavos
        public Uri StorageUrl { get; set; }
119 d78cbf09 Panagiotis Kanavos
        public string Token { get; set; }
120 34bdb91d Panagiotis Kanavos
        
121 b5061ac8 Panagiotis Kanavos
        public double DownloadPercentLimit { get; set; }
122 b5061ac8 Panagiotis Kanavos
        public double UploadPercentLimit { get; set; }
123 d78cbf09 Panagiotis Kanavos
124 79736291 Panagiotis Kanavos
        public string AuthenticationUrl { get; set; }
125 79736291 Panagiotis Kanavos
126 2c053915 Panagiotis Kanavos
        public bool UsePithos { get; set; }
127 2c053915 Panagiotis Kanavos
128 c53aa229 Panagiotis Kanavos
        public AccountInfo Authenticate()
129 d78cbf09 Panagiotis Kanavos
        {
130 c53aa229 Panagiotis Kanavos
            Contract.Requires<ArgumentNullException>(!String.IsNullOrWhiteSpace(ApiKey), "ApiKey must be filled before calling Authenticate");
131 c53aa229 Panagiotis Kanavos
            Contract.Requires<ArgumentNullException>(!String.IsNullOrWhiteSpace(UserName), "UserName must be filled before calling Authenticate");
132 d78cbf09 Panagiotis Kanavos
133 c53aa229 Panagiotis Kanavos
            return default(AccountInfo);
134 d78cbf09 Panagiotis Kanavos
        }
135 d78cbf09 Panagiotis Kanavos
136 c53aa229 Panagiotis Kanavos
        public IList<ContainerInfo> ListContainers(string account)
137 d78cbf09 Panagiotis Kanavos
        {
138 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
139 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);            
140 d78cbf09 Panagiotis Kanavos
141 d78cbf09 Panagiotis Kanavos
            return default(IList<ContainerInfo>);
142 d78cbf09 Panagiotis Kanavos
        }
143 d78cbf09 Panagiotis Kanavos
144 cfed7823 Panagiotis Kanavos
        public IList<ObjectInfo> ListSharedObjects(DateTime? since)
145 cfed7823 Panagiotis Kanavos
        {
146 c53aa229 Panagiotis Kanavos
147 c53aa229 Panagiotis Kanavos
            
148 cfed7823 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
149 cfed7823 Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
150 cfed7823 Panagiotis Kanavos
151 cfed7823 Panagiotis Kanavos
            return default(IList<ObjectInfo>);
152 cfed7823 Panagiotis Kanavos
        }
153 cfed7823 Panagiotis Kanavos
154 cfed7823 Panagiotis Kanavos
        public void ShareObject(string account, string container, string objectName, string shareTo, bool read, bool write)
155 cfed7823 Panagiotis Kanavos
        {
156 c53aa229 Panagiotis Kanavos
            
157 cfed7823 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
158 cfed7823 Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
159 cfed7823 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
160 cfed7823 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
161 cfed7823 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(account));
162 cfed7823 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(shareTo));
163 cfed7823 Panagiotis Kanavos
   
164 cfed7823 Panagiotis Kanavos
        }
165 cfed7823 Panagiotis Kanavos
166 0bd56b7c Panagiotis Kanavos
        public AccountInfo GetAccountPolicies(AccountInfo accountInfo)
167 0bd56b7c Panagiotis Kanavos
        {
168 0bd56b7c Panagiotis Kanavos
            Contract.Requires(accountInfo!=null);
169 0bd56b7c Panagiotis Kanavos
170 0bd56b7c Panagiotis Kanavos
            return default(AccountInfo);
171 0bd56b7c Panagiotis Kanavos
        }
172 0bd56b7c Panagiotis Kanavos
173 aba9e6d9 Panagiotis Kanavos
        public void UpdateMetadata(ObjectInfo objectInfo)
174 aba9e6d9 Panagiotis Kanavos
        {
175 aba9e6d9 Panagiotis Kanavos
            Contract.Requires(objectInfo!=null);
176 aba9e6d9 Panagiotis Kanavos
177 aba9e6d9 Panagiotis Kanavos
            return ;
178 aba9e6d9 Panagiotis Kanavos
        }
179 c92e02f3 Panagiotis Kanavos
        
180 c92e02f3 Panagiotis Kanavos
        public void UpdateMetadata(ContainerInfo objectInfo)
181 c92e02f3 Panagiotis Kanavos
        {
182 c92e02f3 Panagiotis Kanavos
            Contract.Requires(objectInfo!=null);
183 c92e02f3 Panagiotis Kanavos
184 c92e02f3 Panagiotis Kanavos
            return ;
185 c92e02f3 Panagiotis Kanavos
        }
186 aba9e6d9 Panagiotis Kanavos
187 759bd3c4 Panagiotis Kanavos
        public IList<ShareAccountInfo> ListSharingAccounts(DateTime? since = new DateTime?())
188 759bd3c4 Panagiotis Kanavos
        {
189 759bd3c4 Panagiotis Kanavos
            return default(IList<ShareAccountInfo>);
190 759bd3c4 Panagiotis Kanavos
        }
191 759bd3c4 Panagiotis Kanavos
192 cfed7823 Panagiotis Kanavos
193 cfed7823 Panagiotis Kanavos
        public IList<ObjectInfo> ListObjects(string account, string container, DateTime? since = null)
194 d78cbf09 Panagiotis Kanavos
        {
195 c53aa229 Panagiotis Kanavos
            
196 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
197 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
198 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
199 d78cbf09 Panagiotis Kanavos
200 d78cbf09 Panagiotis Kanavos
            return default(IList<ObjectInfo>);
201 d78cbf09 Panagiotis Kanavos
        }
202 9c4346c9 Panagiotis Kanavos
203 cfed7823 Panagiotis Kanavos
        public IList<ObjectInfo> ListObjects(string account, string container, string folder, DateTime? since = null)
204 637bc368 Panagiotis Kanavos
        {
205 c53aa229 Panagiotis Kanavos
            
206 637bc368 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
207 637bc368 Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
208 637bc368 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
209 93dc3a84 Panagiotis Kanavos
            //Contract.Requires(!String.IsNullOrWhiteSpace(folder));
210 637bc368 Panagiotis Kanavos
211 637bc368 Panagiotis Kanavos
            return default(IList<ObjectInfo>);
212 637bc368 Panagiotis Kanavos
        }
213 d78cbf09 Panagiotis Kanavos
214 cfed7823 Panagiotis Kanavos
        public bool ContainerExists(string account, string container)
215 d78cbf09 Panagiotis Kanavos
        {
216 c53aa229 Panagiotis Kanavos
            
217 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
218 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
219 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
220 d78cbf09 Panagiotis Kanavos
221 d78cbf09 Panagiotis Kanavos
            return default(bool);
222 d78cbf09 Panagiotis Kanavos
        }
223 d78cbf09 Panagiotis Kanavos
224 cfed7823 Panagiotis Kanavos
        public ContainerInfo GetContainerInfo(string account, string container)
225 d78cbf09 Panagiotis Kanavos
        {
226 c53aa229 Panagiotis Kanavos
            
227 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
228 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
229 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
230 d78cbf09 Panagiotis Kanavos
231 d78cbf09 Panagiotis Kanavos
            return default(ContainerInfo);
232 d78cbf09 Panagiotis Kanavos
        }
233 d78cbf09 Panagiotis Kanavos
234 cfed7823 Panagiotis Kanavos
        public void CreateContainer(string account, string container)
235 d78cbf09 Panagiotis Kanavos
        {
236 c53aa229 Panagiotis Kanavos
            
237 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
238 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
239 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
240 d78cbf09 Panagiotis Kanavos
        }
241 d78cbf09 Panagiotis Kanavos
242 cfed7823 Panagiotis Kanavos
        public void DeleteContainer(string account, string container)
243 2c053915 Panagiotis Kanavos
        {
244 c53aa229 Panagiotis Kanavos
            
245 2c053915 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
246 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
247 2c053915 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
248 2c053915 Panagiotis Kanavos
        }
249 2c053915 Panagiotis Kanavos
250 cfed7823 Panagiotis Kanavos
        public Task GetObject(string account, string container, string objectName, string fileName)
251 d78cbf09 Panagiotis Kanavos
        {
252 c53aa229 Panagiotis Kanavos
            
253 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
254 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
255 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
256 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
257 d78cbf09 Panagiotis Kanavos
258 283809f3 Panagiotis Kanavos
            return default(Task);
259 d78cbf09 Panagiotis Kanavos
        }
260 d78cbf09 Panagiotis Kanavos
261 4f6d51d4 Panagiotis Kanavos
        public Task PutObject(string account, string container, string objectName, string fileName, string hash = null, string contentType = "application/octet-stream")
262 d78cbf09 Panagiotis Kanavos
        {
263 c53aa229 Panagiotis Kanavos
            
264 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
265 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
266 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
267 637bc368 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(fileName));                        
268 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
269 4f6d51d4 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(contentType));
270 b5061ac8 Panagiotis Kanavos
271 b5061ac8 Panagiotis Kanavos
            return default(Task);
272 d78cbf09 Panagiotis Kanavos
        }
273 d78cbf09 Panagiotis Kanavos
274 c53aa229 Panagiotis Kanavos
        public void DeleteObject(string account, string container, string objectName)
275 0af3141d Panagiotis Kanavos
        {
276 c53aa229 Panagiotis Kanavos
            
277 0af3141d Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
278 0af3141d Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
279 0af3141d Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
280 0af3141d Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));            
281 d78cbf09 Panagiotis Kanavos
        }
282 d78cbf09 Panagiotis Kanavos
283 cfed7823 Panagiotis Kanavos
        public void MoveObject(string account, string sourceContainer, string oldObjectName, string targetContainer, string newObjectName)
284 d78cbf09 Panagiotis Kanavos
        {
285 c53aa229 Panagiotis Kanavos
            
286 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
287 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
288 3c43ec9b Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(sourceContainer));
289 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(oldObjectName));
290 3c43ec9b Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(targetContainer));
291 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(newObjectName));
292 d78cbf09 Panagiotis Kanavos
        }
293 d78cbf09 Panagiotis Kanavos
294 cfed7823 Panagiotis Kanavos
        public bool ObjectExists(string account, string container, string objectName)
295 d78cbf09 Panagiotis Kanavos
        {
296 c53aa229 Panagiotis Kanavos
            
297 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
298 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
299 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
300 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
301 d78cbf09 Panagiotis Kanavos
302 d78cbf09 Panagiotis Kanavos
            return default(bool);
303 d78cbf09 Panagiotis Kanavos
        }
304 d78cbf09 Panagiotis Kanavos
305 cfed7823 Panagiotis Kanavos
        public ObjectInfo GetObjectInfo(string account, string container, string objectName)
306 d78cbf09 Panagiotis Kanavos
        {
307 c53aa229 Panagiotis Kanavos
            
308 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
309 b6c72f62 Panagiotis Kanavos
            Contract.Requires(StorageUrl!=null);
310 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
311 d78cbf09 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
312 d78cbf09 Panagiotis Kanavos
313 d78cbf09 Panagiotis Kanavos
            return default(ObjectInfo);
314 d78cbf09 Panagiotis Kanavos
        }
315 10523ad9 Panagiotis Kanavos
316 cfed7823 Panagiotis Kanavos
        public void CreateFolder(string account, string container, string folder)
317 10523ad9 Panagiotis Kanavos
        {
318 c53aa229 Panagiotis Kanavos
            
319 10523ad9 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
320 10523ad9 Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
321 10523ad9 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
322 10523ad9 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(folder));            
323 10523ad9 Panagiotis Kanavos
        }
324 1caef52e Panagiotis Kanavos
325 cfed7823 Panagiotis Kanavos
        public Task<TreeHash> GetHashMap(string account, string container, string objectName)
326 1caef52e Panagiotis Kanavos
        {
327 c53aa229 Panagiotis Kanavos
            
328 1caef52e Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
329 1caef52e Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
330 1caef52e Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
331 1caef52e Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
332 1caef52e Panagiotis Kanavos
333 1caef52e Panagiotis Kanavos
            return default(Task<TreeHash>);
334 1caef52e Panagiotis Kanavos
        }
335 1caef52e Panagiotis Kanavos
336 cfed7823 Panagiotis Kanavos
        public Task<IList<string>> PutHashMap(string account, string container, string objectName, TreeHash hash)
337 1caef52e Panagiotis Kanavos
        {
338 c53aa229 Panagiotis Kanavos
            
339 1caef52e Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
340 1caef52e Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
341 1caef52e Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
342 1caef52e Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
343 1caef52e Panagiotis Kanavos
            Contract.Requires(hash != null);
344 1caef52e Panagiotis Kanavos
345 a27aa447 Panagiotis Kanavos
            return default(Task<IList<string>>);
346 a27aa447 Panagiotis Kanavos
        }
347 a27aa447 Panagiotis Kanavos
348 cfed7823 Panagiotis Kanavos
        public Task PostBlock(string account, string container, byte[] block, int offset, int count)
349 a27aa447 Panagiotis Kanavos
        {
350 c53aa229 Panagiotis Kanavos
            
351 a27aa447 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
352 a27aa447 Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
353 a27aa447 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
354 a27aa447 Panagiotis Kanavos
            Contract.Requires(block != null);
355 0af3141d Panagiotis Kanavos
            Contract.Requires(offset>=0);
356 0af3141d Panagiotis Kanavos
            Contract.Requires(offset < block.Length);
357 0af3141d Panagiotis Kanavos
            Contract.Requires(count>=0);
358 0af3141d Panagiotis Kanavos
            Contract.Requires(count <= block.Length);
359 0af3141d Panagiotis Kanavos
            
360 a27aa447 Panagiotis Kanavos
            return default(Task);
361 a27aa447 Panagiotis Kanavos
        }
362 a27aa447 Panagiotis Kanavos
363 cfed7823 Panagiotis Kanavos
        public Task<byte[]> GetBlock(string account, string container, Uri relativeUrl, long start, long? end)
364 a27aa447 Panagiotis Kanavos
        {
365 c53aa229 Panagiotis Kanavos
            
366 a27aa447 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
367 a27aa447 Panagiotis Kanavos
            Contract.Requires(StorageUrl != null);
368 a27aa447 Panagiotis Kanavos
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
369 a27aa447 Panagiotis Kanavos
            Contract.Requires(relativeUrl!=null);
370 a27aa447 Panagiotis Kanavos
            Contract.Requires(start>=0);
371 a27aa447 Panagiotis Kanavos
            Contract.Requires(end==null || end>=0);
372 a27aa447 Panagiotis Kanavos
373 a27aa447 Panagiotis Kanavos
            return default(Task<byte[]>);
374 1caef52e Panagiotis Kanavos
        }
375 d78cbf09 Panagiotis Kanavos
376 d78cbf09 Panagiotis Kanavos
    }
377 d78cbf09 Panagiotis Kanavos
}