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