Packages
raxx
0.10.4
1.1.0
1.0.1
1.0.0
1.0.0-rc.3
1.0.0-rc.2
retired
1.0.0-rc.1
retired
1.0.0-rc.0
retired
0.18.1
0.18.0
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
retired
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.14
0.14.13
0.14.12
0.14.11
0.14.10
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.1
0.11.0
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
0.0.1
Interface for HTTP webservers, frameworks and clients.
Current section
Files
Jump to
Current section
Files
lib/raxx/server.ex
defmodule Raxx.Server do
@moduledoc """
Manipulate server header on raxx messages
"""
@field_name "server"
@doc """
Read server of the HTTP message.
## Examples
iex> %Raxx.Request{headers: [{"server", "Apache"}]} |> Raxx.Server.fetch
{:ok, "Apache"}
iex> %Raxx.Request{headers: []} |> Raxx.Server.fetch
{:error, :field_value_not_specified}
iex> %Raxx.Request{headers: [{"server", "Apache"}, {"server", "NginX"}]} |> Raxx.Server.fetch
{:error, :duplicated_field}
"""
def fetch(%{headers: headers}) do
case :proplists.lookup_all(@field_name,headers) do
[{@field_name, field_binary}] ->
parse_field_value(field_binary)
[] ->
{:error, :field_value_not_specified}
_ ->
{:error, :duplicated_field}
end
end
@doc """
Set the server of a HTTP message.
## Examples
iex> %Raxx.Request{} |> Raxx.Server.set("Apache") |> Map.get(:headers)
[{"server", "Apache"}]
iex> %Raxx.Request{headers: [{"server", "NginX"}]} |> Raxx.Server.set("Apache") |> Map.get(:headers)
[{"server", "Apache"}]
"""
def set(message = %{headers: headers}, user_agent) do
headers = :proplists.delete(@field_name, headers)
headers = [{@field_name, user_agent} | headers]
%{message | headers: headers}
end
defp parse_field_value(user_agent) do
{:ok, user_agent}
end
end