123456789101112131415161718192021222324252627282930313233 |
- -module(n2o_cowboy).
- -description('N2O Cowboy Server Bridge to HTTP Server Pages').
- -author('Roman Shestakov').
- -behaviour(cowboy_http_handler).
- -include_lib("n2o/include/wf.hrl").
- -export([init/3, handle/2, terminate/3]).
- -compile(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} = n2o_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.
- request_body(Req) -> cowboy_req:body(Req).
- headers(Req) -> cowboy_req:headers(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}.
|