Packages
raxx
0.8.2
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/http/status_line.ex
# Basically the same as HTTP.Response,
# because the rest of a response is generic headers and fields
defmodule HTTP.StatusLine do
@moduledoc """
Working with HTTP response codes
Defined status-lines are from https://tools.ietf.org/html/rfc7231#section-6.1
"""
@external_resource "./rfc7231.status_codes"
path = Path.expand(@external_resource, Path.dirname(__ENV__.file))
{:ok, file} = File.read(path)
file = String.strip(file)
[_header | lines] = String.split(file, "\n")
statuses = Enum.map(lines, fn
(status_string) ->
{code, " " <> reason_phrase} = Integer.parse(status_string)
{code, reason_phrase}
end)
@doc """
Expand a status code into the correct status line
Variable naming from https://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html
"""
for status_string <- lines do
{code, " " <> _reason_phrase} = Integer.parse(status_string)
def status_line(unquote(code)) do
"HTTP/1.1 " <> unquote(status_string) <> "\r\n"
end
end
@doc """
List of all statuses as tuples of `{code, reason}`
"""
def statuses do
unquote(statuses)
end
end