aboutsummaryrefslogtreecommitdiffstats
path: root/src/cowboy_rest.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2012-09-16 01:13:44 +0200
committerLoïc Hoguin <[email protected]>2012-09-16 01:13:44 +0200
commit527477bd4ac431f3810c3cec6679824112cf3612 (patch)
tree9384b8f8a5826cd4403b348851908833d667f32d /src/cowboy_rest.erl
parent736bcd4841c38e8676017486aea211e624d3dc0f (diff)
downloadcowboy-527477bd4ac431f3810c3cec6679824112cf3612.tar.gz
cowboy-527477bd4ac431f3810c3cec6679824112cf3612.tar.bz2
cowboy-527477bd4ac431f3810c3cec6679824112cf3612.zip
Introduce cowboy_req:host_url/1 to remove more duplicate code
Diffstat (limited to 'src/cowboy_rest.erl')
-rw-r--r--src/cowboy_rest.erl25
1 files changed, 4 insertions, 21 deletions
diff --git a/src/cowboy_rest.erl b/src/cowboy_rest.erl
index 617b001..a3bcb2e 100644
--- a/src/cowboy_rest.erl
+++ b/src/cowboy_rest.erl
@@ -671,31 +671,14 @@ create_path(Req, State) ->
{halt, Req2, HandlerState} ->
terminate(Req2, State#state{handler_state=HandlerState});
{Path, Req2, HandlerState} ->
- Location = create_path_location(Req2, Path),
+ {HostURL, Req3} = cowboy_req:host_url(Req2),
State2 = State#state{handler_state=HandlerState},
- {ok, Req3} = cowboy_req:set_resp_header(
- <<"Location">>, Location, Req2),
- put_resource(cowboy_req:set_meta(put_path, Path, Req3),
+ {ok, Req4} = cowboy_req:set_resp_header(
+ <<"Location">>, << HostURL/binary, Path/binary >>, Req3),
+ put_resource(cowboy_req:set_meta(put_path, Path, Req4),
State2, 303)
end.
-create_path_location(#http_req{transport=Transport, host=Host,
- port=Port}, Path) ->
- TransportName = Transport:name(),
- << (create_path_location_protocol(TransportName))/binary, "://",
- Host/binary, (create_path_location_port(TransportName, Port))/binary,
- Path/binary >>.
-
-create_path_location_protocol(ssl) -> <<"https">>;
-create_path_location_protocol(_) -> <<"http">>.
-
-create_path_location_port(ssl, 443) ->
- <<>>;
-create_path_location_port(tcp, 80) ->
- <<>>;
-create_path_location_port(_, Port) ->
- <<":", (list_to_binary(integer_to_list(Port)))/binary>>.
-
%% process_post should return true when the POST body could be processed
%% and false when it hasn't, in which case a 500 error is sent.
process_post(Req, State) ->