Current section

Files

Jump to
pixie lib pixie adapters plug_parsers_broken.ex
Raw

lib/pixie/adapters/plug_parsers_broken.ex

defmodule Plug.Parsers.BROKEN do
@moduledoc """
Parses various types of broken request body.
"""
@behaviour Plug.Parsers
alias Plug.Conn
@doc """
Deal with IE9 cross-domain JSON posts with no content-type header.
"""
def parse(conn, "broken", "no-mime-type", _headers, opts) do
case Conn.read_body(conn, opts) do
{:ok, body, conn} ->
Plug.Conn.Utils.validate_utf8!(body, Plug.Parsers.BadEncodingError, "urlencoded body")
decoded =
body
|> Plug.Conn.Query.decode
case decoded do
%{"message" => json} -> {:ok, %{"message" => Poison.decode!(json)}, conn}
_ -> {:next, conn}
end
{:more, _data, conn} ->
{:error, :too_large, conn}
end
end
def parse(conn, _type, _subtype, _headers, _opts) do
{:next, conn}
end
end