lib/exstream_web/router.ex

defmodule Exstream.Router do
  use Plug.Router

  plug(:match)
  plug(:dispatch)

  @video "test/fixtures/video.mkv"
  @audio "test/fixtures/audio.mp3"

  get "/watch" do
    conn
    |> put_resp_content_type("text/html")
    |> send_file(200, Path.absname("lib/exstream_web/index.html"))
  end

  get "/segments/:step" do
    conn
    |> send_resp(200, Exstream.segment(@video, String.to_integer(step)))
  end

  get "/playlist.m3u8" do
    conn
    |> send_resp(200, Exstream.Playlist.build(Path.absname(@video), "/some/base/url"))
  end

  get "/audio.mp3" do
    Exstream.Range.get_video(conn, Path.absname(@audio))
  end

  match _ do
    send_resp(conn, 404, "Oops!")
  end
end

require Logger
Logger.info("Plug now running on localhost:4040")