summaryrefslogtreecommitdiff
path: root/ucb/source/ucp/webdav-neon/NeonUri.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'ucb/source/ucp/webdav-neon/NeonUri.cxx')
-rw-r--r--ucb/source/ucp/webdav-neon/NeonUri.cxx291
1 files changed, 0 insertions, 291 deletions
diff --git a/ucb/source/ucp/webdav-neon/NeonUri.cxx b/ucb/source/ucp/webdav-neon/NeonUri.cxx
deleted file mode 100644
index df641fce518d..000000000000
--- a/ucb/source/ucp/webdav-neon/NeonUri.cxx
+++ /dev/null
@@ -1,291 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include <sal/config.h>
-
-#include <rtl/uri.hxx>
-#include <rtl/ustring.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <ne_alloc.h>
-#include "NeonUri.hxx"
-#include "DAVException.hxx"
-
-#include "../inc/urihelper.hxx"
-
-using namespace webdav_ucp;
-
-// FIXME: not sure whether initializing a ne_uri statically is supposed to work
-// the string fields of ne_uri are char*, not const char*
-
-#ifdef __GNUC__
-#pragma GCC diagnostic ignored "-Wwrite-strings"
-#endif
-
-namespace {
-
-const ne_uri g_sUriDefaultsHTTP = { const_cast<char *>("http"),
- const_cast<char *>(""),
- const_cast<char *>(""),
- DEFAULT_HTTP_PORT,
- const_cast<char *>(""),
- nullptr,
- nullptr };
-const ne_uri g_sUriDefaultsHTTPS = { const_cast<char *>("https"),
- const_cast<char *>(""),
- const_cast<char *>(""),
- DEFAULT_HTTPS_PORT,
- const_cast<char *>(""),
- nullptr,
- nullptr };
-const ne_uri g_sUriDefaultsFTP = { const_cast<char *>("ftp"),
- const_cast<char *>(""),
- const_cast<char *>(""),
- DEFAULT_FTP_PORT,
- const_cast<char *>(""),
- nullptr,
- nullptr };
-} // namespace
-
-NeonUri::NeonUri( const ne_uri * inUri )
-{
- if ( inUri == nullptr )
- throw DAVException( DAVException::DAV_INVALID_ARG );
-
- char * uri = ne_uri_unparse( inUri );
-
- if ( uri == nullptr )
- throw DAVException( DAVException::DAV_INVALID_ARG );
-
- init( OString( uri ), inUri );
- ne_free( uri );
-
- calculateURI();
-}
-
-NeonUri::NeonUri( const OUString & inUri )
-{
- if ( inUri.isEmpty() )
- throw DAVException( DAVException::DAV_INVALID_ARG );
-
- // #i77023#
- OUString aEscapedUri( ucb_impl::urihelper::encodeURI( inUri ) );
-
- OString theInputUri(
- aEscapedUri.getStr(), aEscapedUri.getLength(), RTL_TEXTENCODING_UTF8 );
-
- ne_uri theUri;
- if ( ne_uri_parse( theInputUri.getStr(), &theUri ) != 0 )
- {
- ne_uri_free( &theUri );
- throw DAVException( DAVException::DAV_INVALID_ARG );
- }
-
- init( theInputUri, &theUri );
- ne_uri_free( &theUri );
-
- calculateURI();
-}
-
-void NeonUri::init( const OString & rUri, const ne_uri * pUri )
-{
- // Complete URI.
- const ne_uri * pUriDefs
- = rUri.matchIgnoreAsciiCase( "ftp:" ) ?
- &g_sUriDefaultsFTP :
- rUri.matchIgnoreAsciiCase( "https:" ) ?
- &g_sUriDefaultsHTTPS :
- &g_sUriDefaultsHTTP;
-
- mScheme = OStringToOUString(
- pUri->scheme ? pUri->scheme : pUriDefs->scheme,
- RTL_TEXTENCODING_UTF8 );
- mUserInfo = OStringToOUString(
- pUri->userinfo ? pUri->userinfo : pUriDefs->userinfo,
- RTL_TEXTENCODING_UTF8 );
- mHostName = OStringToOUString(
- pUri->host ? pUri->host : pUriDefs->host,
- RTL_TEXTENCODING_UTF8 );
- mPort = pUri->port > 0 ? pUri->port : pUriDefs->port;
- mPath = OStringToOUString(
- pUri->path ? pUri->path : pUriDefs->path,
- RTL_TEXTENCODING_UTF8 );
-
- if ( pUri->query )
- {
- mPath += "?" + OStringToOUString( pUri->query, RTL_TEXTENCODING_UTF8 );
- }
-
- if ( pUri->fragment )
- {
- mPath += "#" + OStringToOUString( pUri->fragment, RTL_TEXTENCODING_UTF8 );
- }
-}
-
-void NeonUri::calculateURI ()
-{
- OUStringBuffer aBuf( 256 );
- aBuf.append( mScheme );
- aBuf.append( "://" );
- if ( !mUserInfo.isEmpty() )
- {
- //TODO! differentiate between empty and missing userinfo
- aBuf.append( mUserInfo );
- aBuf.append( "@" );
- }
- // Is host a numeric IPv6 address?
- if ( ( mHostName.indexOf( ':' ) != -1 ) &&
- ( mHostName[ 0 ] != '[' ) )
- {
- aBuf.append( "[" );
- aBuf.append( mHostName );
- aBuf.append( "]" );
- }
- else
- {
- aBuf.append( mHostName );
- }
-
- // append port, but only, if not default port.
- bool bAppendPort = true;
- switch ( mPort )
- {
- case DEFAULT_HTTP_PORT:
- bAppendPort = mScheme != "http";
- break;
-
- case DEFAULT_HTTPS_PORT:
- bAppendPort = mScheme != "https";
- break;
-
- case DEFAULT_FTP_PORT:
- bAppendPort = mScheme != "ftp";
- break;
- }
- if ( bAppendPort )
- {
- aBuf.append( ":" );
- aBuf.append( mPort );
- }
- aBuf.append( mPath );
-
- mURI = aBuf.makeStringAndClear();
-}
-
-OUString NeonUri::GetPathBaseName () const
-{
- sal_Int32 nPos = mPath.lastIndexOf ('/');
- sal_Int32 nTrail = 0;
- if (nPos == mPath.getLength () - 1)
- {
- // Trailing slash found. Skip.
- nTrail = 1;
- nPos = mPath.lastIndexOf ('/', nPos);
- }
- if (nPos != -1)
- {
- OUString aTemp(
- mPath.copy (nPos + 1, mPath.getLength () - nPos - 1 - nTrail) );
-
- // query, fragment present?
- nPos = aTemp.indexOf( '?' );
- if ( nPos == -1 )
- nPos = aTemp.indexOf( '#' );
-
- if ( nPos != -1 )
- aTemp = aTemp.copy( 0, nPos );
-
- return aTemp;
- }
- else
- return "/";
-}
-
-bool NeonUri::operator== ( const NeonUri & rOther ) const
-{
- return ( mURI == rOther.mURI );
-}
-
-OUString NeonUri::GetPathBaseNameUnescaped () const
-{
- return unescape( GetPathBaseName() );
-}
-
-void NeonUri::AppendPath (std::u16string_view rPath)
-{
- if (mPath.lastIndexOf ('/') != mPath.getLength () - 1)
- mPath += "/";
-
- mPath += rPath;
- calculateURI ();
-};
-
-// static
-OUString NeonUri::escapeSegment( const OUString& segment )
-{
- return rtl::Uri::encode( segment,
- rtl_UriCharClassPchar,
- rtl_UriEncodeIgnoreEscapes,
- RTL_TEXTENCODING_UTF8 );
-}
-
-// static
-OUString NeonUri::unescape( const OUString& segment )
-{
- return rtl::Uri::decode( segment,
- rtl_UriDecodeWithCharset,
- RTL_TEXTENCODING_UTF8 );
-}
-
-// static
-OUString NeonUri::makeConnectionEndPointString(
- const OUString & rHostName, int nPort )
-{
- OUStringBuffer aBuf;
-
- // Is host a numeric IPv6 address?
- if ( ( rHostName.indexOf( ':' ) != -1 ) &&
- ( rHostName[ 0 ] != '[' ) )
- {
- aBuf.append( "[" );
- aBuf.append( rHostName );
- aBuf.append( "]" );
- }
- else
- {
- aBuf.append( rHostName );
- }
-
- if ( ( nPort != DEFAULT_HTTP_PORT ) && ( nPort != DEFAULT_HTTPS_PORT ) )
- {
- aBuf.append( ":" );
- aBuf.append( static_cast<sal_Int32>(nPort) );
- }
- return aBuf.makeStringAndClear();
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */