Browse Source

n2o_cowboy to n4u_cowboy (cowboy 1.0.1 to 2.9.0)

221V 3 years ago
parent
commit
f65a937e52
4 changed files with 80 additions and 36 deletions
  1. 1 1
      ebin/n4u.app
  2. 0 34
      src/endpoints/cowboy/n2o_cowboy.erl
  3. 78 0
      src/endpoints/cowboy/n4u_cowboy.erl
  4. 1 1
      src/wf.erl

+ 1 - 1
ebin/n4u.app

@@ -2,7 +2,7 @@
   {description, "N4U WebSocket Application Server"},
   {description, "N4U WebSocket Application Server"},
   {vsn, "4.4.20"},
   {vsn, "4.4.20"},
   {applications, [kernel, stdlib, asn1, public_key, ssl, crypto, ranch, cowboy, fs, active, sh, gproc, nitro]},
   {applications, [kernel, stdlib, asn1, public_key, ssl, crypto, ranch, cowboy, fs, active, sh, gproc, nitro]},
-  {modules, [n2o, n4u_app, n4u_sup, n4u_async, n4u_xhr, n4u_cx, n2o_cowboy, n2o_multipart, n4u_static, n2o_stream, n4u_document, n4u_proto, n4u_relay, n4u_error, n4u_io, n4u_log, n4u_mq, n4u_pickle, n4u_query, n4u_secret, n4u_session, n4u_syn, n4u_client, n4u_file, n4u_heart, n4u_http, n4u_nitrogen, n4u_text, wf, wf_convert, wf_utils]},
+  {modules, [n2o, n4u_app, n4u_sup, n4u_async, n4u_xhr, n4u_cx, n4u_cowboy, n2o_multipart, n4u_static, n2o_stream, n4u_document, n4u_proto, n4u_relay, n4u_error, n4u_io, n4u_log, n4u_mq, n4u_pickle, n4u_query, n4u_secret, n4u_session, n4u_syn, n4u_client, n4u_file, n4u_heart, n4u_http, n4u_nitrogen, n4u_text, wf, wf_convert, wf_utils]},
   {registered, [n4u_sup]},
   {registered, [n4u_sup]},
   {mod, {n4u_app, []}},
   {mod, {n4u_app, []}},
   {env, []}
   {env, []}

+ 0 - 34
src/endpoints/cowboy/n2o_cowboy.erl

@@ -1,34 +0,0 @@
--module(n2o_cowboy).
--description('N4U Cowboy Server Bridge to HTTP Server Pages').
--behaviour(cowboy_http_handler).
--include_lib("n4u/include/n4u.hrl").
--export([init/3, handle/2, terminate/3]).
--compile([export_all, nowarn_export_all]).
--record(state, {headers, body}).
-
-% Cowboy HTTP Handler
-
-init(_Transport, Req, _Opts) -> {ok, Req, #state{}}.
-terminate(_Reason, _Req, _State) -> ok.
-handle(Req, State) ->  {ok, NewReq} = n4u_document:run(Req), {ok, NewReq, State}.
-
-% Cowboy Bridge Abstraction
-
-params(Req) -> cowboy_req:qs_vals(Req).
-form(Req) -> {ok,Params,NewReq} = cowboy_req:body_qs(Req), {Params,NewReq}.
-path(Req) -> {Path,_NewReq} = cowboy_req:path(Req), Path.
-get_header(Name, Req, Default) -> cowboy_req:header(Name, Req, Default).
-request_body(Req) -> cowboy_req:body(Req).
-headers(Req) -> cowboy_req:headers(Req).
-set_header(Name, Value, Req) -> cowboy_req:set_resp_header(Name, Value, Req).
-header(Name, Value, Req) -> cowboy_req:set_resp_header(Name, Value, Req).
-response(Html,Req) -> cowboy_req:set_resp_body(Html,Req).
-reply(StatusCode,Req) -> cowboy_req:reply(StatusCode, Req).
-cookies(Req) -> element(1,cowboy_req:cookies(Req)).
-cookie(Cookie,Req) -> element(1,cowboy_req:cookie(wf:to_binary(Cookie),Req)).
-cookie(Cookie, Value, Req) -> cookie(Cookie,Value,<<"/">>,0,Req).
-cookie(Name, Value, Path, TTL, Req) ->
-    Options = [{path, Path}, {max_age, TTL}],
-    cowboy_req:set_resp_cookie(Name, Value, Options, Req).
-delete_cookie(Cookie,Req) -> cookie(Cookie,<<"">>,<<"/">>,0,Req).
-peer(Req) -> {{Ip,Port},Req} = cowboy_req:peer(Req), {Ip,Port}.

+ 78 - 0
src/endpoints/cowboy/n4u_cowboy.erl

@@ -0,0 +1,78 @@
+-module(n4u_cowboy).
+-behaviour(cowboy_handler).
+
+-export([init/2, terminate/3]).
+
+-export([params/1, form/1, path/1, request_body/1, headers/1, get_header/3,
+  set_header/3, response/2, reply/2, cookies/1, cookie/2, cookie/3, cookie/5,
+  delete_cookie/2, peer/1]).
+
+-record(state, {headers, body}).
+
+
+% N4U Cowboy Server Bridge
+
+
+% Cowboy HTTP Handler
+
+init(Req, _Opts) ->
+  Req2 = n4u_document:run(Req),
+  %wf:info(?MODULE, "init: ~p~n", [Req2]),
+  {ok, Req2, #state{}}.
+
+
+terminate(_Reason, _Req, _State) -> ok.
+
+
+% Cowboy Bridge Abstraction
+
+params(Req) -> cowboy_req:parse_qs(Req). % [{Key, Value}]
+
+
+cookie(Cookie, Req) ->
+  #{Cookie := Value} = cowboy_req:match_cookies([{Cookie, [], undefined}], Req),
+  Value.
+
+
+path(Req) -> cowboy_req:path(Req).
+
+
+peer(Req) -> cowboy_req:peer(Req).
+
+
+get_header(Name, Req, Default) -> cowboy_req:header(Name, Req, Default).
+
+
+form(Req) ->
+  {ok, Params, NewReq} = cowboy_req:read_urlencoded_body(Req),
+  {Params, NewReq}.
+
+
+request_body(Req) -> cowboy_req:read_body(Req).
+
+
+headers(Req) -> cowboy_req:headers(Req). % Headers % #{headers := Headers} = Req.
+
+
+set_header(Name, Value, Req) -> cowboy_req:set_resp_header(Name, Value, Req).
+
+
+response(Html, Req) -> cowboy_req:set_resp_body(Html, Req).
+
+
+reply(StatusCode, Req) -> cowboy_req:reply(StatusCode, Req). % Req2
+
+
+cookies(Req) -> cowboy_req:parse_cookies(Req). % [{Name, Value}]
+
+
+cookie(Cookie, Value, Req) -> cookie(Cookie, Value, <<"/">>, 0, Req).
+
+
+cookie(Name, Value, Path, TTL, Req) ->
+  Options = #{path => Path, max_age => TTL},
+  cowboy_req:set_resp_cookie(Name, Value, Req, Options).
+
+
+delete_cookie(Cookie, Req) -> cookie(Cookie, <<"">>, <<"/">>, 0, Req).
+

+ 1 - 1
src/wf.erl

@@ -157,7 +157,7 @@ cookie(Name,Value,Path,TTL) -> n4u_cx:add_cookie(Name,Value,Path,TTL).
 % Bridge Information
 % Bridge Information
 
 
 -ifndef(BRIDGE).
 -ifndef(BRIDGE).
--define(BRIDGE, (application:get_env(n4u, bridge, n2o_cowboy))).
+-define(BRIDGE, (application:get_env(n4u, bridge, n4u_cowboy))).
 -endif.
 -endif.
 
 
 cookie_req(Cookie,Req) -> ?BRIDGE:cookie(Cookie, Req).
 cookie_req(Cookie,Req) -> ?BRIDGE:cookie(Cookie, Req).