mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 01:17:34 +00:00
WebServer: Use Core::Stream
to read served files
This commit is contained in:
parent
3a16168ace
commit
debde54928
2 changed files with 9 additions and 9 deletions
|
@ -16,8 +16,8 @@
|
||||||
#include <LibCore/DateTime.h>
|
#include <LibCore/DateTime.h>
|
||||||
#include <LibCore/DirIterator.h>
|
#include <LibCore/DirIterator.h>
|
||||||
#include <LibCore/File.h>
|
#include <LibCore/File.h>
|
||||||
#include <LibCore/FileStream.h>
|
|
||||||
#include <LibCore/MappedFile.h>
|
#include <LibCore/MappedFile.h>
|
||||||
|
#include <LibCore/MemoryStream.h>
|
||||||
#include <LibCore/MimeData.h>
|
#include <LibCore/MimeData.h>
|
||||||
#include <LibHTTP/HttpRequest.h>
|
#include <LibHTTP/HttpRequest.h>
|
||||||
#include <LibHTTP/HttpResponse.h>
|
#include <LibHTTP/HttpResponse.h>
|
||||||
|
@ -166,17 +166,17 @@ ErrorOr<bool> Client::handle_request(ReadonlyBytes raw_request)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::InputFileStream stream { file };
|
auto stream = TRY(Core::Stream::File::open(real_path.bytes_as_string_view(), Core::Stream::OpenMode::Read));
|
||||||
|
|
||||||
auto const info = ContentInfo {
|
auto const info = ContentInfo {
|
||||||
.type = TRY(String::from_deprecated_string(Core::guess_mime_type_based_on_filename(real_path.bytes_as_string_view()))),
|
.type = TRY(String::from_deprecated_string(Core::guess_mime_type_based_on_filename(real_path.bytes_as_string_view()))),
|
||||||
.length = TRY(Core::File::size(real_path.bytes_as_string_view()))
|
.length = TRY(Core::File::size(real_path.bytes_as_string_view()))
|
||||||
};
|
};
|
||||||
TRY(send_response(stream, request, move(info)));
|
TRY(send_response(*stream, request, move(info)));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<void> Client::send_response(InputStream& response, HTTP::HttpRequest const& request, ContentInfo content_info)
|
ErrorOr<void> Client::send_response(Core::Stream::Stream& response, HTTP::HttpRequest const& request, ContentInfo content_info)
|
||||||
{
|
{
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
builder.append("HTTP/1.0 200 OK\r\n"sv);
|
builder.append("HTTP/1.0 200 OK\r\n"sv);
|
||||||
|
@ -197,8 +197,8 @@ ErrorOr<void> Client::send_response(InputStream& response, HTTP::HttpRequest con
|
||||||
|
|
||||||
char buffer[PAGE_SIZE];
|
char buffer[PAGE_SIZE];
|
||||||
do {
|
do {
|
||||||
auto size = response.read({ buffer, sizeof(buffer) });
|
auto size = TRY(response.read({ buffer, sizeof(buffer) })).size();
|
||||||
if (response.unreliable_eof() && size == 0)
|
if (response.is_eof() && size == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
ReadonlyBytes write_buffer { buffer, size };
|
ReadonlyBytes write_buffer { buffer, size };
|
||||||
|
@ -337,8 +337,8 @@ ErrorOr<void> Client::handle_directory_listing(String const& requested_path, Str
|
||||||
builder.append("</html>\n"sv);
|
builder.append("</html>\n"sv);
|
||||||
|
|
||||||
auto response = builder.to_deprecated_string();
|
auto response = builder.to_deprecated_string();
|
||||||
InputMemoryStream stream { response.bytes() };
|
auto stream = TRY(Core::Stream::FixedMemoryStream::construct(response.bytes()));
|
||||||
return send_response(stream, request, { .type = TRY(String::from_utf8("text/html"sv)), .length = response.length() });
|
return send_response(*stream, request, { .type = TRY(String::from_utf8("text/html"sv)), .length = response.length() });
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<void> Client::send_error_response(unsigned code, HTTP::HttpRequest const& request, Vector<String> const& headers)
|
ErrorOr<void> Client::send_error_response(unsigned code, HTTP::HttpRequest const& request, Vector<String> const& headers)
|
||||||
|
|
|
@ -30,7 +30,7 @@ private:
|
||||||
};
|
};
|
||||||
|
|
||||||
ErrorOr<bool> handle_request(ReadonlyBytes);
|
ErrorOr<bool> handle_request(ReadonlyBytes);
|
||||||
ErrorOr<void> send_response(InputStream&, HTTP::HttpRequest const&, ContentInfo);
|
ErrorOr<void> send_response(Core::Stream::Stream&, HTTP::HttpRequest const&, ContentInfo);
|
||||||
ErrorOr<void> send_redirect(StringView redirect, HTTP::HttpRequest const&);
|
ErrorOr<void> send_redirect(StringView redirect, HTTP::HttpRequest const&);
|
||||||
ErrorOr<void> send_error_response(unsigned code, HTTP::HttpRequest const&, Vector<String> const& headers = {});
|
ErrorOr<void> send_error_response(unsigned code, HTTP::HttpRequest const&, Vector<String> const& headers = {});
|
||||||
void die();
|
void die();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue