ejabberd-contrib/ejabberd_auth_http/deps/fusco/test/webserver_utils.erl

89 lines
2.2 KiB
Erlang

-module(webserver_utils).
-compile(export_all).
-define(DEFAULT_STRING, "Great success!").
default_string() ->
?DEFAULT_STRING.
empty_body(Module, Socket, _, _, _) ->
Module:send(
Socket,
"HTTP/1.1 200 OK\r\n"
"Content-type: text/plain\r\nContent-length: 0\r\n\r\n"
).
copy_body_100_continue(Module, Socket, _, _, Body) ->
Module:send(
Socket,
[
"HTTP/1.1 100 Continue\r\n\r\n"
"HTTP/1.1 200 OK\r\n"
"Content-type: text/plain\r\nContent-length: "
++ integer_to_list(size(Body)) ++ "\r\n\r\n",
Body
]
).
pre_1_1_server(Module, Socket, _, _, Body) ->
Pid = list_to_pid(binary_to_list(Body)),
Module:send(
Socket,
"HTTP/1.0 200 OK\r\n"
"Content-type: text/plain\r\nContent-length: 14\r\n\r\n"
?DEFAULT_STRING
),
% We didn't signal a connection close, but we want the client to do that
% any way since we're 1.0 now
{error, closed} = Module:recv(Socket, 0),
Pid ! closed,
Module:close(Socket).
pre_1_1_server_keep_alive(Module, Socket, _, _, _) ->
Module:send(
Socket,
"HTTP/1.0 200 OK\r\n"
"Content-type: text/plain\r\n"
"Connection: Keep-Alive\r\n"
"Content-length: 14\r\n\r\n"
?DEFAULT_STRING
).
very_slow_response(Module, Socket, _, _, _) ->
timer:sleep(1000),
Module:send(
Socket,
"HTTP/1.1 200 OK\r\n"
"Content-type: text/plain\r\nContent-length: 14\r\n\r\n"
?DEFAULT_STRING
).
no_content_length(Module, Socket, _, _, _) ->
Module:send(
Socket,
"HTTP/1.1 200 OK\r\n"
"Content-type: text/plain\r\nConnection: close\r\n\r\n"
?DEFAULT_STRING
).
no_content_length_1_0(Module, Socket, _, _, _) ->
Module:send(
Socket,
"HTTP/1.0 200 OK\r\n"
"Content-type: text/plain\r\n\r\n"
?DEFAULT_STRING
).
trailing_space_header(Module, Socket, _, _, _) ->
Module:send(
Socket,
"HTTP/1.1 200 OK\r\n"
"Content-type: text/plain\r\n"
"Content-Length: 14 \r\n\r\n"
?DEFAULT_STRING
).
no_response(_, _, _, _, _) ->
ok.