%% vim: ts=4 sw=4 et sts=4 -module(webmachine_simple_bridge_anchor). -include("simple_bridge.hrl"). -export([ init/1, to_html/2, allowed_methods/2, post_is_create/2, process_post/2, ping/2 ]). %% Resource Functions %% ping(Req, State) -> {pong, Req, State}. init(_Handler = Handler) -> {ok, Handler}. allowed_methods(Req, Handler) -> {['HEAD', 'GET', 'POST'], Req, Handler}. post_is_create(Req, Handler) -> {false, Req, Handler}. to_html(Req, Handler) -> {ok, Data, Req1} = do_bridge(Handler, Req), {Data, Req1, Handler}. process_post(Req, Handler) -> {ok, Data, Req1} = do_bridge(Handler, Req), Req2 = wrq:set_resp_body(Data, Req1), {true, Req2, Handler}. do_bridge(Handler, Req) -> Bridge = simple_bridge:make(webmachine, Req), case simple_bridge_websocket:attempt_hijacking(Bridge, Handler) of {hijacked, closed} -> mochiweb_socket:close(sbw:socket(Bridge)), {ok, "", Req}; {hijacked, Bridge2} -> sbw:build_response(Bridge2); spared -> Handler:run(Bridge) end.