Packages
ex_aws
1.0.0
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/json/codec.ex
defmodule ExAws.JSON.Codec do
@moduledoc """
Defines the specification for a JSON codec.
ExAws supports the use of your favorite JSON codec provided it fulfills this specification.
Poison fulfills this spec without modification, and is the default.
See the contents of `ExAws.JSON.JSX` for an example of an alternative implementation.
## Example
Here for example is the code required to make jsx comply with this spec.
In your config you would do:
```elixir
config :ex_aws,
json_codec: ExAws.JSON.JSX
```
```elixir
defmodule ExAws.JSON.JSX do
@behaviour ExAws.JSON.Codec
@moduledoc false
def encode!(%{} = map) do
map |> :jsx.encode
end
def encode(map) do
try do
{:ok, encode!(map)}
rescue
ArgumentError -> {:error, :badarg}
end
end
def decode!(string) do
:jsx.decode(string, [:return_maps])
end
def decode(string) do
try do
{:ok, decode!(string)}
rescue
ArgumentError -> {:error, :badarg}
end
end
end
```
"""
@callback encode!(%{}) :: String.t
@callback encode(%{}) :: {:ok, String.t} | {:error, String.t}
@callback decode!(String.t) :: %{}
@callback decode(String.t) :: {:ok, %{}} | {:error, %{}}
end