mirror of https://github.com/kiwix/libkiwix.git
Content-Range header is set only for partial content
This commit is contained in:
parent
801ad18a89
commit
f7571b5b69
|
@ -241,12 +241,14 @@ Response::create_entry_mhd_response() const
|
||||||
MHD_add_response_header(response,
|
MHD_add_response_header(response,
|
||||||
MHD_HTTP_HEADER_CONTENT_TYPE, m_mimeType.c_str());
|
MHD_HTTP_HEADER_CONTENT_TYPE, m_mimeType.c_str());
|
||||||
MHD_add_response_header(response, MHD_HTTP_HEADER_ACCEPT_RANGES, "bytes");
|
MHD_add_response_header(response, MHD_HTTP_HEADER_ACCEPT_RANGES, "bytes");
|
||||||
|
if ( m_byteRange.kind() == ByteRange::RESOLVED_PARTIAL_CONTENT ) {
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
oss << "bytes " << m_byteRange.first() << "-" << m_byteRange.last()
|
oss << "bytes " << m_byteRange.first() << "-" << m_byteRange.last()
|
||||||
<< "/" << m_entry.getSize();
|
<< "/" << m_entry.getSize();
|
||||||
|
|
||||||
MHD_add_response_header(response,
|
MHD_add_response_header(response,
|
||||||
MHD_HTTP_HEADER_CONTENT_RANGE, oss.str().c_str());
|
MHD_HTTP_HEADER_CONTENT_RANGE, oss.str().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
MHD_add_response_header(response,
|
MHD_add_response_header(response,
|
||||||
MHD_HTTP_HEADER_CONTENT_LENGTH, kiwix::to_string(content_length).c_str());
|
MHD_HTTP_HEADER_CONTENT_LENGTH, kiwix::to_string(content_length).c_str());
|
||||||
|
|
|
@ -413,12 +413,15 @@ TEST_F(ServerTest, ValidSingleRangeByteRangeRequestsAreHandledProperly)
|
||||||
{
|
{
|
||||||
const char url[] = "/zimfile/I/m/Ray_Charles_classic_piano_pose.jpg";
|
const char url[] = "/zimfile/I/m/Ray_Charles_classic_piano_pose.jpg";
|
||||||
const auto full = zfs1_->GET(url);
|
const auto full = zfs1_->GET(url);
|
||||||
|
EXPECT_FALSE(full->has_header("Content-Range"));
|
||||||
|
EXPECT_EQ("bytes", full->get_header_value("Accept-Ranges"));
|
||||||
|
|
||||||
{
|
{
|
||||||
const auto p = zfs1_->GET(url, { {"Range", "bytes=0-100000"} } );
|
const auto p = zfs1_->GET(url, { {"Range", "bytes=0-100000"} } );
|
||||||
EXPECT_EQ(206, p->status);
|
EXPECT_EQ(206, p->status);
|
||||||
EXPECT_EQ(full->body, p->body);
|
EXPECT_EQ(full->body, p->body);
|
||||||
EXPECT_EQ("bytes 0-20076/20077", p->get_header_value("Content-Range"));
|
EXPECT_EQ("bytes 0-20076/20077", p->get_header_value("Content-Range"));
|
||||||
|
EXPECT_EQ("bytes", p->get_header_value("Accept-Ranges"));
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -427,6 +430,7 @@ TEST_F(ServerTest, ValidSingleRangeByteRangeRequestsAreHandledProperly)
|
||||||
EXPECT_EQ("bytes 0-10/20077", p->get_header_value("Content-Range"));
|
EXPECT_EQ("bytes 0-10/20077", p->get_header_value("Content-Range"));
|
||||||
EXPECT_EQ(11, p->body.size());
|
EXPECT_EQ(11, p->body.size());
|
||||||
EXPECT_EQ(full->body.substr(0, 11), p->body);
|
EXPECT_EQ(full->body.substr(0, 11), p->body);
|
||||||
|
EXPECT_EQ("bytes", p->get_header_value("Accept-Ranges"));
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -435,6 +439,7 @@ TEST_F(ServerTest, ValidSingleRangeByteRangeRequestsAreHandledProperly)
|
||||||
EXPECT_EQ("bytes 123-456/20077", p->get_header_value("Content-Range"));
|
EXPECT_EQ("bytes 123-456/20077", p->get_header_value("Content-Range"));
|
||||||
EXPECT_EQ(334, p->body.size());
|
EXPECT_EQ(334, p->body.size());
|
||||||
EXPECT_EQ(full->body.substr(123, 334), p->body);
|
EXPECT_EQ(full->body.substr(123, 334), p->body);
|
||||||
|
EXPECT_EQ("bytes", p->get_header_value("Accept-Ranges"));
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -442,6 +447,7 @@ TEST_F(ServerTest, ValidSingleRangeByteRangeRequestsAreHandledProperly)
|
||||||
EXPECT_EQ(206, p->status);
|
EXPECT_EQ(206, p->status);
|
||||||
EXPECT_EQ(full->body.substr(20000), p->body);
|
EXPECT_EQ(full->body.substr(20000), p->body);
|
||||||
EXPECT_EQ("bytes 20000-20076/20077", p->get_header_value("Content-Range"));
|
EXPECT_EQ("bytes 20000-20076/20077", p->get_header_value("Content-Range"));
|
||||||
|
EXPECT_EQ("bytes", p->get_header_value("Accept-Ranges"));
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -449,5 +455,6 @@ TEST_F(ServerTest, ValidSingleRangeByteRangeRequestsAreHandledProperly)
|
||||||
EXPECT_EQ(206, p->status);
|
EXPECT_EQ(206, p->status);
|
||||||
EXPECT_EQ(full->body.substr(19977), p->body);
|
EXPECT_EQ(full->body.substr(19977), p->body);
|
||||||
EXPECT_EQ("bytes 19977-20076/20077", p->get_header_value("Content-Range"));
|
EXPECT_EQ("bytes 19977-20076/20077", p->get_header_value("Content-Range"));
|
||||||
|
EXPECT_EQ("bytes", p->get_header_value("Accept-Ranges"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue