summaryrefslogtreecommitdiff
path: root/AK/URL.h
AgeCommit message (Collapse)Author
2021-11-17AK: Convert AK::Format formatting helpers to returning ErrorOr<void>Andreas Kling
This isn't a complete conversion to ErrorOr<void>, but a good chunk. The end goal here is to propagate buffer allocation failures to the caller, and allow the use of TRY() with formatting functions.
2021-11-11Everywhere: Pass AK::StringView by valueAndreas Kling
2021-11-10AK+Everywhere: Stop including Vector.h from StringView.hAndreas Kling
Preparation for using Error.h from Vector.h. This required moving some things out of line.
2021-09-14AK: Move the path argument of URL::append_path instead of copying itIdan Horowitz
2021-09-14AK: Make URL::m_port an Optional<u16>, Expose raw port getterIdan Horowitz
Our current way of signalling a missing port with m_port == 0 was lacking, as 0 is a valid port number in URLs.
2021-09-14AK: Add URL::cannot_have_a_username_or_password_or_portIdan Horowitz
As defined by the URL specification: https://url.spec.whatwg.org/#cannot-have-a-username-password-port
2021-09-14AK: Change URL::cannot_be_a_base_url, URL::is_valid return type to boolIdan Horowitz
There's no need to return a const reference (8 bytes) when the value is always used as a temporary bool (1 byte).
2021-09-14AK: Add URL::serialize_origin based on HTML's origin definitionIdan Horowitz
2021-06-01AK: Move identity check from URL::operator==() to equals()Max Wipfli
2021-06-01AK+LibWeb: Remove URL::to_string_encoded()Max Wipfli
This replaces URL::to_string_encoded() with to_string() and removes the former, since they are now equivalent.
2021-06-01AK: Use correct constness in URL class methodsMax Wipfli
This changes the URL class to use the correct constness for getters, setters and other methods. It also changes the entire class to use east const style.
2021-06-01AK: Add hostname parameter to URL::create_with_file_scheme()Max Wipfli
This adds a hostname parameter as the third parameter to URL::create_with_file_scheme(). If the hostname is "localhost", it will be ignored (as per the URL specification). This can for example be used by ls(1) to create more conforming file URLs.
2021-06-01AK: Remove deprecated m_path member variable from URLMax Wipfli
The m_path member variable has been superseded by m_paths. Thus, it has been removed. The path() getter will continue to exist as a convenience method for getting the path joined together as a string.
2021-06-01AK: Replace URL::to_string() with new serialize() implementationMax Wipfli
2021-06-01AK: Replace old URL parser with new URLParser::parse()Max Wipfli
This replaces the old URL::parse() and URL::complete_url() parsing mechanisms with the new spec-compliant URLParser::parse().
2021-06-01AK: Add spec-compliant URL serialization methodsMax Wipfli
This adds URL serialization methods which are more in line with the specification. The serialize_for_display() method should be used e.g. in the browser address bar, and as per the spec should not display username and password. Furthermore, it could decode most percent-encoded code points, although that is not implemented yet.
2021-06-01AK: Add a new, spec-compliant URLParserMax Wipfli
This adds a new URL parser, which aims to be compliant with the URL specification (https://url.spec.whatwg.org/). It also contains a rudimentary data URL parser.
2021-06-01AK: Add helper functions and private data URL constructor to URLMax Wipfli
This adds a few helper functions and a private constructor to instantiate a data URL to the URL class. These will be needed by the upcoming URL parser.
2021-06-01AK: Add member variables to the URL classMax Wipfli
This adds the m_username, m_password, m_paths and m_cannot_be_a_base_url member variables to the URL class. These are necessary for the upcoming new URL parser. The deprecated m_path variable shadows the m_paths variable if it is non-null. This behavior will be removed once the old URL parser has been removed.
2021-06-01AK+Everywhere: Replace usages of URLParser::urlencode() and urldecode()Max Wipfli
This replaces all occurrences of those functions with the newly implemented functions URL::percent_encode() and URL::percent_decode(). The old functions will be removed in a further commit.
2021-06-01AK: Implement more conforming URL percent encode/decode mechanismMax Wipfli
This adds a few new functions to percent encode/decode strings according to the URL specification. The functions allow specifying a PercentEncodeSet, which is defined by the specification. It will be used to replace the current urlencode() and urldecode() functions in a further commit. This commit adds a few duplicate helper functions in the URL class, such as is_digit() and is_ascii_digit(). This will be cleaned up as soon as the upcoming new URL parser will replace the current one.
2021-06-01AK: Internally rename protocol to scheme in URLMax Wipfli
This renames all references to protocol to scheme, which is the name used by the URL standard (https://url.spec.whatwg.org/). Externally, all methods referencing "protocol" were duplicated with "scheme". The old methods still exist as compatibility.
2021-06-01AK: Omit unnecessary function parameter names in URLMax Wipfli
This patch removes unnecessary function parameter names in declarations of the URL class. It also changes parameter types from String to StringView where applicable.
2021-04-22Everything: Move to SPDX license identifiers in all files.Brian Gianforcaro
SPDX License Identifiers are a more compact / standardized way of representing file license information. See: https://spdx.dev/resources/use/#identifiers This was done with the `ambr` search and replace tool. ambr --no-parent-ignore --key-from-file --rep-from-file key.txt rep.txt *
2021-03-12Everywhere: Remove klog(), dbg() and purge all LogStream usage :^)Andreas Kling
Good-bye LogStream. Long live AK::Format!
2021-03-07AK: Add optional fragment parameter to create_with_file_protocol()speles
Now that we use fragment for specifying starting selection in FileManager we would benefit from providing it as argument instead of setting it each time separately.
2021-01-31AK: Add URL::to_string_encoded()Linus Groh
The result of to_string() passed to urlencode(), with some characters excluded - basically like JavaScript's encodeURI().
2021-01-12AK: Simplify constructors and conversions from nullptr_tLenny Maiorani
Problem: - Many constructors are defined as `{}` rather than using the ` = default` compiler-provided constructor. - Some types provide an implicit conversion operator from `nullptr_t` instead of requiring the caller to default construct. This violates the C++ Core Guidelines suggestion to declare single-argument constructors explicit (https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c46-by-default-declare-single-argument-constructors-explicit). Solution: - Change default constructors to use the compiler-provided default constructor. - Remove implicit conversion operators from `nullptr_t` and change usage to enforce type consistency without conversion.
2020-12-30AK+Format: Remove TypeErasedFormatParams& from format function.asynts
2020-11-04AK::URL: Check if URL requires a port set to be considered a valid URLBrendan Coles
`AK::URL` will now check if the URL requires a port to be set using `AK::URL.protocol_requires_port(protocol)`. If the URL does not specify a port, and no default port for the URL protocol is found with `AK::URL.default_port_for_protocol(protocol)`, the URL is considered to be invalid.
2020-10-04AK: Add formatter for URL.asynts
2020-08-24AK: Add URL::create_with_data() to create data URLsAnotherTest
2020-06-01AK: Add operator== and hash traits for URLAndreas Kling
2020-05-16AK: Fix URL's operator<<() and use itLinus Groh
2020-05-05AK: Add URL::basename()Andreas Kling
2020-04-26AK: Teach URL how to parse data: URLs :^)Andreas Kling
2020-04-19AK: Add URL::create_with_url_or_path()Sergey Bugaev
This is an utility to create a URL from a given string, which may be either a URL such as http://example.com (which will be used as-is), or a file path such as /etc/fstab (which will be transformed into file:///etc/fstab).
2020-04-18AK: Add URL::create_with_file_protocol(path)Andreas Kling
This is a convenience helper that allows you to easily construct a file:// URL from an absolute path.
2020-04-12AK: Support fragment in URLLinus Groh
2020-04-11AK: Recompute URL validity after changing protocol/host/pathAndreas Kling
This allows you to build URLs by calling setters on an empty URL and actually get a valid URL at the end.
2020-01-18Meta: Add license header to source filesAndreas Kling
As suggested by Joshua, this commit adds the 2-clause BSD license as a comment block to the top of every source file. For the first pass, I've just added myself for simplicity. I encourage everyone to add themselves as copyright holders of any file they've added or modified in some significant way. If I've added myself in error somewhere, feel free to replace it with the appropriate copyright holder instead. Going forward, all new source files should include a license header.
2019-11-25AK: Add a query string component to URLAndreas Kling
It's missing query string parsing from new URLs, but you can set the query string programmatically, and it will be part of the URL when serialized through to_string().
2019-11-19LibHTML+AK: Move URL completion from Document to AK::URLAndreas Kling
Completing a relative URL based on a base URL seems like generally useful functionality.
2019-10-05AK: URL should support file:// URL'sAndreas Kling
Also add some setters since this class was very setter-less.
2019-09-06AK: Rename <AK/AKString.h> to <AK/String.h>Andreas Kling
This was a workaround to be able to build on case-insensitive file systems where it might get confused about <string.h> vs <String.h>. Let's just not support building that way, so String.h can have an objectively nicer name. :^)
2019-08-10URL: Add some convenience constructorsAndreas Kling
2019-08-10AK: Add a basic URL class to help us handle URL'sAndreas Kling
We're gonna need these as we start to write more networking programs.