Packages
ex_aws
0.3.1
2.7.0
2.6.1
2.6.0
2.5.11
2.5.10
2.5.9
2.5.8
2.5.7
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.10
2.2.9
2.2.8
2.2.7
2.2.6
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.1.9
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.1
1.0.0-beta3
1.0.0-beta2
1.0.0-beta1
1.0.0-beta0
0.5.0
0.4.19
0.4.18
0.4.17
0.4.15
0.4.14
0.4.13
0.4.11
0.4.10
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.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
0.0.5
0.0.4
0.0.3
AWS client for Elixir. Currently supports Dynamo, DynamoStreams, EC2, Firehose, Kinesis, KMS, Lambda, RRDS, Route53, S3, SES, SNS, SQS, STS and others.
Current section
Files
Jump to
Current section
Files
lib/ex_aws/actions.ex
defmodule ExAws.Actions do
@moduledoc false
# Ensures listed actions for a service are defined.
# Really only used by Kinesis and Dynamo, may be refactored.
defmacro __using__(_) do
quote do
alias unquote(__MODULE__)
@before_compile unquote(__MODULE__)
@after_compile unquote(__MODULE__)
end
end
defmacro __before_compile__(_) do
quote do
@action_map @actions |> Enum.reduce(%{}, fn({action, method}, actions) ->
name = action |> Atom.to_string |> Mix.Utils.camelize
Map.put(actions, action, {"#{@namespace}.#{name}", method})
end)
def __actions__, do: @action_map
end
end
defmacro __after_compile__(env, _) do
module = env.module
defined_actions = module
|> Module.definitions_in
|> Keyword.keys
module
|> apply(:__actions__, [])
|> Map.keys
|> Enum.filter(&(!Enum.member?(defined_actions, &1)))
|> Enum.each(fn(action) ->
IO.puts "#{Path.relative_to_cwd(env.file)}: Action :#{action} listed but not defined in #{module}"
end)
nil
end
def get(module, action) do
module |> apply(:__actions__, []) |> Map.get(action)
end
end