-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.