Packages
ex_aws
0.1.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/impl.ex
defmodule ExAws.S3.Impl do
@moduledoc false
# Implementation of the AWS S3 API.
#
# See ExAws.S3.Client for usage.
## Buckets
#############
def list_buckets(client, opts \\ %{}) do
client.request(:get, "", "/", params: opts)
end
def delete_bucket(client, bucket) do
client.request(:delete, bucket, "/")
end
def delete_bucket_cors(client, bucket) do
client.request(:delete, bucket, "/", resource: "cors")
end
def delete_bucket_lifecycle(client, bucket) do
client.request(:delete, bucket, "/", resource: "lifecycle")
end
def delete_bucket_policy(client, bucket) do
client.request(:delete, bucket, "/", resource: "policy")
end
def delete_bucket_replication(client, bucket) do
client.request(:delete, bucket, "/", resource: "replication")
end
def delete_bucket_tagging(client, bucket) do
client.request(:delete, bucket, "/", resource: "tagging")
end
def delete_bucket_website(client, bucket) do
client.request(:delete, bucket, "/", resource: "website")
end
def list_objects(client, bucket, opts \\ %{}) do
client.request(:get, bucket, "/", params: opts)
end
def get_bucket_acl(client, bucket) do
client.request(:get, bucket, "/", resource: "acl")
end
def get_bucket_cors(client, bucket) do
client.request(:get, bucket, "/", resource: "cors")
end
def get_bucket_lifecycle(client, bucket) do
client.request(:get, bucket, "/", resource: "lifecycle")
end
def get_bucket_policy(client, bucket) do
client.request(:get, bucket, "/", resource: "policy")
end
def get_bucket_location(client, bucket) do
client.request(:get, bucket, "/", resource: "location")
end
def get_bucket_logging(client, bucket) do
client.request(:get, bucket, "/", resource: "logging")
end
def get_bucket_notification(client, bucket) do
client.request(:get, bucket, "/", resource: "notification")
end
def get_bucket_replication(client, bucket) do
client.request(:get, bucket, "/", resource: "replication")
end
def get_bucket_tagging(client, bucket) do
client.request(:get, bucket, "/", resource: "tagging")
end
def get_bucket_object_versions(client, bucket, opts \\ %{}) do
client.request(:get, bucket, "/", resource: "versions", params: opts)
end
def get_bucket_request_payment(client, bucket) do
client.request(:get, bucket, "/", resource: "requestPayment")
end
def get_bucket_versioning(client, bucket) do
client.request(:get, bucket, "/", resource: "versioning")
end
def get_bucket_website(client, bucket) do
client.request(:get, bucket, "/", resource: "website")
end
def head_bucket(client, bucket) do
client.request(:head, bucket, "/")
end
def list_multipart_uploads(client, bucket, opts \\ %{}) do
client.request(:get, bucket, "/", resource: "uploads", params: opts)
end
def put_bucket(client, bucket, region, opts \\ %{}) do
body = """
<CreateBucketConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<LocationConstraint>#{region}</LocationConstraint>
</CreateBucketConfiguration>
"""
client.request(:put, bucket, "/", body: body, headers: opts)
end
def put_bucket_acl(client, bucket, _owner_id, _owner_email, _grants) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_cors(client, bucket, _cors_config) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_lifecycle(client, bucket, _livecycle_config) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_policy(client, bucket, _policy) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_logging(client, bucket, _logging_config) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_notification(client, bucket, _notification_config) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_replication(client, bucket, _replication_config) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_tagging(client, bucket, _tags) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_requestpayment(client, bucket, _payer) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_versioning(client, bucket, _version_config) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
def put_bucket_website(client, bucket, _website_config) do
raise "not yet implemented"
client.request(:put, bucket, "/")
end
## Objects
###########
def delete_object(client, bucket, object, opts \\ %{}) do
client.request(:delete, bucket, object, headers: opts)
end
def delete_multiple_objects(client, bucket, _objects) do
raise "not yet implemented"
client.request(:post, bucket, "/?delete")
end
def get_object(client, bucket, object, opts \\ %{}) do
param_keys = ["response-content-type", "response-content-language", "response-expires", "response-cache-control", "response-content-disposition", "response-content-encoding"]
response_opts = opts
|> Map.take(param_keys)
headers = :maps.without(param_keys, opts)
client.request(:get, bucket, object, headers: headers, params: response_opts)
end
def get_object_acl(client, bucket, object, opts \\ %{}) do
client.request(:get, bucket, object, resource: "acl", headers: opts)
end
def get_object_torrent(client, bucket, object) do
client.request(:get, bucket, object, resource: "torrent")
end
def head_object(client, bucket, object, opts \\ %{}) do
client.request(:head, bucket, object, headers: opts)
end
def options_object(client, bucket, object, origin, request_method, request_headers \\ []) do
headers = [
{"Origin", origin},
{"Access-Control-Request-Method", request_method},
{"Access-Control-Request-Headers", request_headers |> Enum.join(",")},
]
client.request(:options, bucket, object, headers: headers)
end
def post_object(client, bucket, object, _opts \\ %{}) do
raise "not yet implemented"
client.request(:get, bucket, object)
end
def post_object_restore(client, bucket, object, _version_id, _number_of_days) do
raise "not yet implemented"
client.request(:get, bucket, object)
end
def put_object(client, bucket, object, body, opts \\ %{}) do
headers = [
{"Content-Type", "binary/octet-stream"} |
opts |> Map.to_list
]
client.request(:put, bucket, object, body: body, headers: headers)
end
def put_object_acl(client, bucket, object, _acl) do
raise "not yet implemented"
client.request(:get, bucket, object)
end
def put_object_copy(client, dest_bucket, dest_object, _src_bucket, _src_object, _opts \\ %{}) do
raise "not yet implemented"
client.request(:get, dest_bucket, dest_object)
end
def initiate_multipart_upload(client, bucket, object, _opts \\ %{}) do
raise "not yet implemented"
client.request(:get, bucket, object)
end
def upload_part(client, bucket, object, _upload_id, _part_number) do
raise "not yet implemented"
client.request(:get, bucket, object)
end
def upload_part_copy(client, dest_bucket, dest_object, _src_bucket, _src_object, _opts \\ %{}) do
raise "not yet implemented"
client.request(:get, dest_bucket, dest_object)
end
def complete_multipart_upload(client, bucket, object, _upload_id, _parts) do
raise "not yet implemented"
client.request(:get, bucket, object)
end
def abort_multipart_upload(client, bucket, object, _upload_id) do
raise "not yet implemented"
client.request(:get, bucket, object)
end
def list_parts(client, bucket, object, upload_id, opts \\ %{}) do
params = %{"uploadId" => upload_id}
|> Map.merge(opts)
client.request(:get, bucket, object, params: params)
end
end