mpd/src/util/UriExtract.hxx

48 lines
1.1 KiB
C++
Raw Normal View History

// SPDX-License-Identifier: BSD-2-Clause
// author: Max Kellermann <max.kellermann@gmail.com>
2019-08-09 15:54:13 +02:00
#pragma once
2019-08-09 15:54:13 +02:00
#include <string_view>
2019-08-09 15:54:13 +02:00
/**
* Checks whether the specified URI has a scheme in the form
* "scheme://".
*/
2021-10-13 11:28:04 +02:00
[[gnu::pure]]
2019-08-09 15:54:13 +02:00
bool
uri_has_scheme(std::string_view uri) noexcept;
2019-08-09 15:54:13 +02:00
/**
* Returns the scheme name of the specified URI, or an empty string.
*/
2021-10-13 11:28:04 +02:00
[[gnu::pure]]
std::string_view
uri_get_scheme(std::string_view uri) noexcept;
2019-08-09 15:54:13 +02:00
2021-10-13 11:28:04 +02:00
[[gnu::pure]]
bool
uri_is_relative_path(const char *uri) noexcept;
2019-08-09 15:54:13 +02:00
/**
* Returns the URI path (including the query string) or nullptr if the
* given URI has no path.
*/
2021-10-13 11:28:04 +02:00
[[gnu::pure]]
std::string_view
uri_get_path(std::string_view uri) noexcept;
2019-08-09 15:54:13 +02:00
2021-10-13 11:28:04 +02:00
[[gnu::pure]]
std::string_view
uri_get_suffix(std::string_view uri) noexcept;
2019-08-09 15:54:13 +02:00
/**
* Returns the URI fragment, i.e. the portion after the '#', but
* without the '#'. If there is no '#', this function returns
* nullptr; if there is a '#' but no fragment text, it returns an
* empty std::string_view.
*/
2021-10-13 11:28:04 +02:00
[[gnu::pure]] [[gnu::nonnull]]
const char *
uri_get_fragment(const char *uri) noexcept;