Merge branch '1.x' of ssh://authdev.it.ohio-state.edu/~scantor/git/cpp-xmltooling...
[shibboleth/cpp-xmltooling.git] / xmltooling / soap / HTTPSOAPTransport.h
1 /**
2  * Licensed to the University Corporation for Advanced Internet
3  * Development, Inc. (UCAID) under one or more contributor license
4  * agreements. See the NOTICE file distributed with this work for
5  * additional information regarding copyright ownership.
6  *
7  * UCAID licenses this file to you under the Apache License,
8  * Version 2.0 (the "License"); you may not use this file except
9  * in compliance with the License. You may obtain a copy of the
10  * License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
17  * either express or implied. See the License for the specific
18  * language governing permissions and limitations under the License.
19  */
20
21 /**
22  * @file xmltooling/soap/HTTPSOAPTransport.h
23  * 
24  * Encapsulates HTTP SOAP transport layer.
25  */
26
27 #ifndef __xmltooling_httpsoaptrans_h__
28 #define __xmltooling_httpsoaptrans_h__
29
30 #include <xmltooling/soap/SOAPTransport.h>
31 #include <string>
32 #include <vector>
33
34 namespace xmltooling {
35     
36     /**
37      * Encapsulates HTTP SOAP transport layer.
38      */
39     class XMLTOOL_API HTTPSOAPTransport : public virtual SOAPTransport 
40     {
41     protected:
42         HTTPSOAPTransport();
43     public:
44         virtual ~HTTPSOAPTransport();
45         
46         /**
47          * Indicate whether content should be sent using HTTP 1.1 and
48          * Chunked Transport-Encoding, or buffered and sent with a Content-Length.
49          *
50          * @param chunked true iff chunked encoding should be used
51          * @return  true iff the property is successfully set
52          */
53         virtual bool useChunkedEncoding(bool chunked=true)=0;
54
55         /**
56          * Sets an outgoing HTTP request header.
57          * 
58          * @param name   name of header, without the colon separator
59          * @param value  header value to send
60          * @return  true iff the header is successfully set
61          */
62         virtual bool setRequestHeader(const char* name, const char* value)=0;
63
64         /**
65          * Controls redirect behavior.
66          *
67          * @param follow    true iff Location-based redirects should be honored
68          * @param maxRedirs maximum number of redirects to permit
69          */
70         virtual bool followRedirects(bool follow, unsigned int maxRedirs);
71         
72         /**
73          * Returns the values of an HTTP response header.
74          * 
75          * @param name  name of header, without the colon separator
76          * @return  reference to array of header values
77          */
78         virtual const std::vector<std::string>& getResponseHeader(const char* name) const=0;
79     };
80
81 };
82
83 #endif /* __xmltooling_httpsoaptrans_h__ */