This library provides:
- A
skyr::urlclass that implements a generic URL parser, conforming with the WhatWG URL specification - URL serialization and comparison
- Percent encoding and decoding functions
- IDNA and Punycode functions for domain name parsing
This project requires the availability of a C++17 compliant compiler and standard library.
From a terminal, execute the following sequence of commands:
> mkdir _build
> cd _build
> cmake .. -G "Ninja"
> ninjaTo run the tests, run ninja test from the terminal while in the
_build directory:
> ninja testOpen Visual Studio 2017, and click on File->Open->Folder, or
use the shortcut Ctrl+Shift+Alt+O. Open the root folder of this
project. This will load the project in the explorer. To build,
simply open the CMake menu and click Build All.
To run the tests, open the CMake menu, click Tests and then run
Run Skyr CTests.
These examples are based on the WhatWG API specification
To build the examples, run cmake as follows:
> cmake .. -G "Ninja" -DSkyr_BUILD_EXAMPLES=ONThis example parses a string, "https://example.org/π©", without using a base URL:
#include <skyr/url.hpp>
#include <iostream>
int main(int argc, char *argv[]) {
auto url = skyr::make_url("http://example.org/\xf0\x9f\x92\xa9");
std::cout << url.value().pathname() << std::endl;
}Gives the output: /%F0%9F%92%A9
This gives an error if the input, "/π£πΊ", is not an absolute-URL-with-fragment-string:
#include <skyr/url.hpp>
#include <iostream>
int main(int argc, char *argv[]) {
auto url = skyr::make_url("\xf0\x9f\x8d\xa3\xf0\x9f\x8d\xba");
if (!url) {
std::cerr << "Parsing failed: " << url.error().message() << std::endl;
}
}This gives the output: Parsing failed: Not an absolute URL with fragment
This example parses a string, "π³οΈβπ", using a base URL, "https://example.org/":
#include <skyr/url.hpp>
#include <iostream>
int main(int argc, char *argv[]) {
auto base = skyr::make_url("https://example.org/");
auto url = skyr::make_url(
"\xf0\x9f\x8f\xb3\xef\xb8\x8f\xe2\x80\x8d\xf0\x9f\x8c\x88", base.value());
if (url) {
std::cout << url.value().href() << std::endl;
}
}This gives the output: https://example.org/%F0%9F%8F%B3%EF%B8%8F%E2%80%8D%F0%9F%8C%88
> cmake .. -G "Ninja" -DCMAKE_INSTALL_PREFIX=$PREFIX
> ninja
> ninja test # optional
> ninja installWhere $PREFIX is the location where you want to install the
library. Depending on the location of $PREFIX, you may need to run
the install command as an administrator (e.g. on Linux as sudo).
Open the CMake menu, click Install, then Skyr.
This library uses optional, expected and utfcpp.
The tests are built using Google Test.
This library has been tested using the following platforms and compilers:
Linux:
- GCC 7
- GCC 8
- Clang 6
MacOS:
- Clang 6
Windows:
- Microsoft Visual C++ 2017
This library is released under the Boost Software License (please see http://boost.org/LICENSE_1_0.txt or the accompanying LICENSE_1_0.txt file for the full text).
optional
and expected
are each released under the CCO 1.0 License.
This name was chosen by a random project name generator, which itself was randomly chosen.
Any questions about this library can be addressed to the cpp-netlib developers mailing list. Issues can be filed using Github at http://github.com/cpp-netlib/url/issues.