Revision cfed7823 trunk/Pithos.Network/ICloudClient.cs

b/trunk/Pithos.Network/ICloudClient.cs
20 20
        double UploadPercentLimit { get; set; }
21 21
        string AuthenticationUrl { get; set; }
22 22

  
23

  
24
        IList<ContainerInfo> ListContainers();
25
        IList<ObjectInfo> ListObjects(string container,DateTime? since=null);
26
        IList<ObjectInfo> ListObjects(string container, string folder, DateTime? since = null); 
27
        bool ContainerExists(string container);
28
        ContainerInfo GetContainerInfo(string container);
29
        void CreateContainer(string container);
30
        void DeleteContainer(string container);
23
        #region Container operations
31 24
        
32
        Task GetObject(string container, string objectName, string fileName);
33
        Task PutObject(string container, string objectName, string fileName, string hash = null);
34
        void DeleteObject(string container, string objectName, string trashContainer);
35
        void DeleteObject(string container, string objectName);
36
        void MoveObject(string sourceContainer, string oldObjectName, string targetContainer,string newObjectName);
37
        bool ObjectExists(string container,string objectName);
38
        ObjectInfo GetObjectInfo(string container, string objectName);
39
        void CreateFolder(string container, string folder);
40

  
41

  
42
        Task<TreeHash> GetHashMap(string container, string objectName);
43
        Task<IList<string>> PutHashMap(string container, string objectName, TreeHash hash);
44
        Task PostBlock(string container,byte[] block,int offset,int count);
45
        Task<byte[]> GetBlock(string container, Uri relativeUrl, long start, long? end);
25
        IList<ContainerInfo> ListContainers(string account=null);
26
        IList<ObjectInfo> ListObjects(string account, string container, DateTime? since = null);
27
        IList<ObjectInfo> ListObjects(string account, string container, string folder, DateTime? since = null);
28
        bool ContainerExists(string account, string container);
29
        ContainerInfo GetContainerInfo(string account, string container);
30
        void CreateContainer(string account, string container);
31
        void DeleteContainer(string account, string container);
32
        #endregion
33

  
34
        #region Object operations        
35
        Task GetObject(string account, string container, string objectName, string fileName);
36
        Task PutObject(string account, string container, string objectName, string fileName, string hash = null);
37
        void DeleteObject(string account, string container, string objectName, string trashContainer);
38
        //void DeleteObject(string container, string objectName, string account = null);
39
        void MoveObject(string account, string sourceContainer, string oldObjectName, string targetContainer, string newObjectName);
40
        bool ObjectExists(string account, string container, string objectName);
41
        ObjectInfo GetObjectInfo(string account, string container, string objectName);
42
        void CreateFolder(string account, string container, string folder);
43
        #endregion
44

  
45
        #region Hashmap operations        
46
        Task<TreeHash> GetHashMap(string account, string container, string objectName);
47
        Task<IList<string>> PutHashMap(string account, string container, string objectName, TreeHash hash);
48
        Task PostBlock(string account, string container, byte[] block, int offset, int count);
49
        Task<byte[]> GetBlock(string account, string container, Uri relativeUrl, long start, long? end);
50
        #endregion
51

  
52
        #region Sharing operations        
53
        IList<ObjectInfo> ListSharedObjects(DateTime? since);
54
        void ShareObject(string account, string container, string objectName, string shareTo, bool read, bool write);
55

  
56
        #endregion
46 57
    }
47 58

  
48 59

  
......
74 85
            
75 86
        }
76 87

  
77
        public IList<ContainerInfo> ListContainers()
88
        public IList<ContainerInfo> ListContainers(string account=null)
78 89
        {
79 90
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
80 91
            Contract.Requires(StorageUrl!=null);            
......
82 93
            return default(IList<ContainerInfo>);
83 94
        }
84 95

  
85
        public IList<ObjectInfo> ListObjects(string container, DateTime? since = null)
96
        public IList<ObjectInfo> ListSharedObjects(DateTime? since)
97
        {
98
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
99
            Contract.Requires(StorageUrl != null);
100

  
101
            return default(IList<ObjectInfo>);
102
        }
103

  
104
        public void ShareObject(string account, string container, string objectName, string shareTo, bool read, bool write)
105
        {
106
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
107
            Contract.Requires(StorageUrl != null);
108
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
109
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));
110
            Contract.Requires(!String.IsNullOrWhiteSpace(account));
111
            Contract.Requires(!String.IsNullOrWhiteSpace(shareTo));
112
   
113
        }
114

  
115

  
116
        public IList<ObjectInfo> ListObjects(string account, string container, DateTime? since = null)
86 117
        {
87 118
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
88 119
            Contract.Requires(StorageUrl != null);
......
91 122
            return default(IList<ObjectInfo>);
92 123
        }
93 124

  
94
        public IList<ObjectInfo> ListObjects(string container, string folder, DateTime? since = null)
125
        public IList<ObjectInfo> ListObjects(string account, string container, string folder, DateTime? since = null)
95 126
        {
96 127
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
97 128
            Contract.Requires(StorageUrl != null);
......
101 132
            return default(IList<ObjectInfo>);
102 133
        }
103 134

  
104
        public bool ContainerExists(string container)
135
        public bool ContainerExists(string account, string container)
105 136
        {
106 137
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
107 138
            Contract.Requires(StorageUrl!=null);
......
110 141
            return default(bool);
111 142
        }
