mpd/src/util/UriUtil.hxx
2023-03-06 14:59:48 +01:00

40 lines
891 B
C++

// SPDX-License-Identifier: BSD-2-Clause
// author: Max Kellermann <max.kellermann@gmail.com>
#ifndef URI_UTIL_HXX
#define URI_UTIL_HXX
#include <string>
/**
* Returns true if this is a safe "local" URI:
*
* - non-empty
* - does not begin or end with a slash
* - no double slashes
* - no path component begins with a dot
*/
[[gnu::pure]]
bool
uri_safe_local(const char *uri) noexcept;
/**
* Removes HTTP username and password from the URI. This may be
* useful for displaying an URI without disclosing secrets. Returns
* an empty string if nothing needs to be removed, or if the URI is
* not recognized.
*/
[[gnu::pure]]
std::string
uri_remove_auth(const char *uri) noexcept;
/**
* Remove dot segments in the URI. For example, uri_squash_dot_segments
* ("foo/bar/.././")=="foo/".
*/
[[gnu::pure]]
std::string
uri_squash_dot_segments(const char *uri) noexcept;
#endif