2015-09-21 2 views

ответ

9

Вы можете определить вилку, которая использует register_before_send/2, и проверить заголовок content-type ответа (обратите внимание, что Plug ожидает, что заголовки будут иметь строчные буквы). Наивная реализация (без проверки ошибок) будет:

defmodule Plug.UpperCaser do 
    @behaviour Plug 

    import Plug.Conn 

    def init(opts), do: opts 

    def call(conn, _opts) do 
    register_before_send(conn, fn(conn) -> 
     [content_type | _tail] = get_resp_header(conn, "content-type") 
     if String.contains?(content_type, "text/plain") do 
     resp(conn, conn.status, conn.resp_body |> to_string |> String.upcase) 
     else 
     conn 
     end 
    end) 
    end 
end 

resp/3 используется как send_resp/3 вызовет бесконечный цикл, и вам придется перезапустить сервер.

Смежные вопросы