Current section
Files
Jump to
Current section
Files
lib/consul/session.ex
#
# The MIT License (MIT)
#
# Copyright (c) 2014-2015 Undead Labs, LLC
#
defmodule Consul.Session do
alias Consul.Endpoint
use Consul.Endpoint, handler: Consul.Handler.Base
@session "session"
@create "create"
@destroy "destroy"
@info "info"
@list "list"
@node "node"
@renew "renew"
@spec create(map, Keyword.t) :: Endpoint.response
def create(body, opts \\ []) do
build_url([@session, @create], opts)
|> req_put(JSX.encode!(body))
end
@spec create!(map, Keyword.t) :: binary | no_return
def create!(body, opts \\ []) do
case create(body, opts) do
{:ok, %{body: body}} ->
body["ID"]
{:error, response} ->
raise Consul.ResponseError, response
end
end
@spec destroy(binary, Keyword.t) :: Endpoint.response
def destroy(session_id, opts \\ []) do
build_url([@session, @destroy, session_id], opts)
|> req_put("")
end
@spec info(binary, Keyword.t) :: Endpoint.response
def info(session_id, opts \\ []) do
build_url([@session, @info, session_id], opts)
|> req_get()
end
@spec node(binary, Keyword.t) :: Endpoint.response
def node(node_id, opts \\ []) do
build_url([@session, @node, node_id], opts)
|> req_get()
end
@spec list(Keyword.t) :: Endpoint.response
def list(opts \\ []) do
build_url([@session, @list], opts)
|> req_get()
end
@spec renew(binary, Keyword.t) :: Endpoint.response
def renew(session_id, opts \\ []) do
build_url([@session, @renew, session_id], opts)
|> req_put("")
end
end