MCPcopy Create free account
hub / github.com/audacity/audacity / ParseUri

Function ParseUri

libraries/lib-string-utils/UriParser.cpp:9–57  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7#include "UriParser.h"
8
9UriFields ParseUri(std::string_view uri) noexcept
10{
11 UriFields result;
12 auto schemeEnd = uri.find("://");
13 if (schemeEnd != std::string_view::npos)
14 {
15 result.Scheme = uri.substr(0, schemeEnd);
16 uri.remove_prefix(schemeEnd + 3);
17 }
18
19 auto fragmentStart = uri.find('#');
20 if (fragmentStart != std::string_view::npos)
21 {
22 result.Fragment = uri.substr(fragmentStart + 1);
23 uri.remove_suffix(uri.size() - fragmentStart);
24 }
25
26 auto queryStart = uri.find('?');
27 if (queryStart != std::string_view::npos)
28 {
29 result.Query = uri.substr(queryStart + 1);
30 uri.remove_suffix(uri.size() - queryStart);
31 }
32
33 auto pathStart = uri.find('/');
34 if (pathStart != std::string_view::npos)
35 {
36 result.Path = uri.substr(pathStart + 1);
37 uri.remove_suffix(uri.size() - pathStart);
38 }
39
40 auto userInfoEnd = uri.find('@');
41 if (userInfoEnd != std::string_view::npos)
42 {
43 result.UserInfo = uri.substr(0, userInfoEnd);
44 uri.remove_prefix(userInfoEnd + 1);
45 }
46
47 auto portStart = uri.find(':');
48 if (portStart != std::string_view::npos)
49 {
50 result.Port = uri.substr(portStart + 1);
51 uri.remove_suffix(uri.size() - portStart);
52 }
53
54 result.Host = uri;
55
56 return result;
57}
58
59QueryFields ParseUriQuery(std::string_view query, std::string_view delimiter) noexcept
60{

Callers 5

IsUrlExpiredFunction · 0.85
UriParserTests.cppFile · 0.85
HandleAudioLinkFunction · 0.85
HandleMixdownLinkFunction · 0.85
HandleProjectLinkFunction · 0.85

Calls 2

findMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected