Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/envoy/http/query_params.h
Line
Count
Source (jump to first uncovered line)
1
#pragma once
2
3
#include <map>
4
#include <string>
5
#include <vector>
6
7
#include "absl/container/btree_map.h"
8
#include "absl/strings/string_view.h"
9
#include "absl/types/optional.h"
10
#include "header_map.h"
11
12
namespace Envoy {
13
namespace Http {
14
namespace Utility {
15
16
// TODO(jmarantz): this should probably be a proper class, with methods to serialize
17
// using proper formatting. Perhaps similar to
18
// https://github.com/apache/incubator-pagespeed-mod/blob/master/pagespeed/kernel/http/query_params.h
19
20
using QueryParams = std::map<std::string, std::string>;
21
using QueryParamsVector = std::vector<std::pair<std::string, std::string>>;
22
23
class QueryParamsMulti {
24
private:
25
  absl::btree_map<std::string, std::vector<std::string>> data_;
26
27
public:
28
  void remove(absl::string_view key);
29
  void add(absl::string_view key, absl::string_view value);
30
  void overwrite(absl::string_view key, absl::string_view value);
31
  std::string toString();
32
  std::string replaceQueryString(const HeaderString& path);
33
  absl::optional<std::string> getFirstValue(absl::string_view key) const;
34
35
0
  const absl::btree_map<std::string, std::vector<std::string>>& data() { return data_; }
36
37
  static QueryParamsMulti parseParameters(absl::string_view data, size_t start, bool decode_params);
38
  static QueryParamsMulti parseQueryString(absl::string_view url);
39
  static QueryParamsMulti parseAndDecodeQueryString(absl::string_view url);
40
};
41
42
} // namespace Utility
43
} // namespace Http
44
} // namespace Envoy