19 CHttpRange(uint64_t firstPosition, uint64_t lastPosition);
23 bool operator==(
const CHttpRange &other)
const;
24 bool operator!=(
const CHttpRange &other)
const;
26 virtual uint64_t GetFirstPosition()
const {
return m_first; }
27 virtual void SetFirstPosition(uint64_t firstPosition) { m_first = firstPosition; }
28 virtual uint64_t GetLastPosition()
const {
return m_last; }
29 virtual void SetLastPosition(uint64_t lastPosition) { m_last = lastPosition; }
31 virtual uint64_t GetLength()
const;
32 virtual void SetLength(uint64_t length);
34 virtual bool IsValid()
const;
41 typedef std::vector<CHttpRange> HttpRanges;
55 const void* GetData()
const {
return m_data; }
56 void SetData(
const void* data) { m_data = data; }
57 void SetData(
const void* data, uint64_t length);
58 void SetData(
const void* data, uint64_t firstPosition, uint64_t lastPosition);
60 bool IsValid()
const override;
66 typedef std::vector<CHttpResponseRange> HttpResponseRanges;
74 const HttpRanges& Get()
const {
return m_ranges; }
75 bool Get(
size_t index,
CHttpRange& range)
const;
78 size_t Size()
const {
return m_ranges.size(); }
79 bool IsEmpty()
const {
return m_ranges.empty(); }
81 bool GetFirstPosition(uint64_t& position)
const;
82 bool GetLastPosition(uint64_t& position)
const;
83 uint64_t GetLength()
const;
88 void Remove(
size_t index);
91 HttpRanges::const_iterator Begin()
const {
return m_ranges.begin(); }
92 HttpRanges::const_iterator End()
const {
return m_ranges.end(); }
94 bool Parse(
const std::string& header);
95 bool Parse(
const std::string& header, uint64_t totalLength);
98 void SortAndCleanup();
113 static std::string GenerateContentRangeHeaderValue(
const CHttpRange* range);
124 static std::string GenerateContentRangeHeaderValue(uint64_t start, uint64_t end, uint64_t total);
126 #ifdef HAS_WEB_SERVER 133 static std::string GenerateMultipartBoundary();
142 static std::string GenerateMultipartBoundaryContentType(
const std::string& multipartBoundary);
153 static std::string GenerateMultipartBoundaryWithHeader(
const std::string& multipartBoundary,
const std::string& contentType);
165 static std::string GenerateMultipartBoundaryWithHeader(
const std::string& multipartBoundary,
const std::string& contentType,
const CHttpRange* range);
176 static std::string GenerateMultipartBoundaryWithHeader(
const std::string& multipartBoundaryWithContentType,
const CHttpRange* range);
185 static std::string GenerateMultipartBoundaryEnd(
const std::string& multipartBoundary);
186 #endif // HAS_WEB_SERVER Definition: HttpRangeUtils.h:43
Definition: HttpRangeUtils.h:68
Definition: HttpRangeUtils.h:103
Definition: HttpRangeUtils.h:15