Current section

Files

Jump to
timber lib mix tasks timber install application.ex
Raw

lib/mix/tasks/timber/install/application.ex

defmodule Mix.Tasks.Timber.Install.Application do
@moduledoc false
alias __MODULE__.MalformedApplicationPayload
alias Mix.Tasks.Timber.Install.API
defstruct [
:api_key,
:heroku_drain_url,
:name,
:platform_type,
:slug
]
def new!(api) do
response = API.application!(api)
case response do
{200, %{"api_key" => api_key, "heroku_drain_url" => heroku_drain_url, "name" => name,
"platform_type" => platform_type, "slug" => slug}}
->
%__MODULE__{
api_key: api_key,
heroku_drain_url: heroku_drain_url,
name: name,
platform_type: platform_type,
slug: slug
}
{200, payload} -> raise(MalformedApplicationPayload, payload: payload)
end
end
#
# Errors
#
defmodule MalformedApplicationPayload do
defexception [:message]
def exception(opts) do
payload = Keyword.fetch!(opts, :payload)
message =
"""
Uh oh! We received a malformed application payload:
#{inspect(payload)}
"""
%__MODULE__{message: message}
end
end
end