Packages
ex_aws
0.5.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/s3/parsers.ex
if Code.ensure_loaded?(SweetXml) do
defmodule ExAws.S3.Parsers do
import SweetXml, only: [sigil_x: 2]
def parse_list_objects({:ok, resp = %{body: xml}}) do
parsed_body = xml
|> SweetXml.xpath(~x"//ListBucketResult",
name: ~x"./Name/text()",
is_truncated: ~x"./IsTruncated/text()",
prefix: ~x"./Prefix/text()",
marker: ~x"./Marker/text()",
max_keys: ~x"./MaxKeys/text()",
next_marker: ~x"./NextMarker/text()",
contents: [
~x"./Contents"l,
key: ~x"./Key/text()",
last_modified: ~x"./LastModified/text()",
e_tag: ~x"./ETag/text()",
size: ~x"./Size/text()",
storage_class: ~x"./StorageClass/text()",
owner: [
~x"./Owner"o,
id: ~x"./ID/text()",
display_name: ~x"./DisplayName/text()"
]
],
common_prefixes: [
~x"./CommonPrefixes"l,
prefix: ~x"./Prefix/text()"
]
)
|> list_objects_binaries
{:ok, %{resp | body: parsed_body}}
end
def parse_list_objects(val), do: val
defp list_objects_binaries(result) do
Enum.into(result, %{}, fn
{:contents, contents} -> {:contents, Enum.map(contents, &list_objects_binaries/1)}
{k, nil} -> {k, nil}
{:owner, v} -> {:owner, list_objects_binaries(v)}
{:common_prefixes, prefixes} -> {:common_prefixes, Enum.map(prefixes, &list_objects_binaries/1)}
{k, v} -> {k, IO.chardata_to_string(v)}
end)
end
def parse_initiate_multipart_upload({:ok, resp = %{body: xml}}) do
parsed_body = xml
|> SweetXml.xpath(~x"//InitiateMultipartUploadResult",
bucket: ~x"./Bucket/text()"s,
key: ~x"./Key/text()"s,
upload_id: ~x"./UploadId/text()"s
)
{:ok, %{resp | body: parsed_body}}
end
def parse_initiate_multipart_upload(val), do: val
def parse_upload_part_copy(val), do: val
def parse_complete_multipart_upload(val), do: val
def parse_list_parts(val), do: val
end
else
defmodule ExAws.S3.Parsers do
def parse_list_objects(val), do: val
def parse_initiate_multipart_upload(val), do: val
def parse_upload_part_copy(val), do: val
def parse_complete_multipart_upload(val), do: val
def parse_list_parts(val), do: val
end
end