New test.
[mono.git] / mcs / class / Microsoft.Web.Services / Microsoft.Web.Services / SoapWebResponse.cs
1 //
2 // SoapWebResponse.cs: Soap Web Response List
3 //
4 // Author:
5 //      Sebastien Pouliot (spouliot@motus.com)
6 //
7 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
8 //
9
10 using Microsoft.Web.Services;
11 using System;
12 using System.IO;
13 using System.Net;
14
15 namespace Microsoft.Web.Services {
16
17         public class SoapWebResponse : WebResponse {
18
19                 private SoapWebRequest request;
20                 private MemoryStream ms;
21                 private WebResponse response;
22
23                 internal SoapWebResponse (SoapWebRequest soapRequest) 
24                 {
25                         request = soapRequest;
26                         response = soapRequest.Request.GetResponse ();
27                 }
28
29                 public override Stream GetResponseStream () 
30                 {
31                         SoapEnvelope envelope = new SoapEnvelope ();
32                         Stream s = response.GetResponseStream ();
33                         envelope.Load (s);
34                         request.Pipeline.ProcessInputMessage (envelope);
35
36                         ms = new MemoryStream ();
37                         envelope.Save (ms);
38                         ms.Position = 0; // ready to be read
39                         return ms;
40                 }
41
42                 public override long ContentLength { 
43                         get { return ((ms == null) ? 0 : ms.Length); }
44                 }
45
46                 public override string ContentType { 
47                         get { return request.Request.ContentType; }
48                 }
49
50                 public override WebHeaderCollection Headers {
51                         get { return response.Headers; }
52                 }
53
54                 public SoapContext SoapContext { 
55                         get { return request.SoapContext; }
56                 }
57         } 
58 }