46 using kvp_map_t = std::map<std::string, std::vector<std::string>>;
49 std::string d_source_url_str;
50 std::string d_protocol;
54 kvp_map_t d_query_kvp;
55 std::chrono::system_clock::time_point d_ingest_time = std::chrono::system_clock::now();
56 bool d_trusted =
false;
59 void parse_query_string();
61 friend class HttpUrlTest;
66 explicit url(std::string url_s,
bool trusted =
false) :
67 d_source_url_str(std::move(url_s)),
75 explicit url(
const std::shared_ptr<http::url> &source_url) :
76 d_source_url_str(source_url->d_source_url_str),
77 d_protocol(source_url->d_protocol),
78 d_host(source_url->d_host),
79 d_path(source_url->d_path),
80 d_query(source_url->d_query),
81 d_query_kvp(source_url->d_query_kvp),
82 d_ingest_time(source_url->d_ingest_time),
83 d_trusted(source_url->d_trusted) {
86 url(
const std::shared_ptr<http::url> &source_url,
bool trusted) :
87 d_source_url_str(source_url->d_source_url_str),
88 d_protocol(source_url->d_protocol),
89 d_host(source_url->d_host),
90 d_path(source_url->d_path),
91 d_query(source_url->d_query),
92 d_query_kvp(source_url->d_query_kvp),
93 d_ingest_time(source_url->d_ingest_time),
97 virtual ~url() =
default;
99 url &operator=(
const url &rhs) =
delete;
101 virtual std::string str()
const {
return d_source_url_str; }
103 virtual std::string protocol()
const {
return d_protocol; }
105 virtual std::string host()
const {
return d_host; }
107 virtual std::string path()
const {
return d_path; }
109 virtual std::string query()
const {
return d_query; }
111 virtual std::time_t ingest_time()
const {
112 return std::chrono::system_clock::to_time_t(d_ingest_time);
115 virtual void set_ingest_time(
const std::time_t &itime) {
116 d_ingest_time = std::chrono::system_clock::from_time_t(itime);
124 virtual bool is_trusted()
const {
return d_trusted; };
126 virtual std::string
dump();