aboutsummaryrefslogtreecommitdiffstats
path: root/src/gun_http.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/gun_http.erl')
-rw-r--r--src/gun_http.erl22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/gun_http.erl b/src/gun_http.erl
index 745c2a9..4726f03 100644
--- a/src/gun_http.erl
+++ b/src/gun_http.erl
@@ -14,6 +14,7 @@
-module(gun_http).
+-export([check_options/1]).
-export([init/4]).
-export([handle/2]).
-export([close/1]).
@@ -24,9 +25,6 @@
-export([cancel/2]).
-export([ws_upgrade/7]).
--type opts() :: [{version, cow_http:version()}].
--export_type([opts/0]).
-
-type io() :: head | {body, non_neg_integer()} | body_close | body_chunked.
-type websocket_info() :: {websocket, reference(), binary(), [], []}. %% key, extensions, protocols
@@ -44,11 +42,19 @@
out = head :: io()
}).
-init(Owner, Socket, Transport, []) ->
- #http_state{owner=Owner, socket=Socket, transport=Transport};
-init(Owner, Socket, Transport, [{version, Version}]) ->
- #http_state{owner=Owner, socket=Socket, transport=Transport,
- version=Version}.
+check_options(Opts) ->
+ do_check_options(map:to_list(Opts)).
+
+do_check_options([{keepalive, K}|Opts]) when is_integer(K), K > 0 ->
+ do_check_options(Opts);
+do_check_options([{version, V}|Opts]) when V =:= 'HTTP/1.1'; V =:= 'HTTP/1.0' ->
+ do_check_options(Opts);
+do_check_options([Opt|_]) ->
+ {error, {options, {http, Opt}}}.
+
+init(Owner, Socket, Transport, Opts) ->
+ Version = maps:get(version, Opts, 'HTTP/1.1'),
+ #http_state{owner=Owner, socket=Socket, transport=Transport, version=Version}.
%% Stop looping when we got no more data.
handle(<<>>, State) ->