xref: /aoo41x/main/ucb/source/ucp/webdav/SerfUri.hxx (revision 08bb353f)
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 
238590a0fdSAndre Fischer #ifndef INCLUDED_SERFURI_HXX
248590a0fdSAndre Fischer #define INCLUDED_SERFURI_HXX
258590a0fdSAndre Fischer 
26*08bb353fSPedro Giffuni #include <apr_uri.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 // -------------------------------------------------------------------
378590a0fdSAndre Fischer // SerfUri
388590a0fdSAndre Fischer // A URI implementation for use with the neon/expat library
398590a0fdSAndre Fischer // -------------------------------------------------------------------
408590a0fdSAndre Fischer class SerfUri
418590a0fdSAndre Fischer {
428590a0fdSAndre Fischer 	private:
438590a0fdSAndre Fischer         apr_uri_t mAprUri;
448590a0fdSAndre Fischer 		::rtl::OUString	mURI;
458590a0fdSAndre Fischer 		::rtl::OUString	mScheme;
468590a0fdSAndre Fischer 		::rtl::OUString	mUserInfo;
478590a0fdSAndre Fischer 		::rtl::OUString	mHostName;
488590a0fdSAndre Fischer 		sal_Int32		mPort;
498590a0fdSAndre Fischer 		::rtl::OUString	mPath;
508590a0fdSAndre Fischer 
518590a0fdSAndre Fischer         void init( const apr_uri_t * pUri );
528590a0fdSAndre Fischer 		void calculateURI ();
538590a0fdSAndre Fischer 
548590a0fdSAndre Fischer 	public:
558590a0fdSAndre Fischer         SerfUri( const ::rtl::OUString & inUri ) throw ( DAVException );
568590a0fdSAndre Fischer         SerfUri( const apr_uri_t * inUri ) throw ( DAVException );
578590a0fdSAndre Fischer 		~SerfUri( );
588590a0fdSAndre Fischer 
598590a0fdSAndre Fischer         bool operator== ( const SerfUri & rOther ) const;
operator !=(const SerfUri & rOther) const608590a0fdSAndre Fischer         bool operator!= ( const SerfUri & rOther ) const
618590a0fdSAndre Fischer         { return !operator==( rOther ); }
628590a0fdSAndre Fischer 
getAprUri()638590a0fdSAndre Fischer         apr_uri_t* getAprUri()
648590a0fdSAndre Fischer         {
658590a0fdSAndre Fischer             return &mAprUri;
668590a0fdSAndre Fischer         }
GetURI(void) const678590a0fdSAndre Fischer 		const ::rtl::OUString & GetURI( void ) const
688590a0fdSAndre Fischer 											{ return mURI; };
GetScheme(void) const698590a0fdSAndre Fischer 		const ::rtl::OUString & GetScheme( void ) const
708590a0fdSAndre Fischer 											{ return mScheme; };
GetUserInfo(void) const718590a0fdSAndre Fischer 		const ::rtl::OUString & GetUserInfo( void ) const
728590a0fdSAndre Fischer 											{ return mUserInfo; };
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 
1028590a0fdSAndre Fischer #endif // INCLUDED_SERFURI_HXX
103