Packages

Slack Web API wrapper library that automatically throttles all requests according to API rate limits.

Current section

Files

Jump to
slack_throttle lib slack http.ex
Raw

lib/slack/http.ex

defmodule SlackThrottle.HTTP do
@moduledoc false
use HTTPoison.Base
alias SlackThrottle.Queue
def fetch(token, method, params, :call) do
params = params
|> Map.to_list
|> Keyword.put(:token, token)
res = Queue.enqueue_call(
token,
__MODULE__, :get!, [method, headers(), [params: params]]
)
res.body
end
def fetch(token, method, params, :cast) do
params = params
|> Map.to_list
|> Keyword.put(:token, token)
Queue.enqueue_cast(
token,
__MODULE__, :get!, [method, headers(), [params: params]]
)
end
def process_url(url) do
"https://api.slack.com/api/#{url}"
end
def process_response_body(body) do
body
|> Poison.decode!
end
def headers do
%{
"Content-Type" => "application/json",
"Accept" => "application/json"
}
end
end