xref: /trunk/main/ucb/source/ucp/webdav/CurlUri.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
1*51ba086bSDamjan Jovanovic /**************************************************************
2*51ba086bSDamjan Jovanovic  *
3*51ba086bSDamjan Jovanovic  * Licensed to the Apache Software Foundation (ASF) under one
4*51ba086bSDamjan Jovanovic  * or more contributor license agreements.  See the NOTICE file
5*51ba086bSDamjan Jovanovic  * distributed with this work for additional information
6*51ba086bSDamjan Jovanovic  * regarding copyright ownership.  The ASF licenses this file
7*51ba086bSDamjan Jovanovic  * to you under the Apache License, Version 2.0 (the
8*51ba086bSDamjan Jovanovic  * "License"); you may not use this file except in compliance
9*51ba086bSDamjan Jovanovic  * with the License.  You may obtain a copy of the License at
10*51ba086bSDamjan Jovanovic  *
11*51ba086bSDamjan Jovanovic  *   http://www.apache.org/licenses/LICENSE-2.0
12*51ba086bSDamjan Jovanovic  *
13*51ba086bSDamjan Jovanovic  * Unless required by applicable law or agreed to in writing,
14*51ba086bSDamjan Jovanovic  * software distributed under the License is distributed on an
15*51ba086bSDamjan Jovanovic  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*51ba086bSDamjan Jovanovic  * KIND, either express or implied.  See the License for the
17*51ba086bSDamjan Jovanovic  * specific language governing permissions and limitations
18*51ba086bSDamjan Jovanovic  * under the License.
19*51ba086bSDamjan Jovanovic  *
20*51ba086bSDamjan Jovanovic  *************************************************************/
21*51ba086bSDamjan Jovanovic 
22*51ba086bSDamjan Jovanovic 
23*51ba086bSDamjan Jovanovic #ifndef INCLUDED_CURLURI_HXX
24*51ba086bSDamjan Jovanovic #define INCLUDED_CURLURI_HXX
25*51ba086bSDamjan Jovanovic 
26*51ba086bSDamjan Jovanovic #include <curl/curl.h>
27*51ba086bSDamjan Jovanovic #include <rtl/ustring.hxx>
28*51ba086bSDamjan Jovanovic #include "DAVException.hxx"
29*51ba086bSDamjan Jovanovic 
30*51ba086bSDamjan Jovanovic namespace http_dav_ucp
31*51ba086bSDamjan Jovanovic {
32*51ba086bSDamjan Jovanovic 
33*51ba086bSDamjan Jovanovic #define DEFAULT_HTTP_PORT       80
34*51ba086bSDamjan Jovanovic #define DEFAULT_HTTPS_PORT      443
35*51ba086bSDamjan Jovanovic 
36*51ba086bSDamjan Jovanovic // -------------------------------------------------------------------
37*51ba086bSDamjan Jovanovic // CurlUri
38*51ba086bSDamjan Jovanovic // A URI implementation for use with the Curl library
39*51ba086bSDamjan Jovanovic // -------------------------------------------------------------------
40*51ba086bSDamjan Jovanovic class CurlUri
41*51ba086bSDamjan Jovanovic {
42*51ba086bSDamjan Jovanovic     private:
43*51ba086bSDamjan Jovanovic         CURLU *mCurlUri;
44*51ba086bSDamjan Jovanovic         ::rtl::OUString mURI;
45*51ba086bSDamjan Jovanovic         ::rtl::OUString mScheme;
46*51ba086bSDamjan Jovanovic         ::rtl::OUString mUserName;
47*51ba086bSDamjan Jovanovic         ::rtl::OUString mPassword;
48*51ba086bSDamjan Jovanovic         ::rtl::OUString mHostName;
49*51ba086bSDamjan Jovanovic         sal_Int32       mPort;
50*51ba086bSDamjan Jovanovic         ::rtl::OUString mPath;
51*51ba086bSDamjan Jovanovic 
52*51ba086bSDamjan Jovanovic         void init( const CURLU * pUri );
53*51ba086bSDamjan Jovanovic         void calculateURI ();
54*51ba086bSDamjan Jovanovic 
55*51ba086bSDamjan Jovanovic     public:
56*51ba086bSDamjan Jovanovic         CurlUri( const ::rtl::OUString & inUri ) throw ( DAVException );
57*51ba086bSDamjan Jovanovic         CurlUri( const CURLU * inUri ) throw ( DAVException );
58*51ba086bSDamjan Jovanovic         CurlUri( const CurlUri &curlUri ) throw ( DAVException );
59*51ba086bSDamjan Jovanovic         ~CurlUri( );
60*51ba086bSDamjan Jovanovic 
61*51ba086bSDamjan Jovanovic         bool operator== ( const CurlUri & rOther ) const;
operator !=(const CurlUri & rOther) const62*51ba086bSDamjan Jovanovic         bool operator!= ( const CurlUri & rOther ) const
63*51ba086bSDamjan Jovanovic         { return !operator==( rOther ); }
64*51ba086bSDamjan Jovanovic 
GetURI(void) const65*51ba086bSDamjan Jovanovic         const ::rtl::OUString & GetURI( void ) const
66*51ba086bSDamjan Jovanovic                                             { return mURI; };
GetScheme(void) const67*51ba086bSDamjan Jovanovic         const ::rtl::OUString & GetScheme( void ) const
68*51ba086bSDamjan Jovanovic                                             { return mScheme; };
GetUserName(void) const69*51ba086bSDamjan Jovanovic         const ::rtl::OUString & GetUserName( void ) const
70*51ba086bSDamjan Jovanovic                                             { return mUserName; };
GetPassword(void) const71*51ba086bSDamjan Jovanovic         const ::rtl::OUString & GetPassword( void ) const
72*51ba086bSDamjan Jovanovic                                             { return mPassword; };
GetHost(void) const73*51ba086bSDamjan Jovanovic         const ::rtl::OUString & GetHost( void ) const
74*51ba086bSDamjan Jovanovic                                             { return mHostName; };
GetPort(void) const75*51ba086bSDamjan Jovanovic         sal_Int32       GetPort( void )     const
76*51ba086bSDamjan Jovanovic                                             { return mPort; };
GetPath(void) const77*51ba086bSDamjan Jovanovic         const ::rtl::OUString &     GetPath( void ) const
78*51ba086bSDamjan Jovanovic                                             { return mPath; };
79*51ba086bSDamjan Jovanovic 
80*51ba086bSDamjan Jovanovic         ::rtl::OUString GetPathBaseName ( void ) const;
81*51ba086bSDamjan Jovanovic 
82*51ba086bSDamjan Jovanovic         ::rtl::OUString GetPathBaseNameUnescaped ( void ) const;
83*51ba086bSDamjan Jovanovic 
SetScheme(const::rtl::OUString & scheme)84*51ba086bSDamjan Jovanovic         void SetScheme (const ::rtl::OUString& scheme)
85*51ba086bSDamjan Jovanovic             { mScheme = scheme; calculateURI (); };
86*51ba086bSDamjan Jovanovic 
87*51ba086bSDamjan Jovanovic         void AppendPath (const ::rtl::OUString& rPath);
88*51ba086bSDamjan Jovanovic 
89*51ba086bSDamjan Jovanovic         static ::rtl::OUString escapeSegment( const ::rtl::OUString& segment );
90*51ba086bSDamjan Jovanovic         static ::rtl::OUString unescape( const ::rtl::OUString& string );
91*51ba086bSDamjan Jovanovic 
92*51ba086bSDamjan Jovanovic         // "host:port", omit ":port" for port 80 and 443
93*51ba086bSDamjan Jovanovic         static rtl::OUString makeConnectionEndPointString(
94*51ba086bSDamjan Jovanovic                                         const rtl::OUString & rHostName,
95*51ba086bSDamjan Jovanovic                                         int nPort );
makeConnectionEndPointString() const96*51ba086bSDamjan Jovanovic         rtl::OUString makeConnectionEndPointString() const
97*51ba086bSDamjan Jovanovic         { return makeConnectionEndPointString( GetHost(), GetPort() ); }
98*51ba086bSDamjan Jovanovic };
99*51ba086bSDamjan Jovanovic 
100*51ba086bSDamjan Jovanovic } // namespace http_dav_ucp
101*51ba086bSDamjan Jovanovic 
102*51ba086bSDamjan Jovanovic #endif // INCLUDED_CURLURI_HXX
103