SiddiqSoft.SplitUri
1.3.0
See the version list below for details.
dotnet add package SiddiqSoft.SplitUri --version 1.3.0
NuGet\Install-Package SiddiqSoft.SplitUri -Version 1.3.0
<PackageReference Include="SiddiqSoft.SplitUri" Version="1.3.0" />
paket add SiddiqSoft.SplitUri --version 1.3.0
#r "nuget: SiddiqSoft.SplitUri, 1.3.0"
// Install SiddiqSoft.SplitUri as a Cake Addin #addin nuget:?package=SiddiqSoft.SplitUri&version=1.3.0 // Install SiddiqSoft.SplitUri as a Cake Tool #tool nuget:?package=SiddiqSoft.SplitUri&version=1.3.0
SplitUri : Parse Uri Utility
Objective
Parse the Uri for HTTP resources with support for format
and nlohmann.json
.
While there are many, many libraries available, the goal of this implementation is to make usage easy along with a modern design.
Requirements
- C++20 compliant toolchain: We use
<concepts>
,<format>
. - The
nlohmann.json
library. - The build and tests are for Visual Studio 2019 under x64.
Usage
- Use the nuget SiddiqSoft.SplitUri
- Copy paste..whatever works.
<hr/>
From Wikipedia we have the following structure of Uri.
userinfo host port
┌──┴───┐ ┌──────┴──────┐ ┌┴┐
https://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top
└─┬─┘ └───────────┬──────────────┘└───────┬───────┘ └───────────┬─────────────┘ └┬┘
scheme authority path query fragment
API
Current implementation only supports the
http
andhttps
scheme.
Uri | ||
---|---|---|
scheme |
UriScheme | Enumeration of the Uri schemes. We currently only support http scheme. |
authority |
Auth | template argument defaulting to AuthorityHttp |
path |
vector<> | Array of strings each containing the path element |
query |
map<> | Map of query elements |
url |
string | Short-cut of the path, query and fragment section |
template <class T = std::string, class Auth = AuthorityHttp<T>>
requires (std::same_as<std::string, T> || std::same_as<std::wstring, T>) && std::same_as<AuthorityHttp<T>, Auth>
struct Uri
{
UriScheme scheme;
Auth authority;
vector<T> path {};
map<T, T> query {};
T url {}; // contains the "balance" post Authority section
operator T();
NLOHMANN_DEFINE_TYPE_INTRUSIVE(Uri<T>, scheme, authority, url, path, query, fragment);
};
SplitUri()
template <class T = std::string, class Auth = AuthorityHttp<T>>
requires std::same_as<std::string, T> || std::same_as<std::wstring, T>
Uri<T, Auth> static SplitUri(const T& aEndpoint);
<hr/>
Roadmap
- Update to handle std::wstring.
- Support the other URI schemes.
<p align="right"> © 2021 Siddiq Software LLC. All rights reserved. </p>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
native | native is compatible. |
-
- nlohmann.json (>= 3.9.1)
- SiddiqSoft.string2map (>= 2.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on SiddiqSoft.SplitUri:
Package | Downloads |
---|---|
SiddiqSoft.restcl
Focussed REST Client for modern C++ |
|
SiddiqSoft.CosmosClient
Azure Cosmos REST-API Client for Modern C++ |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.0 | 148 | 10/26/2024 |
1.9.0-rc0002 | 69 | 10/26/2024 |
1.8.5 | 78 | 10/26/2024 |
1.8.4 | 534 | 6/1/2022 |
1.8.3 | 635 | 11/20/2021 |
1.8.2 | 420 | 9/8/2021 |
1.8.1 | 321 | 9/8/2021 |
1.8.0 | 20,986 | 9/8/2021 |
1.7.0 | 9,007 | 8/29/2021 |
1.6.5 | 301 | 8/28/2021 |
1.6.4 | 494 | 8/18/2021 |
1.6.3 | 339 | 8/18/2021 |
1.6.2 | 359 | 8/16/2021 |
1.6.1 | 506 | 8/16/2021 |
1.5.1 | 322 | 8/13/2021 |
1.5.0 | 1,086 | 8/13/2021 |
1.4.1 | 322 | 8/9/2021 |
1.4.0 | 757 | 8/9/2021 |
1.3.0 | 310 | 8/6/2021 |
1.2.0 | 367 | 8/5/2021 |
1.1.0 | 372 | 8/5/2021 |
1.0.1 | 2,000 | 8/3/2021 |