LibreOffice Module svl (master) 1
Functions
URIHelper Namespace Reference

Functions

SVL_DLLPUBLIC OUString SmartRel2Abs (INetURLObject const &rTheBaseURIRef, OUString const &rTheRelURIRef, Link< OUString *, bool > const &rMaybeFileHdl=Link< OUString *, bool >(), bool bCheckFileExists=true, bool bIgnoreFragment=false, INetURLObject::EncodeMechanism eEncodeMechanism=INetURLObject::EncodeMechanism::WasEncoded, INetURLObject::DecodeMechanism eDecodeMechanism=INetURLObject::DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8, FSysStyle eStyle=FSysStyle::Detect)
 @ATT Calling this function with defaulted arguments rMaybeFileHdl = Link() and bCheckFileExists = true often leads to results that are not intended: Whenever the given rTheBaseURIRef is a file URL, the given rTheRelURIRef is relative, and rTheRelURIRef could also be smart-parsed as a non-file URL (e.g., the relative URL "foo/bar" can be smart-parsed as "http://foo/bar"), then SmartRel2Abs called with rMaybeFileHdl = Link() and bCheckFileExists = true returns the non-file URL interpretation. More...
 
SVL_DLLPUBLIC void SetMaybeFileHdl (Link< OUString *, bool > const &rTheMaybeFileHdl)
 
SVL_DLLPUBLIC Link< OUString *, bool > const & GetMaybeFileHdl ()
 
SVL_DLLPUBLIC css::uno::Reference< css::uri::XUriReference > normalizedMakeRelative (css::uno::Reference< css::uno::XComponentContext > const &context, OUString const &baseUriReference, OUString const &uriReference)
 Converts a URI reference to a relative one, ignoring certain differences (for example, treating file URLs for case-ignoring file systems case-insensitively). More...
 
SVL_DLLPUBLIC OUString simpleNormalizedMakeRelative (OUString const &baseUriReference, OUString const &uriReference)
 A variant of normalizedMakeRelative with a simplified interface. More...
 
