Created
October 24, 2014 22:27
-
-
Save j-mcnally/95ddd278c5d51a33867c to your computer and use it in GitHub Desktop.
Is this batshit crazy?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule Exq.RouterPlug do | |
require Logger | |
import Plug.Conn | |
use Plug.Router | |
plug :match | |
plug :dispatch | |
def init(options), do: options | |
def call(conn, opts) do | |
namespace = opts[:namespace] || "exq" | |
if (length(conn.path_info) > 0) do | |
if hd(conn.path_info) == namespace do | |
conn = %{conn | path_info: tl(conn.path_info)} | |
conn = super(conn, opts) | |
end | |
end | |
conn | |
end | |
get "/api/queues" do | |
Logger.debug "YOLO" | |
conn |> halt | |
end | |
match _ do | |
Logger.debug "HALP" | |
conn |> halt | |
end | |
end |
chrismccord
commented
Oct 24, 2014
defmodule Exq.RouterPlug do
require Logger
alias Exq.RouterPlug.Router
def init(options), do: options
def call(conn, opts) do
namespace(conn, opts, opts[:namespace] || "exq")
end
def namespace(%Plug.Conn{path_info: [ns | path]} = conn, opts, ns) do
Router.call(%Plug.Conn{conn | path_info: path}, Router.init(opts))
end
def namespace(conn, _opts, _ns), do: conn
defmodule Router do
import Plug.Conn
use Plug.Router
plug :match
plug :dispatch
get "/api/queues" do
Logger.debug "YOLO"
conn |> halt
end
match _ do
Logger.debug "HALP"
conn |> halt
end
end
end
18:16:41.315 [error] Ranch listener ExqUi.Router.HTTP had connection process started with :cowboy_protocol:start_link/4 at #PID<0.340.0> exit with reason: {[reason: :undef, mfa: {Plug.Adapters.Cowboy.Handler, :init, 3}, stacktrace: [{Router, :init, [[namespace: "exq"]], []}, {Exq.RouterPlug, :namespace, 3, [file: 'web/router.ex', line: 12]}, {ExqUi.Router, :before, 2, [file: 'web/router.ex', line: 5]}, {ExqUi.Router, :call, 2, [file: 'lib/phoenix/router.ex', line: 2]}, {Plug.Adapters.Cowboy.Handler, :init, 3, [file: 'lib/plug/adapters/cowboy/handler.ex', line: 7]}, {:cowboy_handler, :handler_init, 4, [file: 'src/cowboy_handler.erl', line: 64]}, {:cowboy_protocol, :execute, 4, [file: 'src/cowboy_protocol.erl', line: 435]}], req: [socket: #Port<0.7871>, transport: :ranch_tcp, connection: :keepalive, pid: #PID<0.340.0>, method: "GET", version: :"HTTP/1.1", peer: {{127, 0, 0, 1}, 60071}, host: "localhost", host_info: :undefined, port: 4000, path: "/exq", path_info: :undefined, qs: "", qs_vals: :undefined, bindings: [], headers: [{"host", "localhost:4000"}, {"connection", "keep-alive"}, {"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"}, {"user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36"}, {"accept-encoding", "gzip,deflate,sdch"}, {"accept-language", "en-US,en;q=0.8"}, {"cookie", "_lp_tc=eGSQrSuXFdcy-9zKb_ya7FKhE6z4HQ3QVm_neivcX3UncdBiXQTszv1D_FRgNrJBoP1MFzHzYKcPtJ5WXyvnC6WS1mCzQXj3qXX84zpdjdh2x9pQfBeUL4Qi; guest_token=IkIwaklwLTZkMDdtRmZuWl9oWnl3WUEi--0a4446436d0edf9472f2b0a69b0e47e8eb4e2e9c; _trend5_session=bnA2LzlwWEtzUDc4a0loN2pvcUdkSTRKZm1wbHZLMy9weEdEeXJvY3hBeWpyUkdXL1lzYVlMaHBTY1ZQTXRuaFQ5bWM3NG9idVdoSjFMTHF3ZTMvanJSRVJmVEJheUxMZ0ZMUkxIZHpOTnlINjZpcDRyeVViek96RHY1VTlUUFJyU2YwRHIzcUtVNllQcTlsMlhoWFRKZWl5YzNMc3YzK0VVMWdZN3IwRE5UY2ZJVkszMy9BNnpsVlBBcjVuZ1lKTisrZ1RFYzdGNXE4STgrelpyVDZpQTE2SVp0eGVnV09TSEpuMTlBSVZLQT0tLTBEc2dwMHJCdDZod3NLSlNsZ3RUUXc9PQ%3D%3D--63b63db799a7c13d0299ac673b13143c6780259b; _dewey_session=WU42OUJsVlFzTS9NZWRXWXVqeWNReWRtdUJQSlQvdUR5eUhNeEw4WDRFdVorRkViOXRHRjlycTdzaTUrWGFVblN1WnZiTVQvVVZiOFV2N2llaGpjZ01UYzBXUVltUWowQlFQWHFoUXNTeVpkYlBSOWtNRUQ3Z2xzcXR6TVRyOUxYRko1S01GSExlaVZtZWdDS1RwUmdRMGt3M1pUV3lRODdtWXcrc2xvdDBKaEg0cmtmNldMS3lRN0NuOVJGZnBYem9LTWM3RFpibkNYWGl5SUtYQ1M2Qy9qdTZaQ0xONFVyN2hISDZvbldqM1F0Z0YxcDBHOG5pdW9PekR3RnkrN3piNXdkWUZJUkswdzR1aXBwYUROa1FncWd1dExNUjFlSWxkUVBTdER0N1BhRlZwcnRCTDEwYytyczBIWTFsb1VDY3E2bnFHUW1OdENXNitkTGp1WkhBPT0tLXJrcWVDaE8yS2I0ZVdzV1FodjhvVEE9PQ%3D%3D--70a6690a79c5fe22bcd8b111109ca58790db9579; _ipad-builder-rails_session=clZPbGh3bUJoRmt5Zm9oMGFTUDlocG10cmMxb1AwSTVvckhoR0ZXSHRBTjFGa1VxL0N1WXByQUxzR0FqQ2kvZVF3d2xJN0IwcnZMS1R2bnAxdy9CeEdCcGxERGV2S3A2ZXJKUXpGdW9VWk02TmxpNHJGUzZZR1JuVDZwNU9xaHc1N0JJQVBEdjdWM01ad2JUcFBJcWhqY21XcHhLQ3ZwT0xQU3lwQlZXSDR4MFZtbjFJdjNsWmZLVUZvZXA1bC96LS1hZ3pkd21sUGcxY3lkUDhKbHIrMjR3PT0%3D--37c39ca1d8e0290abef47063d391023de0d09df4; _winix_session=dDRENnNVbE51YkVCRURiUkRFazg3WjkzL25wdFl4a29IdGw0Q0cyb1g3KzY1SERCRXFxM1BLM2JReXhIQmtzcFpJQmJ5TStLYnVNbTJjYU95Yk83Q1JxVi9wQi9XT2hzMTM2aU91cUtFbC9DMzMvMzlFQ2FFZTJ1cTZXSEZmenVjaWltVkxqbWxBNXhiQ2tQOTRFZUVNRG5TU3lEQ1RvUHNzSS9BTzEzSkRyd2pXRnRaNldrZmRTcGlEKzZITmphMU4rbm1Pd3hTeEdCTG9vbktXVGkrMnVPVG9WMlpLQkhnQi9aSnZKV3JNM1pxTHlDSm43VHVVMzg5aDdQQVZRY2dONzNqdmFnSUJmUzJaSzVwTGRzZkNNZ2t2TUtRSUt6eVZVMGthL21Hd1p2a3IyQ2dCdnlqZzIxVFFxTmdmUmZuaTB1L1BsZFBrakhOVVU5T3pZeEg1UVM3ZHhnQmVndzQ4dHpVMUtlVlFSbDg0cEJHaVUrQkR1ZGo5dzBCK3NkU2wvQk5XMk5vS0VsKzRvSjJIRHRweWM3bG45SUJ6blhBN1ZNMUZwSjZEbFNoMjcreDl6eFROM2JmOER5Y2tOd044QytBUllkWWZoRFdOTk5VS3Jtb3BVbzBEdThnYWNnQVNVNklhbE1BaTRWRnZkZU8rN29jbTB4dWdsU3IvQXMtLXdub05RYnl1VnhBbTRCL0xkNkhUNnc9PQ%3D%3D--e58565a2133afb7678e65c5e20c08d64f2d4839c; _struct_key=g3QAAAABZAAQcGhvZW5peF9tZXNzYWdlc3QAAAAA--xtnNo8S6C4TBnIHZ75Dpgp/WdrM=; _ga=GA1.1.1682883242.1410157156; _exq_ui_key=Zmh0WnFkQ1RlbHRsem9CY1M0SWNZSCs4V0ZFbUlDZFp2OXNJbXE5anRDdz0tLUpGQytEWXBqZjVwelFEZnNQWldZQUE9PQ==--D/XenXJ0AI1mFRnUfPpCSNXyv9k="}], p_headers: [{"connection", ["keep-alive"]}], cookies: :undefined, meta: [], body_state: :waiting, buffer: "", multipart: :undefined, resp_compress: false, resp_state: :waiting, resp_headers: [], resp_body: "", onresponse: :undefined], opts: {ExqUi.Router, []}], [{:cowboy_protocol, :execute, 4, [file: 'src/cowboy_protocol.erl', line: 435]}]}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment