File response
This commit is contained in:
@@ -16,8 +16,6 @@
|
|||||||
% - Keep-Alive
|
% - Keep-Alive
|
||||||
% - Case insensitive headers
|
% - Case insensitive headers
|
||||||
% - HTML
|
% - HTML
|
||||||
% - Response from file
|
|
||||||
% - Remove forall
|
|
||||||
% - Remove !
|
% - Remove !
|
||||||
% - URL Encode
|
% - URL Encode
|
||||||
|
|
||||||
@@ -110,6 +108,15 @@ path([Part|Pattern]) -->
|
|||||||
|
|
||||||
path([]) --> [].
|
path([]) --> [].
|
||||||
|
|
||||||
|
send_response(Stream, http_response(StatusCode0, file(Filename), Headers)) :-
|
||||||
|
default(StatusCode0, 200, StatusCode),
|
||||||
|
format(Stream, "HTTP/1.0 ~d\r\n", [StatusCode]),
|
||||||
|
overwrite_header("Connection"-"Close", Headers0, Headers1),
|
||||||
|
write_headers(Stream, Headers1),
|
||||||
|
format(Stream, "\r\n", []),
|
||||||
|
open(Filename, read, FileStream, [type(binary)]),
|
||||||
|
pipe_bytes(FileStream, Stream).
|
||||||
|
|
||||||
send_response(Stream, http_response(StatusCode0, text(TextResponse), Headers)) :-
|
send_response(Stream, http_response(StatusCode0, text(TextResponse), Headers)) :-
|
||||||
default(StatusCode0, 200, StatusCode),
|
default(StatusCode0, 200, StatusCode),
|
||||||
format(Stream, "HTTP/1.0 ~d\r\n", [StatusCode]),
|
format(Stream, "HTTP/1.0 ~d\r\n", [StatusCode]),
|
||||||
@@ -242,3 +249,13 @@ put_bytes(_, []).
|
|||||||
put_bytes(Stream, [Byte|Bytes]) :-
|
put_bytes(Stream, [Byte|Bytes]) :-
|
||||||
put_byte(Stream, Byte),
|
put_byte(Stream, Byte),
|
||||||
put_bytes(Stream, Bytes).
|
put_bytes(Stream, Bytes).
|
||||||
|
|
||||||
|
pipe_bytes(StreamIn, StreamOut) :-
|
||||||
|
get_byte(StreamIn, Byte),
|
||||||
|
(
|
||||||
|
Byte =\= -1 ->
|
||||||
|
(
|
||||||
|
put_byte(StreamOut, Byte),
|
||||||
|
pipe_bytes(StreamIn, StreamOut)
|
||||||
|
)
|
||||||
|
; true).
|
||||||
|
|||||||
Reference in New Issue
Block a user