Packages
ex_aws
0.4.5
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/auth/utils.ex
defmodule ExAws.Auth.Utils do
def valid_path_char?(?/), do: true
def valid_path_char?(c) do
!URI.char_reserved?(c)
end
def hash_sha256(data) do
:sha256
|> :crypto.hash(data)
|> bytes_to_hex
end
def hmac_sha256(key, data) do
:crypto.hmac(:sha256, key, data)
end
def bytes_to_hex(bytes) do
bytes
|> Base.encode16
|> String.downcase
end
def service_name(service), do: service |> Atom.to_string
def method_string(method) do
method
|> Atom.to_string
|> String.upcase
end
def amz_date({date, time}) do
date = date |> quasi_iso_format
time = time |> quasi_iso_format
[date, "T", time, "Z"]
|> IO.iodata_to_binary
end
def quasi_iso_format({y, m, d}) do
[y, m, d]
|> Enum.map(&Integer.to_string/1)
|> Enum.map(&zero_pad/1)
end
defp zero_pad(<<_>> = val), do: "0" <> val
defp zero_pad(val), do: val
end