UPnPsdk 0.1
Universal Plug and Play +, Software Development Kit
 
Loading...
Searching...
No Matches
uri.hpp
Go to the documentation of this file.
1#ifndef UPNPLIB_NET_URI_HPP
2#define UPNPLIB_NET_URI_HPP
3// Copyright (C) 2021+ GPL 3 and higher by Ingo Höft, <Ingo@Hoeft-online.de>
4// Redistribution only with this Copyright remark. Last modified: 2024-08-18
10
11namespace UPnPsdk {
12
13
14// Interface for the uri module
15// ============================
16// clang-format off
17
18class Iuri {
19 public:
20 virtual ~Iuri() {}
21
22 virtual int replace_escaped(
23 char* in, size_t index, size_t* max) = 0;
24 virtual int copy_URL_list(
25 URL_list* in, URL_list* out) = 0;
26 virtual void free_URL_list(
27 URL_list* list) = 0;
28 virtual int token_string_casecmp(
29 token* in1, const char* in2) = 0;
30 virtual int token_cmp(
31 token* in1, token* in2) = 0;
32 virtual int remove_escaped_chars(
33 char* in, size_t* size) = 0;
34 virtual int remove_dots(
35 char* buf, size_t size) = 0;
36 virtual char* resolve_rel_url(
37 char* base_url, char* rel_url) = 0;
38 virtual int parse_uri(
39 const char *in, size_t max, uri_type *out) = 0;
40};
41
42class Curi : Iuri {
43 public:
44 virtual ~Curi() override {}
45
46 int replace_escaped(char* in, size_t index, size_t* max) override {
47 return ::replace_escaped(in, index, max); }
48 int copy_URL_list(URL_list* in, URL_list* out) override {
49 return ::copy_URL_list(in, out); }
50 void free_URL_list(URL_list* list) override {
51 return ::free_URL_list(list); }
52 int token_string_casecmp(token* in1, const char* in2) override {
53 return ::token_string_casecmp(in1, in2); }
54 int token_cmp(token* in1, token* in2) override {
55 return ::token_cmp(in1, in2); }
56 int remove_escaped_chars(char* in, size_t* size) override {
57 return ::remove_escaped_chars(in, size); }
58 int remove_dots(char* buf, size_t size) override {
59 return ::remove_dots(buf, size); }
60 char* resolve_rel_url(char* base_url, char* rel_url) override {
61 return ::resolve_rel_url(base_url, rel_url); }
62 int parse_uri(const char *in, size_t max, uri_type *out) override {
63 return ::parse_uri(in, max, out); }
64};
65// clang-format on
66
67} // namespace UPnPsdk
69#endif // UPNPLIB_NET_URI_HPP
Represents a list of URLs as in the "callback" header of SUBSCRIBE message in GENA.
Definition uri.hpp:108
Represents a URI used in parse_uri and elsewhere.
Definition uri.hpp:92
Buffer used in parsinghttp messages, urls, etc. Generally this simply holds a pointer into a larger a...
Definition uri.hpp:76
Reengineered Object Oriented UPnP+ program code.
char * resolve_rel_url(char *base_url, char *rel_url)
Resolves a relative url with a base url.
Definition uri.cpp:605
int remove_dots(char *buf, size_t size)
Removes ".", and ".." from a path.
Definition uri.cpp:538
int copy_URL_list(URL_list *in, URL_list *out)
Copies one URL_list into another.
Definition uri.cpp:431
int replace_escaped(char *in, size_t index, size_t *max)
Replaces one single escaped character within a string with its unescaped version.
Definition uri.cpp:396
int token_cmp(token *in1, token *in2)
Compares two tokens.
Definition uri.cpp:518
int token_string_casecmp(token *in1, const char *in2)
Compares buffer in the token object with the buffer in in2 case insensitive.
Definition uri.cpp:510
int remove_escaped_chars(char *in, size_t *size)
Removes http escaped characters such as: "%20" and replaces them with their character representation.
Definition uri.cpp:526
int parse_uri(const char *in, size_t max, uri_type *out)
Parses a uri as defined in RFC 2396 (explaining URIs).
Definition uri.cpp:733
void free_URL_list(URL_list *list)
Frees the memory associated with a URL_list.
Definition uri.cpp:480