mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:22:45 +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/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) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Tim Schumacher
						Tim Schumacher