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