diff options
author | Henrik Nord <[email protected]> | 2015-06-02 09:09:10 +0200 |
---|---|---|
committer | Henrik Nord <[email protected]> | 2015-06-02 09:09:10 +0200 |
commit | b37c4e256dfd827cdfcb92078c1217a13aa2e656 (patch) | |
tree | 7c53916cfa4b16db12fe0b8492755caa5b50c2f7 /lib/inets/src/http_server/httpd_custom.erl | |
parent | e0e2a98d63f73121a56ae199cbfeba42b3a67fa6 (diff) | |
parent | 21b8941d83516e381000387c47758bc7f040ae8b (diff) | |
download | otp-b37c4e256dfd827cdfcb92078c1217a13aa2e656.tar.gz otp-b37c4e256dfd827cdfcb92078c1217a13aa2e656.tar.bz2 otp-b37c4e256dfd827cdfcb92078c1217a13aa2e656.zip |
Merge branch 'maint'
Conflicts:
OTP_VERSION
lib/inets/test/httpd_SUITE.erl
lib/inets/vsn.mk
lib/ssh/src/ssh.erl
lib/ssh/vsn.mk
lib/ssl/src/ssl.appup.src
lib/ssl/vsn.mk
Diffstat (limited to 'lib/inets/src/http_server/httpd_custom.erl')
-rw-r--r-- | lib/inets/src/http_server/httpd_custom.erl | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/lib/inets/src/http_server/httpd_custom.erl b/lib/inets/src/http_server/httpd_custom.erl new file mode 100644 index 0000000000..342469a579 --- /dev/null +++ b/lib/inets/src/http_server/httpd_custom.erl @@ -0,0 +1,69 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2015-2015. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +-module(httpd_custom). + +-export([response_header/1, request_header/1]). +-export([customize_headers/3]). + +-include_lib("inets/src/inets_app/inets_internal.hrl"). + +response_header(Header) -> + {true, httpify(Header)}. +request_header(Header) -> + {true, Header}. + +customize_headers(?MODULE, Function, Arg) -> + ?MODULE:Function(Arg); +customize_headers(Module, Function, Arg) -> + try Module:Function(Arg) of + {true, Value} -> + ?MODULE:Function(Value); + false -> + false + catch + _:_ -> + ?MODULE:Function(Arg) + end. + +httpify({Key0, Value}) -> + %% make sure first letter is capital (defacto standard) + Words1 = string:tokens(Key0, "-"), + Words2 = upify(Words1, []), + Key = new_key(Words2), + Key ++ ": " ++ Value ++ ?CRLF . + +new_key([]) -> + ""; +new_key([W]) -> + W; +new_key([W1,W2]) -> + W1 ++ "-" ++ W2; +new_key([W|R]) -> + W ++ "-" ++ new_key(R). + +upify([], Acc) -> + lists:reverse(Acc); +upify([Key|Rest], Acc) -> + upify(Rest, [upify2(Key)|Acc]). + +upify2([C|Rest]) when (C >= $a) andalso (C =< $z) -> + [C-($a-$A)|Rest]; +upify2(Str) -> + Str. |