defmodule GraphQL.Plug do use Plug.Builder plug Plug.Parsers, parsers: [:graphql, :urlencoded, :multipart, :json], pass: ["*/*"], json_decoder: Poison plug GraphQL.Plug.Endpoint # plug GraphQL.Plug.GraphiQL # TODO remove duplication call GraphQL.Plug.Helper.extract_init_options/1 here def init(opts) do schema = case Keyword.get(opts, :schema) do {mod, func} -> apply(mod, func, []) s -> s end %{schema: schema} end def call(conn, opts) do conn = assign(conn, :graphql_options, opts) super(conn, opts) end end