xref: /aoo42x/main/ucb/source/ucp/webdav/CurlUri.hxx (revision 9646dec5)
18590a0fdSAndre Fischer /**************************************************************
28590a0fdSAndre Fischer  *
38590a0fdSAndre Fischer  * Licensed to the Apache Software Foundation (ASF) under one
48590a0fdSAndre Fischer  * or more contributor license agreements.  See the NOTICE file
58590a0fdSAndre Fischer  * distributed with this work for additional information
68590a0fdSAndre Fischer  * regarding copyright ownership.  The ASF licenses this file
78590a0fdSAndre Fischer  * to you under the Apache License, Version 2.0 (the
88590a0fdSAndre Fischer  * "License"); you may not use this file except in compliance
98590a0fdSAndre Fischer  * with the License.  You may obtain a copy of the License at
108590a0fdSAndre Fischer  *
118590a0fdSAndre Fischer  *   http://www.apache.org/licenses/LICENSE-2.0
128590a0fdSAndre Fischer  *
138590a0fdSAndre Fischer  * Unless required by applicable law or agreed to in writing,
148590a0fdSAndre Fischer  * software distributed under the License is distributed on an
158590a0fdSAndre Fischer  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
168590a0fdSAndre Fischer  * KIND, either express or implied.  See the License for the
178590a0fdSAndre Fischer  * specific language governing permissions and limitations
188590a0fdSAndre Fischer  * under the License.
198590a0fdSAndre Fischer  *
208590a0fdSAndre Fischer  *************************************************************/
218590a0fdSAndre Fischer 
228590a0fdSAndre Fischer 
23*9646dec5SDamjan Jovanovic #ifndef INCLUDED_CURLURI_HXX
24*9646dec5SDamjan Jovanovic #define INCLUDED_CURLURI_HXX
258590a0fdSAndre Fischer 
26*9646dec5SDamjan Jovanovic #include <curl/curl.h>
278590a0fdSAndre Fischer #include <rtl/ustring.hxx>
28c1c10f68SAriel Constenla-Haile #include "DAVException.hxx"
298590a0fdSAndre Fischer 
308590a0fdSAndre Fischer namespace http_dav_ucp
318590a0fdSAndre Fischer {
328590a0fdSAndre Fischer 
338590a0fdSAndre Fischer #define DEFAULT_HTTP_PORT       80
348590a0fdSAndre Fischer #define DEFAULT_HTTPS_PORT      443
358590a0fdSAndre Fischer 
368590a0fdSAndre Fischer // -------------------------------------------------------------------
37*9646dec5SDamjan Jovanovic // CurlUri
38*9646dec5SDamjan Jovanovic // A URI implementation for use with the Curl library
398590a0fdSAndre Fischer // -------------------------------------------------------------------
40*9646dec5SDamjan Jovanovic class CurlUri
418590a0fdSAndre Fischer {
428590a0fdSAndre Fischer 	private:
43*9646dec5SDamjan Jovanovic         CURLU *mCurlUri;
448590a0fdSAndre Fischer 		::rtl::OUString	mURI;
458590a0fdSAndre Fischer 		::rtl::OUString	mScheme;
46*9646dec5SDamjan Jovanovic 		::rtl::OUString	mUserName;
47*9646dec5SDamjan Jovanovic 		::rtl::OUString	mPassword;
488590a0fdSAndre Fischer 		::rtl::OUString	mHostName;
498590a0fdSAndre Fischer 		sal_Int32		mPort;
508590a0fdSAndre Fischer 		::rtl::OUString	mPath;
518590a0fdSAndre Fischer 
52*9646dec5SDamjan Jovanovic         void init( const CURLU * pUri );
538590a0fdSAndre Fischer 		void calculateURI ();
548590a0fdSAndre Fischer 
558590a0fdSAndre Fischer 	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( );
608590a0fdSAndre Fischer 
61*9646dec5SDamjan Jovanovic         bool operator== ( const CurlUri & rOther ) const;
operator !=(const CurlUri & rOther) const62*9646dec5SDamjan Jovanovic         bool operator!= ( const CurlUri & rOther ) const
638590a0fdSAndre Fischer         { return !operator==( rOther ); }
648590a0fdSAndre Fischer 
GetURI(void) const658590a0fdSAndre Fischer 		const ::rtl::OUString & GetURI( void ) const
668590a0fdSAndre Fischer 											{ return mURI; };
GetScheme(void) const678590a0fdSAndre Fischer 		const ::rtl::OUString & GetScheme( void ) const
688590a0fdSAndre Fischer 											{ 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) const738590a0fdSAndre Fischer 		const ::rtl::OUString & GetHost( void ) const
748590a0fdSAndre Fischer 											{ return mHostName; };
GetPort(void) const758590a0fdSAndre Fischer 		sal_Int32		GetPort( void )		const
768590a0fdSAndre Fischer 											{ return mPort; };
GetPath(void) const778590a0fdSAndre Fischer 		const ::rtl::OUString &		GetPath( void )	const
788590a0fdSAndre Fischer 											{ return mPath; };
798590a0fdSAndre Fischer 
808590a0fdSAndre Fischer 		::rtl::OUString GetPathBaseName ( void ) const;
818590a0fdSAndre Fischer 
828590a0fdSAndre Fischer 		::rtl::OUString GetPathBaseNameUnescaped ( void ) const;
838590a0fdSAndre Fischer 
SetScheme(const::rtl::OUString & scheme)848590a0fdSAndre Fischer 		void SetScheme (const ::rtl::OUString& scheme)
858590a0fdSAndre Fischer 			{ mScheme = scheme; calculateURI (); };
868590a0fdSAndre Fischer 
878590a0fdSAndre Fischer 		void AppendPath (const ::rtl::OUString& rPath);
888590a0fdSAndre Fischer 
898590a0fdSAndre Fischer 		static ::rtl::OUString escapeSegment( const ::rtl::OUString& segment );
908590a0fdSAndre Fischer 		static ::rtl::OUString unescape( const ::rtl::OUString& string );
918590a0fdSAndre Fischer 
928590a0fdSAndre Fischer         // "host:port", omit ":port" for port 80 and 443
938590a0fdSAndre Fischer         static rtl::OUString makeConnectionEndPointString(
948590a0fdSAndre Fischer                                         const rtl::OUString & rHostName,
958590a0fdSAndre Fischer                                         int nPort );
makeConnectionEndPointString() const968590a0fdSAndre Fischer         rtl::OUString makeConnectionEndPointString() const
978590a0fdSAndre Fischer         { return makeConnectionEndPointString( GetHost(), GetPort() ); }
988590a0fdSAndre Fischer };
998590a0fdSAndre Fischer 
1008590a0fdSAndre Fischer } // namespace http_dav_ucp
1018590a0fdSAndre Fischer 
102*9646dec5SDamjan Jovanovic #endif // INCLUDED_CURLURI_HXX
103