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