root / trunk / Pithos.Interfaces / ICloudClient.cs @ 3c43ec9b
History | View | Annotate | Download (7.8 kB)
1 | d78cbf09 | Panagiotis Kanavos | using System; |
---|---|---|---|
2 | d78cbf09 | Panagiotis Kanavos | using System.Collections.Generic; |
3 | d78cbf09 | Panagiotis Kanavos | using System.Diagnostics.Contracts; |
4 | d78cbf09 | Panagiotis Kanavos | using System.Linq; |
5 | d78cbf09 | Panagiotis Kanavos | using System.Text; |
6 | b5061ac8 | Panagiotis Kanavos | using System.Threading.Tasks; |
7 | d78cbf09 | Panagiotis Kanavos | |
8 | d78cbf09 | Panagiotis Kanavos | namespace Pithos.Interfaces |
9 | d78cbf09 | Panagiotis Kanavos | { |
10 | d78cbf09 | Panagiotis Kanavos | [ContractClass(typeof(ICloudClientContract))] |
11 | d78cbf09 | Panagiotis Kanavos | public interface ICloudClient |
12 | d78cbf09 | Panagiotis Kanavos | { |
13 | d78cbf09 | Panagiotis Kanavos | string ApiKey { get; set; } |
14 | d78cbf09 | Panagiotis Kanavos | string UserName { get; set; } |
15 | b6c72f62 | Panagiotis Kanavos | Uri StorageUrl { get; set; } |
16 | d78cbf09 | Panagiotis Kanavos | string Token { get; set; } |
17 | 2c053915 | Panagiotis Kanavos | bool UsePithos { get; set; } |
18 | d78cbf09 | Panagiotis Kanavos | void Authenticate(string userName,string apiKey); |
19 | 5bcf6d70 | Panagiotis Kanavos | Uri Proxy { get; set; } |
20 | b5061ac8 | Panagiotis Kanavos | double DownloadPercentLimit { get; set; } |
21 | b5061ac8 | Panagiotis Kanavos | double UploadPercentLimit { get; set; } |
22 | b5061ac8 | Panagiotis Kanavos | |
23 | d78cbf09 | Panagiotis Kanavos | |
24 | d78cbf09 | Panagiotis Kanavos | IList<ContainerInfo> ListContainers(); |
25 | d78cbf09 | Panagiotis Kanavos | IList<ObjectInfo> ListObjects(string container); |
26 | 637bc368 | Panagiotis Kanavos | IList<ObjectInfo> ListObjects(string container, string folder); |
27 | d78cbf09 | Panagiotis Kanavos | bool ContainerExists(string container); |
28 | d78cbf09 | Panagiotis Kanavos | ContainerInfo GetContainerInfo(string container); |
29 | d78cbf09 | Panagiotis Kanavos | void CreateContainer(string container); |
30 | 2c053915 | Panagiotis Kanavos | void DeleteContainer(string container); |
31 | d78cbf09 | Panagiotis Kanavos | |
32 | 283809f3 | Panagiotis Kanavos | Task GetObject(string container, string objectName, string fileName); |
33 | b5061ac8 | Panagiotis Kanavos | Task PutObject(string container, string objectName, string fileName, string hash = null); |
34 | d78cbf09 | Panagiotis Kanavos | void DeleteObject(string container, string objectName); |
35 | 3c43ec9b | Panagiotis Kanavos | void MoveObject(string sourceContainer, string oldObjectName, string targetContainer,string newObjectName); |
36 | d78cbf09 | Panagiotis Kanavos | bool ObjectExists(string container,string objectName); |
37 | d78cbf09 | Panagiotis Kanavos | ObjectInfo GetObjectInfo(string container, string objectName); |
38 | 10523ad9 | Panagiotis Kanavos | void CreateFolder(string container, string folder); |
39 | 637bc368 | Panagiotis Kanavos | |
40 | 637bc368 | Panagiotis Kanavos | |
41 | d78cbf09 | Panagiotis Kanavos | } |
42 | d78cbf09 | Panagiotis Kanavos | |
43 | d78cbf09 | Panagiotis Kanavos | |
44 | d78cbf09 | Panagiotis Kanavos | [ContractClassFor(typeof(ICloudClient))] |
45 | d78cbf09 | Panagiotis Kanavos | public abstract class ICloudClientContract:ICloudClient |
46 | d78cbf09 | Panagiotis Kanavos | { |
47 | d78cbf09 | Panagiotis Kanavos | public string ApiKey { get; set; } |
48 | d78cbf09 | Panagiotis Kanavos | public string UserName { get; set; } |
49 | b6c72f62 | Panagiotis Kanavos | public Uri StorageUrl { get; set; } |
50 | d78cbf09 | Panagiotis Kanavos | public string Token { get; set; } |
51 | 5bcf6d70 | Panagiotis Kanavos | public Uri Proxy { get; set; } |
52 | b5061ac8 | Panagiotis Kanavos | public double DownloadPercentLimit { get; set; } |
53 | b5061ac8 | Panagiotis Kanavos | public double UploadPercentLimit { get; set; } |
54 | d78cbf09 | Panagiotis Kanavos | |
55 | 2c053915 | Panagiotis Kanavos | public bool UsePithos { get; set; } |
56 | 2c053915 | Panagiotis Kanavos | |
57 | d78cbf09 | Panagiotis Kanavos | public void Authenticate(string userName, string apiKey) |
58 | d78cbf09 | Panagiotis Kanavos | { |
59 | d78cbf09 | Panagiotis Kanavos | Contract.Requires<ArgumentNullException>(!String.IsNullOrWhiteSpace(apiKey), "ApiKey must be filled before calling Authenticate"); |
60 | d78cbf09 | Panagiotis Kanavos | Contract.Requires<ArgumentNullException>(!String.IsNullOrWhiteSpace(userName), "UserName must be filled before calling Authenticate"); |
61 | d78cbf09 | Panagiotis Kanavos | |
62 | d78cbf09 | Panagiotis Kanavos | |
63 | d78cbf09 | Panagiotis Kanavos | Contract.Ensures(apiKey==ApiKey); |
64 | d78cbf09 | Panagiotis Kanavos | Contract.Ensures(userName==UserName); |
65 | b6c72f62 | Panagiotis Kanavos | Contract.Ensures(StorageUrl!=null); |
66 | d78cbf09 | Panagiotis Kanavos | Contract.Ensures(!String.IsNullOrWhiteSpace(Token)); |
67 | d78cbf09 | Panagiotis Kanavos | |
68 | d78cbf09 | Panagiotis Kanavos | } |
69 | d78cbf09 | Panagiotis Kanavos | |
70 | d78cbf09 | Panagiotis Kanavos | public IList<ContainerInfo> ListContainers() |
71 | d78cbf09 | Panagiotis Kanavos | { |
72 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
73 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
74 | d78cbf09 | Panagiotis Kanavos | |
75 | d78cbf09 | Panagiotis Kanavos | return default(IList<ContainerInfo>); |
76 | d78cbf09 | Panagiotis Kanavos | } |
77 | d78cbf09 | Panagiotis Kanavos | |
78 | d78cbf09 | Panagiotis Kanavos | public IList<ObjectInfo> ListObjects(string container) |
79 | d78cbf09 | Panagiotis Kanavos | { |
80 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
81 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl != null); |
82 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
83 | d78cbf09 | Panagiotis Kanavos | |
84 | d78cbf09 | Panagiotis Kanavos | return default(IList<ObjectInfo>); |
85 | d78cbf09 | Panagiotis Kanavos | } |
86 | 637bc368 | Panagiotis Kanavos | |
87 | 637bc368 | Panagiotis Kanavos | public IList<ObjectInfo> ListObjects(string container, string folder) |
88 | 637bc368 | Panagiotis Kanavos | { |
89 | 637bc368 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
90 | 637bc368 | Panagiotis Kanavos | Contract.Requires(StorageUrl != null); |
91 | 637bc368 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
92 | 637bc368 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(folder)); |
93 | 637bc368 | Panagiotis Kanavos | |
94 | 637bc368 | Panagiotis Kanavos | return default(IList<ObjectInfo>); |
95 | 637bc368 | Panagiotis Kanavos | } |
96 | d78cbf09 | Panagiotis Kanavos | |
97 | d78cbf09 | Panagiotis Kanavos | public bool ContainerExists(string container) |
98 | d78cbf09 | Panagiotis Kanavos | { |
99 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
100 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
101 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
102 | d78cbf09 | Panagiotis Kanavos | |
103 | d78cbf09 | Panagiotis Kanavos | return default(bool); |
104 | d78cbf09 | Panagiotis Kanavos | } |
105 | d78cbf09 | Panagiotis Kanavos | |
106 | d78cbf09 | Panagiotis Kanavos | public ContainerInfo GetContainerInfo(string container) |
107 | d78cbf09 | Panagiotis Kanavos | { |
108 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
109 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
110 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
111 | d78cbf09 | Panagiotis Kanavos | |
112 | d78cbf09 | Panagiotis Kanavos | return default(ContainerInfo); |
113 | d78cbf09 | Panagiotis Kanavos | } |
114 | d78cbf09 | Panagiotis Kanavos | |
115 | d78cbf09 | Panagiotis Kanavos | public void CreateContainer(string container) |
116 | d78cbf09 | Panagiotis Kanavos | { |
117 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
118 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
119 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
120 | d78cbf09 | Panagiotis Kanavos | } |
121 | d78cbf09 | Panagiotis Kanavos | |
122 | 2c053915 | Panagiotis Kanavos | public void DeleteContainer(string container) |
123 | 2c053915 | Panagiotis Kanavos | { |
124 | 2c053915 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
125 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
126 | 2c053915 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
127 | 2c053915 | Panagiotis Kanavos | } |
128 | 2c053915 | Panagiotis Kanavos | |
129 | 283809f3 | Panagiotis Kanavos | public Task GetObject(string container, string objectName, string fileName) |
130 | d78cbf09 | Panagiotis Kanavos | { |
131 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
132 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
133 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
134 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(objectName)); |
135 | d78cbf09 | Panagiotis Kanavos | |
136 | 283809f3 | Panagiotis Kanavos | return default(Task); |
137 | d78cbf09 | Panagiotis Kanavos | } |
138 | d78cbf09 | Panagiotis Kanavos | |
139 | b5061ac8 | Panagiotis Kanavos | public Task PutObject(string container, string objectName, string fileName, string hash = null) |
140 | d78cbf09 | Panagiotis Kanavos | { |
141 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
142 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
143 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
144 | 637bc368 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(fileName)); |
145 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(objectName)); |
146 | b5061ac8 | Panagiotis Kanavos | |
147 | b5061ac8 | Panagiotis Kanavos | return default(Task); |
148 | d78cbf09 | Panagiotis Kanavos | } |
149 | d78cbf09 | Panagiotis Kanavos | |
150 | d78cbf09 | Panagiotis Kanavos | public void DeleteObject(string container, string objectName) |
151 | d78cbf09 | Panagiotis Kanavos | { |
152 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
153 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
154 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
155 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(objectName)); |
156 | d78cbf09 | Panagiotis Kanavos | } |
157 | d78cbf09 | Panagiotis Kanavos | |
158 | 3c43ec9b | Panagiotis Kanavos | public void MoveObject(string sourceContainer, string oldObjectName, string targetContainer,string newObjectName) |
159 | d78cbf09 | Panagiotis Kanavos | { |
160 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
161 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
162 | 3c43ec9b | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(sourceContainer)); |
163 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(oldObjectName)); |
164 | 3c43ec9b | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(targetContainer)); |
165 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(newObjectName)); |
166 | d78cbf09 | Panagiotis Kanavos | } |
167 | d78cbf09 | Panagiotis Kanavos | |
168 | d78cbf09 | Panagiotis Kanavos | public bool ObjectExists(string container,string objectName) |
169 | d78cbf09 | Panagiotis Kanavos | { |
170 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
171 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
172 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
173 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(objectName)); |
174 | d78cbf09 | Panagiotis Kanavos | |
175 | d78cbf09 | Panagiotis Kanavos | return default(bool); |
176 | d78cbf09 | Panagiotis Kanavos | } |
177 | d78cbf09 | Panagiotis Kanavos | |
178 | d78cbf09 | Panagiotis Kanavos | public ObjectInfo GetObjectInfo(string container,string objectName) |
179 | d78cbf09 | Panagiotis Kanavos | { |
180 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
181 | b6c72f62 | Panagiotis Kanavos | Contract.Requires(StorageUrl!=null); |
182 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
183 | d78cbf09 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(objectName)); |
184 | d78cbf09 | Panagiotis Kanavos | |
185 | d78cbf09 | Panagiotis Kanavos | return default(ObjectInfo); |
186 | d78cbf09 | Panagiotis Kanavos | } |
187 | 10523ad9 | Panagiotis Kanavos | |
188 | 10523ad9 | Panagiotis Kanavos | public void CreateFolder(string container, string folder) |
189 | 10523ad9 | Panagiotis Kanavos | { |
190 | 10523ad9 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(Token)); |
191 | 10523ad9 | Panagiotis Kanavos | Contract.Requires(StorageUrl != null); |
192 | 10523ad9 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(container)); |
193 | 10523ad9 | Panagiotis Kanavos | Contract.Requires(!String.IsNullOrWhiteSpace(folder)); |
194 | 10523ad9 | Panagiotis Kanavos | } |
195 | d78cbf09 | Panagiotis Kanavos | } |
196 | d78cbf09 | Panagiotis Kanavos | |
197 | d78cbf09 | Panagiotis Kanavos | public class ContainerInfo |
198 | d78cbf09 | Panagiotis Kanavos | { |
199 | d78cbf09 | Panagiotis Kanavos | public string Name { get; set; } |
200 | d78cbf09 | Panagiotis Kanavos | public long Count { get; set; } |
201 | d78cbf09 | Panagiotis Kanavos | public long Bytes { get; set; } |
202 | d78cbf09 | Panagiotis Kanavos | |
203 | d78cbf09 | Panagiotis Kanavos | public static ContainerInfo Empty=new ContainerInfo(); |
204 | d78cbf09 | Panagiotis Kanavos | } |
205 | d78cbf09 | Panagiotis Kanavos | } |