root / trunk / Pithos.TestServer / RootController.cs @ ac8b664d
History | View | Annotate | Download (6.3 kB)
1 |
using System; |
---|---|
2 |
using System.Collections.Generic; |
3 |
using System.Linq; |
4 |
using System.Net; |
5 |
using System.Net.Http; |
6 |
using System.Net.Http.Formatting; |
7 |
using System.Net.Http.Headers; |
8 |
using System.Text; |
9 |
using System.Web.Http; |
10 |
|
11 |
namespace Pithos.TestServer |
12 |
{ |
13 |
public class RootController : ApiController |
14 |
{ |
15 |
// GET api/<controller> |
16 |
public HttpResponseMessage Get() |
17 |
{ |
18 |
var user = Request.Headers.GetValues("X-Auth-User").FirstOrDefault(); |
19 |
var key = Request.Headers.GetValues("X-Auth-Key").FirstOrDefault(); |
20 |
|
21 |
var resp = new HttpResponseMessage(); |
22 |
resp.StatusCode = HttpStatusCode.NoContent; |
23 |
resp.Headers.Add("X-Auth-Token",key); |
24 |
resp.Headers.Vary.Add("Accept-Language"); |
25 |
var uri = new Uri(Request.RequestUri, user); |
26 |
resp.Headers.Add("X-Storage-Url",uri.ToString() ); |
27 |
return resp; |
28 |
} |
29 |
|
30 |
public HttpResponseMessage GetContainers(string account,string format="json") |
31 |
{ |
32 |
var token = Request.Headers.GetValues("X-Auth-Token").FirstOrDefault(); |
33 |
|
34 |
var resp = new HttpResponseMessage(); |
35 |
resp.StatusCode = HttpStatusCode.OK; |
36 |
resp.Headers.Add("X-Account-Policy-Quota","53687091200"); |
37 |
resp.Headers.Add("X-Account-Policy-Versioning","auto"); |
38 |
resp.Headers.Add("X-Account-Bytes-Used","10293909204"); |
39 |
resp.Headers.Add("X-Account-Containe-Count","2"); |
40 |
resp.Headers.Vary.Add("Accept-Language"); |
41 |
|
42 |
var containerInfos = new[] |
43 |
{ |
44 |
new ContainerInfo{ |
45 |
count= 0, |
46 |
last_modified= "2013-03-01T17:34:50.658206+00:00", |
47 |
bytes= 122996889, name= "pithos", |
48 |
x_container_policy=new PolicyInfo |
49 |
{ |
50 |
quota= 53687091200, |
51 |
versioning= "auto" |
52 |
} |
53 |
}, |
54 |
}; |
55 |
|
56 |
resp.Content=new ObjectContent(typeof(ContainerInfo[]),containerInfos,format=="json"?(MediaTypeFormatter) new JsonMediaTypeFormatter():new XmlMediaTypeFormatter()); |
57 |
|
58 |
return resp; |
59 |
} |
60 |
|
61 |
public HttpResponseMessage HeadAccount(string account,string format="json") |
62 |
{ |
63 |
var token = Request.Headers.GetValues("X-Auth-Token").FirstOrDefault(); |
64 |
|
65 |
var resp = new HttpResponseMessage(); |
66 |
resp.StatusCode = HttpStatusCode.NoContent; |
67 |
resp.Headers.Add("X-Account-Policy-Quota","53687091200"); |
68 |
resp.Headers.Add("X-Account-Policy-Versioning","auto"); |
69 |
resp.Headers.Add("X-Account-Bytes-Used","10293909204"); |
70 |
resp.Headers.Add("X-Account-Container-Count","2"); |
71 |
|
72 |
|
73 |
resp.Headers.Vary.Add("Accept-Language"); |
74 |
|
75 |
|
76 |
return resp; |
77 |
} |
78 |
|
79 |
public HttpResponseMessage HeadContainer(string account, string container, string format = "json") |
80 |
{ |
81 |
var token = Request.Headers.GetValues("X-Auth-Token").FirstOrDefault(); |
82 |
|
83 |
var resp = new HttpResponseMessage(); |
84 |
|
85 |
resp.Headers.Add("X-Container-Policy-Quota", "53687091200"); |
86 |
resp.Headers.Add("X-Container-Object-Count", "0"); |
87 |
resp.Headers.Add("X-Container-Block-Hash", "sha256"); |
88 |
resp.Headers.Add("X-Container-Block-Size", "4194304"); |
89 |
resp.Headers.Add("X-Container-Bytes-Used", "122996889"); |
90 |
resp.Headers.Add("X-Container-Policy-Versioning", "auto"); |
91 |
|
92 |
resp.Headers.Vary.Add("Accept-Language"); |
93 |
return resp; |
94 |
} |
95 |
|
96 |
public HttpResponseMessage GetObjects(string account, string container,string format="json") |
97 |
{ |
98 |
var token = Request.Headers.GetValues("X-Auth-Token").FirstOrDefault(); |
99 |
|
100 |
var resp = new HttpResponseMessage(); |
101 |
|
102 |
resp.Headers.Add("X-Container-Policy-Quota", "53687091200"); |
103 |
resp.Headers.Add("X-Container-Object-Count", "0"); |
104 |
resp.Headers.Add("X-Container-Block-Hash", "sha256"); |
105 |
resp.Headers.Add("X-Container-Block-Size", "4194304"); |
106 |
resp.Headers.Add("X-Container-Bytes-Used", "122996889"); |
107 |
resp.Headers.Add("X-Container-Policy-Versioning", "auto"); |
108 |
|
109 |
resp.Headers.Vary.Add("Accept-Language"); |
110 |
|
111 |
var objectInfos = new[] |
112 |
{ |
113 |
new ObjectInfo{ |
114 |
bytes= 0, |
115 |
content_type="application/directory", |
116 |
hash="d41d8cd98f00b204e9800998ecf8427e", |
117 |
last_modified= "2013-03-01T17:34:50.658206+00:00", |
118 |
name="22", |
119 |
x_object_hash="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", |
120 |
x_object_modified_by="b5ab920f-91dd-4d9f-af6e-f73dd1b135ed", |
121 |
x_object_uuid="91bfe183-8d48-43f1-9cb6-0d0ee112551d", |
122 |
x_object_version=398456, |
123 |
x_object_version_timestamp=(decimal) 1352809430.578321 |
124 |
}, |
125 |
}; |
126 |
|
127 |
resp.Content = new ObjectContent(typeof(ObjectInfo[]), objectInfos, format == "json" ? (MediaTypeFormatter)new JsonMediaTypeFormatter() : new XmlMediaTypeFormatter()); |
128 |
|
129 |
|
130 |
return resp; |
131 |
} |
132 |
|
133 |
|
134 |
|
135 |
} |
136 |
|
137 |
public class ObjectInfo |
138 |
{ |
139 |
public decimal x_object_version_timestamp { get; set; } |
140 |
public long bytes { get; set; } |
141 |
|
142 |
public string content_type { get; set; } |
143 |
|
144 |
public string hash { get; set; } |
145 |
|
146 |
public string last_modified { get; set; } |
147 |
|
148 |
public string name { get; set; } |
149 |
|
150 |
public string x_object_hash { get; set; } |
151 |
|
152 |
public string x_object_modified_by { get; set; } |
153 |
|
154 |
public string x_object_uuid { get; set; } |
155 |
|
156 |
public long x_object_version { get; set; } |
157 |
} |
158 |
|
159 |
public class ContainerInfo |
160 |
{ |
161 |
public long bytes { get; set; } |
162 |
public long count { get; set; } |
163 |
public string last_modified { get; set; } |
164 |
public string name { get; set; } |
165 |
public PolicyInfo x_container_policy { get; set; } |
166 |
} |
167 |
|
168 |
public class PolicyInfo |
169 |
{ |
170 |
|
171 |
public long quota { get; set; } |
172 |
public string versioning { get; set; } |
173 |
} |
174 |
|
175 |
|
176 |
} |