summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Schumacher <timschumi@gmx.de>2023-01-20 00:17:14 +0100
committerLinus Groh <mail@linusgroh.de>2023-01-20 20:50:42 +0000
commitdebde54928bd8ae3e79a4945595f56ddf7dfa948 (patch)
tree18f8c91406d324e008d7eda8cda1cee7998fdb8c
parent3a16168aceb16dbdc7d2af2f0659e0e834716cf4 (diff)
downloadserenity-debde54928bd8ae3e79a4945595f56ddf7dfa948.zip
WebServer: Use `Core::Stream` to read served files
-rw-r--r--Userland/Services/WebServer/Client.cpp16
-rw-r--r--Userland/Services/WebServer/Client.h2
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 <LibCore/DateTime.h>
#include <LibCore/DirIterator.h>
#include <LibCore/File.h>
-#include <LibCore/FileStream.h>
#include <LibCore/MappedFile.h>
+#include <LibCore/MemoryStream.h>
#include <LibCore/MimeData.h>
#include <LibHTTP/HttpRequest.h>
#include <LibHTTP/HttpResponse.h>
@@ -166,17 +166,17 @@ ErrorOr<bool> 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<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;
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];
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<void> Client::handle_directory_listing(String const& requested_path, Str
builder.append("</html>\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<void> Client::send_error_response(unsigned code, HTTP::HttpRequest const& request, Vector<String> 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<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_error_response(unsigned code, HTTP::HttpRequest const&, Vector<String> const& headers = {});
void die();