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:32:04 UTC

[4/5] git commit: simplify `preflight_request()`

simplify `preflight_request()`


Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/f75b1b5c
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/f75b1b5c
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/f75b1b5c

Branch: refs/heads/431-feature_cors
Commit: f75b1b5c4f867c7b4a8f01cc2ba6dd21184bb764
Parents: bb6a80a
Author: Jan Lehnardt <ja...@apache.org>
Authored: Sun Nov 11 15:56:22 2012 +0000
Committer: Jan Lehnardt <ja...@apache.org>
Committed: Sun Nov 11 20:32:02 2012 +0100

----------------------------------------------------------------------
 src/couchdb/couch_httpd_cors.erl |   42 ++++++++++++++++++---------------
 1 files changed, 23 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb/blob/f75b1b5c/src/couchdb/couch_httpd_cors.erl
----------------------------------------------------------------------
diff --git a/src/couchdb/couch_httpd_cors.erl b/src/couchdb/couch_httpd_cors.erl
index 90a7543..7e45c96 100644
--- a/src/couchdb/couch_httpd_cors.erl
+++ b/src/couchdb/couch_httpd_cors.erl
@@ -85,30 +85,34 @@ make_cors_header(Origin, Host) ->
     maybe_add_credentials(Origin, Host, Headers).
 
 preflight_request(MochiReq) ->
+    Origin = MochiReq:get_header_value("Origin"),
+    preflight_request(MochiReq, Origin).
+
+preflight_request(MochiReq, undefined) ->
+    MochiReq;
+preflight_request(MochiReq, Origin) ->
     Host = couch_httpd_vhost:host(MochiReq),
-    case MochiReq:get_header_value("Origin") of
-    undefined ->
-        MochiReq;
+    AcceptedOrigins = get_accepted_origins(Host),
+    AcceptAll = lists:member("*", AcceptedOrigins),
 
-    Origin ->
-        AcceptedOrigins = get_accepted_origins(Host),
-        AcceptAll = lists:member("*", AcceptedOrigins),
-
-        case {AcceptAll, AcceptedOrigins} of
-        {true, _} ->
-            handle_preflight_request(couch_util:to_list(Origin),
-                                     Host, MochiReq);
-        {false, _} ->
-            case lists:member(Origin, AcceptedOrigins) of
-            true ->
-                handle_preflight_request(couch_util:to_list(Origin),
-                                         Host, MochiReq);
-            false ->
-                false
-            end
+    HandlerFun = fun() ->
+        OriginList = couch_util:to_list(Origin),
+        handle_preflight_request(OriginList, Host, MochiReq)
+    end,
+
+    case AcceptAll of
+    true ->
+        HandlerFun();
+    false ->
+        case lists:member(Origin, AcceptedOrigins) of
+        true ->
+            HandlerFun();
+        false ->
+            false
         end
     end.
 
+
 handle_preflight_request(Origin, Host, MochiReq) ->
     %% get supported methods
     SupportedMethods = split_list(cors_config(Host, "methods",