You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2012/11/11 20:24:31 UTC
[1/28] git commit: reorder functions by exported function they support
Updated Branches:
refs/heads/431-feature-cors [created] 89443d0fb
reorder functions by exported function they support
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/89443d0f
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/89443d0f
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/89443d0f
Branch: refs/heads/431-feature-cors
Commit: 89443d0fbee1630232e43df68ca9385ce45ebf4d
Parents: 3f4a4e1
Author: Jan Lehnardt <ja...@apache.org>
Authored: Sun Nov 11 16:19:03 2012 +0000
Committer: Jan Lehnardt <ja...@apache.org>
Committed: Sun Nov 11 16:19:03 2012 +0000
----------------------------------------------------------------------
src/couchdb/couch_httpd_cors.erl | 77 ++++++++++++++++++--------------
1 files changed, 43 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb/blob/89443d0f/src/couchdb/couch_httpd_cors.erl
----------------------------------------------------------------------
diff --git a/src/couchdb/couch_httpd_cors.erl b/src/couchdb/couch_httpd_cors.erl
index 14b93f4..053adf0 100644
--- a/src/couchdb/couch_httpd_cors.erl
+++ b/src/couchdb/couch_httpd_cors.erl
@@ -33,6 +33,8 @@
% TODO: - pick a sane default
-define(CORS_DEFAULT_MAX_AGE, 12345).
+%% is_preflight_request/1
+
is_preflight_request(#httpd{method=Method}=Req) when Method /= 'OPTIONS' ->
Req;
is_preflight_request(Req) ->
@@ -49,40 +51,6 @@ is_preflight_request(#httpd{mochi_req=MochiReq}=Req, true) ->
Req
end.
-cors_headers(MochiReq) ->
- EnableCors = enable_cors(),
- cors_headers(MochiReq, EnableCors).
-
-cors_headers(#httpd{mochi_req=MochiReq}, true) ->
- Host = couch_httpd_vhost:host(MochiReq),
- AcceptedOrigins = get_accepted_origins(Host),
- case MochiReq:get_header_value("Origin") of
- undefined ->
- [];
- Origin ->
- handle_cors_headers(couch_util:to_list(Origin),
- Host, AcceptedOrigins)
- end;
-cors_headers(_MochiReq, false) ->
- [].
-
-handle_cors_headers(_Origin, _Host, []) ->
- [];
-handle_cors_headers(Origin, Host, AcceptedOrigins) ->
- AcceptAll = lists:member("*", AcceptedOrigins),
- case {AcceptAll, lists:member(Origin, AcceptedOrigins)} of
- {true, _} ->
- make_cors_header(Origin, Host);
- {false, true} ->
- make_cors_header(Origin, Host);
- _ ->
- []
- end.
-
-
-make_cors_header(Origin, Host) ->
- Headers = [{"Access-Control-Allow-Origin", Origin}],
- maybe_add_credentials(Origin, Host, Headers).
preflight_request(MochiReq) ->
Origin = MochiReq:get_header_value("Origin"),
@@ -193,6 +161,47 @@ credentials(_Origin, Host) ->
get_bool_config(cors_section(Host), "credentials", Default).
+% cors_headers/1
+
+cors_headers(MochiReq) ->
+ EnableCors = enable_cors(),
+ cors_headers(MochiReq, EnableCors).
+
+cors_headers(#httpd{mochi_req=MochiReq}, true) ->
+ Host = couch_httpd_vhost:host(MochiReq),
+ AcceptedOrigins = get_accepted_origins(Host),
+ case MochiReq:get_header_value("Origin") of
+ undefined ->
+ [];
+ Origin ->
+ handle_cors_headers(couch_util:to_list(Origin),
+ Host, AcceptedOrigins)
+ end;
+cors_headers(_MochiReq, false) ->
+ [].
+
+
+handle_cors_headers(_Origin, _Host, []) ->
+ [];
+handle_cors_headers(Origin, Host, AcceptedOrigins) ->
+ AcceptAll = lists:member("*", AcceptedOrigins),
+ case {AcceptAll, lists:member(Origin, AcceptedOrigins)} of
+ {true, _} ->
+ make_cors_header(Origin, Host);
+ {false, true} ->
+ make_cors_header(Origin, Host);
+ _ ->
+ []
+ end.
+
+
+make_cors_header(Origin, Host) ->
+ Headers = [{"Access-Control-Allow-Origin", Origin}],
+ maybe_add_credentials(Origin, Host, Headers).
+
+
+%% util
+
cors_config(Host, Key, Default) ->
couch_config:get(cors_section(Host), Key,
couch_config:get("cors", Key, Default)).