defmodule Exstream.Router do use Plug.Router plug(:match) plug(:dispatch) get "/" do conn |> put_resp_content_type("text/html") |> send_file(200, Path.absname("lib/exstream_web/index.html")) end get "/segment:query" do %{"start" => start, "end" => finish} = fetch_query_params(conn).query_params Exstream.stream(%Exstream{ conn: conn, path: "priv/h264-mp3.mkv", start: start, end: finish }) end get "/playlist.m3u8" do conn |> send_resp( 200, Exstream.Playlist.build(%Exstream.Playlist{ duration: "00:00:30", url: "/segment?token=some-token" }) ) end get "/range.mp4" do Exstream.Range.stream(%Exstream.Range{conn: conn, path: "priv/h264-mp3.mkv"}) end match _ do send_resp(conn, 404, "Oops!") end end