34 lines
1011 B
C++
34 lines
1011 B
C++
#pragma once
|
|
#include <drogon/HttpController.h>
|
|
using namespace drogon;
|
|
class RangeTestController : public drogon::HttpController<RangeTestController>
|
|
{
|
|
public:
|
|
METHOD_LIST_BEGIN
|
|
// path is /RangeTestController
|
|
METHOD_ADD(RangeTestController::getFile, "/", Get);
|
|
// path is /RangeTestController/{offset}/{length}
|
|
METHOD_ADD(RangeTestController::getFileByRange, "/{offset}/{length}", Get);
|
|
METHOD_LIST_END
|
|
|
|
RangeTestController();
|
|
|
|
void getFile(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback) const;
|
|
|
|
// We do not provide 'Range' header decoding, simply use path as range
|
|
// parameter.
|
|
void getFileByRange(const HttpRequestPtr &req,
|
|
std::function<void(const HttpResponsePtr &)> &&callback,
|
|
size_t offset,
|
|
size_t length) const;
|
|
|
|
static size_t getFileSize()
|
|
{
|
|
return fileSize_;
|
|
}
|
|
|
|
private:
|
|
static size_t fileSize_;
|
|
};
|