From debde54928bd8ae3e79a4945595f56ddf7dfa948 Mon Sep 17 00:00:00 2001 From: Tim Schumacher Date: Fri, 20 Jan 2023 00:17:14 +0100 Subject: WebServer: Use `Core::Stream` to read served files --- Userland/Services/WebServer/Client.cpp | 16 ++++++++-------- Userland/Services/WebServer/Client.h | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Userland/Services/WebServer/Client.cpp b/Userland/Services/WebServer/Client.cpp index f9dd8ec2ba..672339c6c8 100644 --- a/Userland/Services/WebServer/Client.cpp +++ b/Userland/Services/WebServer/Client.cpp @@ -16,8 +16,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -166,17 +166,17 @@ ErrorOr Client::handle_request(ReadonlyBytes raw_request) 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 { .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())) }; - TRY(send_response(stream, request, move(info))); + TRY(send_response(*stream, request, move(info))); return true; } -ErrorOr Client::send_response(InputStream& response, HTTP::HttpRequest const& request, ContentInfo content_info) +ErrorOr Client::send_response(Core::Stream::Stream& response, HTTP::HttpRequest const& request, ContentInfo content_info) { StringBuilder builder; builder.append("HTTP/1.0 200 OK\r\n"sv); @@ -197,8 +197,8 @@ ErrorOr Client::send_response(InputStream& response, HTTP::HttpRequest con char buffer[PAGE_SIZE]; do { - auto size = response.read({ buffer, sizeof(buffer) }); - if (response.unreliable_eof() && size == 0) + auto size = TRY(response.read({ buffer, sizeof(buffer) })).size(); + if (response.is_eof() && size == 0) break; ReadonlyBytes write_buffer { buffer, size }; @@ -337,8 +337,8 @@ ErrorOr Client::handle_directory_listing(String const& requested_path, Str builder.append("\n"sv); auto response = builder.to_deprecated_string(); - InputMemoryStream stream { response.bytes() }; - return send_response(stream, request, { .type = TRY(String::from_utf8("text/html"sv)), .length = response.length() }); + 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() }); } ErrorOr Client::send_error_response(unsigned code, HTTP::HttpRequest const& request, Vector const& headers) diff --git a/Userland/Services/WebServer/Client.h b/Userland/Services/WebServer/Client.h index c93176ed11..8f775a4bca 100644 --- a/Userland/Services/WebServer/Client.h +++ b/Userland/Services/WebServer/Client.h @@ -30,7 +30,7 @@ private: }; ErrorOr handle_request(ReadonlyBytes); - ErrorOr send_response(InputStream&, HTTP::HttpRequest const&, ContentInfo); + ErrorOr send_response(Core::Stream::Stream&, HTTP::HttpRequest const&, ContentInfo); ErrorOr send_redirect(StringView redirect, HTTP::HttpRequest const&); ErrorOr send_error_response(unsigned code, HTTP::HttpRequest const&, Vector const& headers = {}); void die(); -- cgit v1.2.3