Packages
sippet
0.1.2
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
An Elixir Session Initiation Protocol (SIP) stack.
Current section
Files
Jump to
Current section
Files
lib/sippet/message/request_line.ex
defmodule Sippet.Message.RequestLine do
alias Sippet.URI, as: URI
defstruct [
method: nil,
request_uri: nil,
version: nil
]
@type t :: %__MODULE__{
method: atom | binary,
request_uri: URI.t,
version: {number, number}
}
def build(method, %URI{} = request_uri)
when is_atom(method) or is_binary(method) do
%__MODULE__{
method: method,
request_uri: request_uri,
version: {2, 0}
}
end
def build(method, request_uri)
when is_binary(request_uri) do
build(method, URI.parse!(request_uri))
end
defdelegate to_string(value), to: String.Chars.Sippet.Message.RequestLine
def to_iodata(%Sippet.Message.RequestLine{version: {major, minor},
request_uri: uri, method: method}) do
[if(is_atom(method), do: String.upcase(Atom.to_string(method)), else: method),
" ", Sippet.URI.to_string(uri),
" SIP/", Integer.to_string(major), ".", Integer.to_string(minor)]
end
end
defimpl String.Chars, for: Sippet.Message.RequestLine do
def to_string(%Sippet.Message.RequestLine{} = request_line) do
Sippet.Message.RequestLine.to_iodata(request_line) |> IO.iodata_to_binary
end
end