xbmc
HttpHeader.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include <string>
12 #include <utility>
13 #include <vector>
14 
16 {
17 public:
18  typedef std::pair<std::string, std::string> HeaderParamValue;
19  typedef std::vector<HeaderParamValue> HeaderParams;
20  typedef HeaderParams::iterator HeaderParamsIter;
21 
22  CHttpHeader();
23  ~CHttpHeader();
24 
25  void Parse(const std::string& strData);
26  void AddParam(const std::string& param, const std::string& value, const bool overwrite = false);
27 
28  std::string GetValue(const std::string& strParam) const;
29  std::vector<std::string> GetValues(std::string strParam) const;
30 
31  std::string GetHeader(void) const;
32 
33  std::string GetMimeType(void) const;
34  std::string GetCharset(void) const;
35  inline std::string GetProtoLine() const
36  { return m_protoLine; }
37 
38  inline bool IsHeaderDone(void) const
39  { return m_headerdone; }
40 
41  void Clear();
42 
43 protected:
44  std::string GetValueRaw(const std::string& strParam) const;
45  bool ParseLine(const std::string& headerLine);
46 
47  HeaderParams m_params;
48  std::string m_protoLine;
49  bool m_headerdone;
50  std::string m_lastHeaderLine;
51  static const char* const m_whitespaceChars;
52 };
53 
Definition: HttpHeader.h:15