Statistics
| Branch: | Revision:

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
}