OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
TestHttpRequest.cs
Go to the documentation of this file.
1 /*
2  * Copyright (c) Contributors, http://opensimulator.org/
3  * See CONTRIBUTORS.TXT for a full list of copyright holders.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of the OpenSimulator Project nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 using System;
29 using System.Collections.Specialized;
30 using System.IO;
31 using HttpServer;
32 using HttpServer.FormDecoders;
33 
34 namespace OpenSim.Tests.Common
35 {
36  public class TestHttpRequest: IHttpRequest
37  {
38  private string _uriPath;
39  public bool BodyIsComplete
40  {
41  get { return true; }
42  }
43  public string[] AcceptTypes
44  {
45  get {return _acceptTypes; }
46  }
47  private string[] _acceptTypes;
48  public Stream Body
49  {
50  get { return _body; }
51  set { _body = value;}
52  }
53  private Stream _body;
54  public ConnectionType Connection
55  {
56  get { return _connection; }
57  set { _connection = value; }
58  }
59  private ConnectionType _connection;
60  public int ContentLength
61  {
62  get { return _contentLength; }
63  set { _contentLength = value; }
64  }
65  private int _contentLength;
66  public NameValueCollection Headers
67  {
68  get { return _headers; }
69  }
70  private NameValueCollection _headers = new NameValueCollection();
71 
72  public string HttpVersion { get; set; }
73 
74  public string Method
75  {
76  get { return _method; }
77  set { _method = value; }
78  }
79  private string _method = null;
80  public HttpInput QueryString
81  {
82  get { return _queryString; }
83  }
84  private HttpInput _queryString = null;
85  public Uri Uri
86  {
87  get { return _uri; }
88  set { _uri = value; }
89  }
90  private Uri _uri = null;
91  public string[] UriParts
92  {
93  get { return _uri.Segments; }
94  }
95  public HttpParam Param
96  {
97  get { return null; }
98  }
99  public HttpForm Form
100  {
101  get { return null; }
102  }
103  public bool IsAjax
104  {
105  get { return false; }
106  }
107  public RequestCookies Cookies
108  {
109  get { return null; }
110  }
111 
112  public TestHttpRequest()
113  {
114  HttpVersion = "HTTP/1.1";
115  }
116 
117  public TestHttpRequest(string contentEncoding, string contentType, string userAgent,
118  string remoteAddr, string remotePort, string[] acceptTypes,
119  ConnectionType connectionType, int contentLength, Uri uri) : base()
120  {
121  _headers["content-encoding"] = contentEncoding;
122  _headers["content-type"] = contentType;
123  _headers["user-agent"] = userAgent;
124  _headers["remote_addr"] = remoteAddr;
125  _headers["remote_port"] = remotePort;
126 
127  _acceptTypes = acceptTypes;
128  _connection = connectionType;
129  _contentLength = contentLength;
130  _uri = uri;
131  }
132 
133  public void DecodeBody(FormDecoderProvider providers) {}
134  public void SetCookies(RequestCookies cookies) {}
135  public void AddHeader(string name, string value)
136  {
137  _headers.Add(name, value);
138  }
139  public int AddToBody(byte[] bytes, int offset, int length)
140  {
141  return 0;
142  }
143  public void Clear() {}
144 
145  public object Clone()
146  {
147  TestHttpRequest clone = new TestHttpRequest();
148  clone._acceptTypes = _acceptTypes;
149  clone._connection = _connection;
150  clone._contentLength = _contentLength;
151  clone._uri = _uri;
152  clone._headers = new NameValueCollection(_headers);
153 
154  return clone;
155  }
156  public IHttpResponse CreateResponse(IHttpClientContext context)
157  {
158  return new HttpResponse(context, this);
159  }
164  public string UriPath
165  {
166  get { return _uriPath; }
167  set
168  {
169  _uriPath = value;
170 
171  }
172  }
173  }
174 }
void AddHeader(string name, string value)
void DecodeBody(FormDecoderProvider providers)
int AddToBody(byte[] bytes, int offset, int length)
TestHttpRequest(string contentEncoding, string contentType, string userAgent, string remoteAddr, string remotePort, string[] acceptTypes, ConnectionType connectionType, int contentLength, Uri uri)
void SetCookies(RequestCookies cookies)
IHttpResponse CreateResponse(IHttpClientContext context)