2 using System.Collections.Generic;
6 using System.Net.Http.Formatting;
7 using System.Net.Http.Headers;
11 namespace Pithos.TestServer
13 public class RootController : ApiController
15 // GET api/<controller>
16 public HttpResponseMessage Get()
18 var user = Request.Headers.GetValues("X-Auth-User").FirstOrDefault();
19 var key = Request.Headers.GetValues("X-Auth-Key").FirstOrDefault();
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() );
30 public HttpResponseMessage GetContainers(string account,string format="json")
32 var token = Request.Headers.GetValues("X-Auth-Token").FirstOrDefault();
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");
42 var containerInfos = new[]
46 last_modified= "2013-03-01T17:34:50.658206+00:00",
47 bytes= 122996889, name= "pithos",
48 x_container_policy=new PolicyInfo
56 resp.Content=new ObjectContent(typeof(ContainerInfo[]),containerInfos,format=="json"?(MediaTypeFormatter) new JsonMediaTypeFormatter():new XmlMediaTypeFormatter());
61 public HttpResponseMessage HeadAccount(string account,string format="json")
63 var token = Request.Headers.GetValues("X-Auth-Token").FirstOrDefault();
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");
73 resp.Headers.Vary.Add("Accept-Language");
79 public HttpResponseMessage HeadContainer(string account, string container, string format = "json")
81 var token = Request.Headers.GetValues("X-Auth-Token").FirstOrDefault();
83 var resp = new HttpResponseMessage();
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");
92 resp.Headers.Vary.Add("Accept-Language");
96 public HttpResponseMessage GetObjects(string account, string container,string format="json")
98 var token = Request.Headers.GetValues("X-Auth-Token").FirstOrDefault();
100 var resp = new HttpResponseMessage();
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");
109 resp.Headers.Vary.Add("Accept-Language");
111 var objectInfos = new[]
115 content_type="application/directory",
116 hash="d41d8cd98f00b204e9800998ecf8427e",
117 last_modified= "2013-03-01T17:34:50.658206+00:00",
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
127 resp.Content = new ObjectContent(typeof(ObjectInfo[]), objectInfos, format == "json" ? (MediaTypeFormatter)new JsonMediaTypeFormatter() : new XmlMediaTypeFormatter());
137 public class ObjectInfo
139 public decimal x_object_version_timestamp { get; set; }
140 public long bytes { get; set; }
142 public string content_type { get; set; }
144 public string hash { get; set; }
146 public string last_modified { get; set; }
148 public string name { get; set; }
150 public string x_object_hash { get; set; }
152 public string x_object_modified_by { get; set; }
154 public string x_object_uuid { get; set; }
156 public long x_object_version { get; set; }
159 public class ContainerInfo
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; }
168 public class PolicyInfo
171 public long quota { get; set; }
172 public string versioning { get; set; }