112 143

  
113
        public ContainerInfo GetContainerInfo(string container)
144
        public ContainerInfo GetContainerInfo(string account, string container)
114 145
        {
115 146
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
116 147
            Contract.Requires(StorageUrl!=null);
......
119 150
            return default(ContainerInfo);
120 151
        }
121 152

  
122
        public void CreateContainer(string container)
153
        public void CreateContainer(string account, string container)
123 154
        {
124 155
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
125 156
            Contract.Requires(StorageUrl!=null);
126 157
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
127 158
        }
128 159

  
129
        public void DeleteContainer(string container)
160
        public void DeleteContainer(string account, string container)
130 161
        {
131 162
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
132 163
            Contract.Requires(StorageUrl!=null);
133 164
            Contract.Requires(!String.IsNullOrWhiteSpace(container));
134 165
        }
135 166

  
136
        public Task GetObject(string container, string objectName, string fileName)
167
        public Task GetObject(string account, string container, string objectName, string fileName)
137 168
        {
138 169
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
139 170
            Contract.Requires(StorageUrl!=null);
......
143 174
            return default(Task);
144 175
        }
145 176

  
146
        public Task PutObject(string container, string objectName, string fileName, string hash = null)
177
        public Task PutObject(string account, string container, string objectName, string fileName, string hash = null)
147 178
        {
148 179
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
149 180
            Contract.Requires(StorageUrl!=null);
......
154 185
            return default(Task);
155 186
        }
156 187

  
157
        public void DeleteObject(string container, string objectName, string trashContainer)
188
        public void DeleteObject(string account, string container, string objectName, string trashContainer)
158 189
        {
159 190
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
160 191
            Contract.Requires(StorageUrl!=null);
......
163 194
            Contract.Requires(!String.IsNullOrWhiteSpace(trashContainer));
164 195
        }
165 196

  
166
        public void DeleteObject(string container, string objectName)
197
        public void DeleteObject(string container, string objectName, string account = null)
167 198
        {
168 199
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
169 200
            Contract.Requires(StorageUrl!=null);
......
171 202
            Contract.Requires(!String.IsNullOrWhiteSpace(objectName));            
172 203
        }
173 204

  
174
        public void MoveObject(string sourceContainer, string oldObjectName, string targetContainer,string newObjectName)
205
        public void MoveObject(string account, string sourceContainer, string oldObjectName, string targetContainer, string newObjectName)
175 206
        {
176 207
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
177 208
            Contract.Requires(StorageUrl!=null);
......
181 212
            Contract.Requires(!String.IsNullOrWhiteSpace(newObjectName));
182 213
        }
183 214

  
184
        public bool ObjectExists(string container,string objectName)
215
        public bool ObjectExists(string account, string container, string objectName)
185 216
        {
186 217
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
187 218
            Contract.Requires(StorageUrl!=null);
......
191 222
            return default(bool);
192 223
        }
193 224

  
194
        public ObjectInfo GetObjectInfo(string container,string objectName)
225
        public ObjectInfo GetObjectInfo(string account, string container, string objectName)
195 226
        {
196 227
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
197 228
            Contract.Requires(StorageUrl!=null);
......
201 232
            return default(ObjectInfo);
202 233
        }
203 234

  
204
        public void CreateFolder(string container, string folder)
235
        public void CreateFolder(string account, string container, string folder)
205 236
        {
206 237
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
207 238
            Contract.Requires(StorageUrl != null);
......
209 240
            Contract.Requires(!String.IsNullOrWhiteSpace(folder));            
210 241
        }
211 242

  
212
        public Task<TreeHash> GetHashMap(string container, string objectName)
243
        public Task<TreeHash> GetHashMap(string account, string container, string objectName)
213 244
        {
214 245
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
215 246
            Contract.Requires(StorageUrl != null);
......
219 250
            return default(Task<TreeHash>);
220 251
        }
221 252

  
222
        public Task<IList<string>> PutHashMap(string container, string objectName, TreeHash hash)
253
        public Task<IList<string>> PutHashMap(string account, string container, string objectName, TreeHash hash)
223 254
        {
224 255
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
225 256
            Contract.Requires(StorageUrl != null);
......
230 261
            return default(Task<IList<string>>);
231 262
        }
232 263

  
233
        public Task PostBlock(string container,byte[] block,int offset,int count)
264
        public Task PostBlock(string account, string container, byte[] block, int offset, int count)
234 265
        {
235 266
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
236 267
            Contract.Requires(StorageUrl != null);
......
244 275
            return default(Task);
245 276
        }
246 277

  
247
        public Task<byte[]> GetBlock(string container, Uri relativeUrl, long start, long? end)
278
        public Task<byte[]> GetBlock(string account, string container, Uri relativeUrl, long start, long? end)
248 279
        {
249 280
            Contract.Requires(!String.IsNullOrWhiteSpace(Token));
250 281
            Contract.Requires(StorageUrl != null);
......
255 286

  
256 287
            return default(Task<byte[]>);
257 288
        }
258
    }
259

  
260
    public class ContainerInfo
261
    {
262
        public string Name { get; set; }
263
        public long Count { get; set; }
264
        public long Bytes { get; set; }
265
        public string BlockHash { get; set; }
266
        public int BlockSize { get; set; }
267 289

  
268
        public static ContainerInfo Empty=new ContainerInfo();
269 290
    }
270 291
}

Also available in: Unified diff