SVL_DLLPUBLIC OUString FindFirstURLInText (OUString const &rText, sal_Int32 &rBegin, sal_Int32 &rEnd, CharClass const &rCharClass, INetURLObject::EncodeMechanism eMechanism=INetURLObject::EncodeMechanism::WasEncoded, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
 
SVL_DLLPUBLIC OUString FindFirstDOIInText (OUString const &rText, sal_Int32 &rBegin, sal_Int32 &rEnd, CharClass const &rCharClass)
 
SVL_DLLPUBLIC OUString removePassword (OUString const &rURI, INetURLObject::EncodeMechanism eEncodeMechanism, INetURLObject::DecodeMechanism eDecodeMechanism=INetURLObject::DecodeMechanism::ToIUri, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
 Remove any password component from both absolute and relative URLs. More...
 
SVL_DLLPUBLIC OUString resolveIdnaHost (OUString const &url)
 Resolve a URL's host component domain name in IDNA syntax to plain DNS syntax. More...
 

Function Documentation

◆ FindFirstDOIInText()

OUString URIHelper::FindFirstDOIInText ( OUString const &  rText,
sal_Int32 &  rBegin,
sal_Int32 &  rEnd,
CharClass const &  rCharClass 
)

Definition at line 748 of file urihelper.cxx.

References count, i, CharClass::isAlphaNumeric(), CharClass::isDigit(), and start.

◆ FindFirstURLInText()

OUString URIHelper::FindFirstURLInText ( OUString const &  rText,
sal_Int32 &  rBegin,
sal_Int32 &  rEnd,
CharClass const &  rCharClass,
INetURLObject::EncodeMechanism  eMechanism = INetURLObject::EncodeMechanism::WasEncoded,
rtl_TextEncoding  eCharset = RTL_TEXTENCODING_UTF8 
)

◆ GetMaybeFileHdl()

Link< OUString *, bool > const & URIHelper::GetMaybeFileHdl ( )

Definition at line 116 of file urihelper.cxx.

◆ normalizedMakeRelative()

css::uno::Reference< css::uri::XUriReference > URIHelper::normalizedMakeRelative ( css::uno::Reference< css::uno::XComponentContext > const &  context,
OUString const &  baseUriReference,
OUString const &  uriReference 
)

Converts a URI reference to a relative one, ignoring certain differences (for example, treating file URLs for case-ignoring file systems case-insensitively).

Parameters
contexta component context; must not be null
baseUriReferencea base URI reference
uriReferencea URI reference
Returns
a URI reference representing the given uriReference relative to the given baseUriReference; if the given baseUriReference is not an absolute, hierarchical URI reference, or the given uriReference is not a valid URI reference, null is returned
Exceptions
std::bad_allocif an out-of-memory condition occurs
css::uno::RuntimeExceptionif any error occurs

Definition at line 253 of file urihelper.cxx.

References normalize().

Referenced by simpleNormalizedMakeRelative().

◆ removePassword()

OUString URIHelper::removePassword ( OUString const &  rURI,
INetURLObject::EncodeMechanism  eEncodeMechanism,
INetURLObject::DecodeMechanism  eDecodeMechanism = INetURLObject::DecodeMechanism::ToIUri,
rtl_TextEncoding  eCharset = RTL_TEXTENCODING_UTF8 
)

Remove any password component from both absolute and relative URLs.

@ATT The current implementation will not remove a password from a relative URL that has an authority component (e.g., the password is not removed from the relative ftp URL <//user:password@domain/path>). But since our functions to translate between absolute and relative URLs never produce relative URLs with authority components, this is no real problem.

@ATT For relative URLs (or anything not recognized as an absolute URI), the current implementation will return the input unmodified, not applying any translations implied by the encode/decode parameters.

Parameters
rURIAn absolute or relative URI reference.
eEncodeMechanismSee the general discussion for INetURLObject set- methods.
eDecodeMechanismSee the general discussion for INetURLObject get- methods.
eCharsetSee the general discussion for INetURLObject get- and set-methods.
Returns
The input URI with any password component removed.

Definition at line 807 of file urihelper.cxx.

References INetURLObject::GetURLNoPass(), and INetURLObject::HasError().

◆ resolveIdnaHost()

OUString URIHelper::resolveIdnaHost ( OUString const &  url)

Resolve a URL's host component domain name in IDNA syntax to plain DNS syntax.

For details, see RFC 5890 "Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework."

Parameters
url An arbitrary string, should be a URI.
Returns
If the input matches the syntax of a hierarchical URL, and it has a host component that matches the IDNA2008 domain name syntax, and that domain name contains any U-labels, return a version of the input URL with the host component resolved to plain DNS syntax. Otherwise, return the input unchanged.

Definition at line 818 of file urihelper.cxx.

References comphelper::getProcessComponentContext(), i, parse(), and SAL_WARN.

◆ SetMaybeFileHdl()

void URIHelper::SetMaybeFileHdl ( Link< OUString *, bool > const &  rTheMaybeFileHdl)

Definition at line 111 of file urihelper.cxx.

◆ simpleNormalizedMakeRelative()

OUString URIHelper::simpleNormalizedMakeRelative ( OUString const &  baseUriReference,
OUString const &  uriReference 
)

A variant of normalizedMakeRelative with a simplified interface.

Internally calls normalizedMakeRelative with the default component context.

Parameters
baseUriReferencea base URI reference, passed to normalizedMakeRelative
uriReferencea URI reference, passed to normalizedMakeRelative
Returns
if the XUriReference returned by normalizedMakeRelative is empty, uriReference is returned unmodified; otherwise, the result of calling XUriReference::getUriReference on the XUriReference returned by normalizedMakeRelative is returned
Exceptions
std::bad_allocif an out-of-memory condition occurs
css::uno::RuntimeExceptionif any error occurs
Deprecated:
No code should rely on the default component context.

Definition at line 268 of file urihelper.cxx.

References comphelper::getProcessComponentContext(), and normalizedMakeRelative().

◆ SmartRel2Abs()

OUString URIHelper::SmartRel2Abs ( INetURLObject const &  rTheBaseURIRef,
OUString const &  rTheRelURIRef,
Link< OUString *, bool > const &  rMaybeFileHdl = Link<OUString *, bool>(),
bool  bCheckFileExists = true,
bool  bIgnoreFragment = false,
INetURLObject::EncodeMechanism  eEncodeMechanism = INetURLObject::EncodeMechanism::WasEncoded,
INetURLObject::DecodeMechanism  eDecodeMechanism = INetURLObject::DecodeMechanism::ToIUri,
rtl_TextEncoding  eCharset = RTL_TEXTENCODING_UTF8,
FSysStyle  eStyle = FSysStyle::Detect 
)

@ATT Calling this function with defaulted arguments rMaybeFileHdl = Link() and bCheckFileExists = true often leads to results that are not intended: Whenever the given rTheBaseURIRef is a file URL, the given rTheRelURIRef is relative, and rTheRelURIRef could also be smart-parsed as a non-file URL (e.g., the relative URL "foo/bar" can be smart-parsed as "http://foo/bar"), then SmartRel2Abs called with rMaybeFileHdl = Link() and bCheckFileExists = true returns the non-file URL interpretation.

To avoid this, either pass some non-null rMaybeFileHdl if you want to check generated file URLs for existence (see URIHelper::GetMaybeFileHdl), or use bCheckFileExists = false if you want to generate file URLs without checking for their existence.

Definition at line 56 of file urihelper.cxx.

References Link< typename Arg, typename Ret >::Call(), INetURLObject::GetMainURL(), INetURLObject::GetProtocol(), INetURLObject::HasError(), Link< typename Arg, typename Ret >::IsSet(), INetURLObject::SetSmartURL(), and INetURLObject::smartRel2Abs().