Report incorrect code
Copy
Ask AI
{:aws, "~> 1.0.0"},
{:hackney, "~> 1.18"}
Report incorrect code
Copy
Ask AI
telnyx_storage_client =
AWS.Client.create(
System.fetch_env!("TELNYX_V2_API_KEY"),
# secret access key can be left blank for Telnyx Storage
"",
System.get_env("TELNYX_STORAGE_REGION", "us-east-1")
)
|> AWS.Client.put_endpoint(fn options -> "#{options.region}.telnyxcloudstorage.com" end)
# create a bucket
bucket_name = System.get_env("TELNYX_STORAGE_BUCKET_NAME", "my-test-bucket-#{Enum.random(1..1_000_000)}")
{:ok, _, _} = AWS.S3.create_bucket(telnyx_storage_client, bucket_name, %{})
# write a couple of objects to the bucket
for i <- 1..2 do
object_key = "object-#{i}.bin"
# create a blob of random bytes
upload_request = %{
"Body" => :rand.bytes(42),
"ContentType" => "application/octet-stream"
}
{:ok, _, _} = AWS.S3.put_object(telnyx_storage_client, bucket_name, object_key, upload_request)
end
# list contents of a bucket
{:ok, %{"ListBucketResult" => bucket_details}, _} = AWS.S3.list_objects(telnyx_storage_client, bucket_name)
# print the object keys
Enum.each(bucket_details["Contents"], fn content ->
IO.puts("Object key: #{content["Key"]}")
end)
# download the first object
object_key = List.first(bucket_details["Contents"])["Key"]
{:ok, %{"Body" => object_data}, _} = AWS.S3.get_object(telnyx_storage_client, bucket_name, object_key)
IO.puts("Downloaded object data: #{inspect(object_data)}")
Report incorrect code
Copy
Ask AI
{:req, "~> 0.5"},
{:jason, "~> 1.4"}
Report incorrect code
Copy
Ask AI
url = "https://api.telnyx.com/v2/storage/buckets/#{bucket_name}/#{object_key}/presigned_url"
api_key = System.fetch_env!("TELNYX_V2_API_KEY")
headers = %{
"authorization" => "Bearer #{api_key}",
"content_type" => "application/json",
"accept" => "application/json"
}
body = %{
"ttl" => 30
}
{:ok, %{body: %{"data" => %{"presigned_url" => presigned_url}}}} = Req.post(url, headers: headers, json: body)
# download the object using the presigned url
{:ok, %{body: object_data}} = Req.get(presigned_url)
IO.puts("Downloaded object data using presigned URL: #{inspect(object_data)}")