Browse Source

Add cowboy_http_req:set_resp_cookie/4

Pretty much just an alias for a combination of set_resp_header and cookie.
Loïc Hoguin 13 years ago
parent
commit
ce92ab1e63
3 changed files with 13 additions and 3 deletions
  1. 8 1
      src/cowboy_http_req.erl
  2. 2 1
      test/http_SUITE.erl
  3. 3 1
      test/http_handler_set_resp.erl

+ 8 - 1
src/cowboy_http_req.erl

@@ -37,7 +37,7 @@
 ]). %% Request Body API.
 
 -export([
-	set_resp_header/3, set_resp_body/2,
+	set_resp_cookie/4, set_resp_header/3, set_resp_body/2,
 	has_resp_header/2, has_resp_body/1,
 	reply/2, reply/3, reply/4,
 	chunked_reply/2, chunked_reply/3, chunk/2,
@@ -361,6 +361,13 @@ body_qs(Req) ->
 
 %% Response API.
 
+%% @doc Add a cookie header to the response.
+-spec set_resp_cookie(binary(), binary(), [cowboy_cookies:cookie_option()],
+	#http_req{}) -> {ok, #http_req{}}.
+set_resp_cookie(Name, Value, Options, Req) ->
+	{HeaderName, HeaderValue} = cowboy_cookies:cookie(Name, Value, Options),
+	set_resp_header(HeaderName, HeaderValue, Req).
+
 %% @doc Add a header to the response.
 -spec set_resp_header(http_header(), iodata(), #http_req{})
 	-> {ok, #http_req{}}.

+ 2 - 1
test/http_SUITE.erl

@@ -505,7 +505,8 @@ set_resp_header(Config) ->
 	ok = gen_tcp:send(Socket, "GET /set_resp/header HTTP/1.1\r\n"
 		"Host: localhost\r\nConnection: close\r\n\r\n"),
 	{ok, Data} = gen_tcp:recv(Socket, 0, 6000),
-	{_Start, _Length} = binary:match(Data, <<"Vary: Accept">>).
+	{_, _} = binary:match(Data, <<"Vary: Accept">>),
+	{_, _} = binary:match(Data, <<"Set-Cookie: ">>).
 
 set_resp_overwrite(Config) ->
 	{port, Port} = lists:keyfind(port, 1, Config),

+ 3 - 1
test/http_handler_set_resp.erl

@@ -13,7 +13,9 @@ init({_Transport, http}, Req, Opts) ->
 	{ok, Req3} = cowboy_http_req:set_resp_body(Body, Req2),
 	{ok, Req4} = cowboy_http_req:set_resp_header(
 		<<"X-Cowboy-Test">>, <<"ok">>, Req3),
-	{ok, Req4, undefined}.
+	{ok, Req5} = cowboy_http_req:set_resp_cookie(
+		<<"cake">>, <<"lie">>, [], Req4),
+	{ok, Req5, undefined}.
 
 handle(Req, State) ->
 	case cowboy_http_req:has_resp_header(<<"X-Cowboy-Test">>, Req) of