<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: aws code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 27 Jul 2008 02:17:46 GMT</pubDate>
    <description>DZone Snippets: aws code</description>
    <item>
      <title>Rake task to set all S3 files public_read</title>
      <link>http://snippets.dzone.com/posts/show/5766</link>
      <description>//  If you ever need to make sure all your Amazon S3 files are set to public_read, here's a rake task&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;namespace :s3 do&lt;br /&gt;  desc "Make all objects in S3 public_read"&lt;br /&gt;  task :make_public_readable do&lt;br /&gt;    require 'aws/s3'&lt;br /&gt;    # you might have this setup as env vars, doesn't work for me as i have more than one AWS account&lt;br /&gt;    AWS::S3::Base.establish_connection!(:access_key_id =&gt; '',:secret_access_key =&gt; '')    &lt;br /&gt;    &lt;br /&gt;    marker = ""&lt;br /&gt;    &lt;br /&gt;    loop do&lt;br /&gt;      objects = AWS::S3::Bucket.objects('your_bucket', :marker=&gt;marker, :max_keys=&gt;100)&lt;br /&gt;      puts "found #{objects.size} objects"&lt;br /&gt;    &lt;br /&gt;      break if objects.size == 0&lt;br /&gt;    &lt;br /&gt;      marker = objects.last.key&lt;br /&gt;      puts "new marker is \"#{marker}\""&lt;br /&gt;    &lt;br /&gt;      public_grant = AWS::S3::ACL::Grant.grant :public_read&lt;br /&gt;  &lt;br /&gt;      objects.each do |o|&lt;br /&gt;        if not o.acl.grants.include? public_grant&lt;br /&gt;          puts "\"#{o.key}\" does not include public_read"&lt;br /&gt;          o.acl.grants &lt;&lt; public_grant&lt;br /&gt;          o.acl(o.acl)&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 15 Jul 2008 01:00:37 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5766</guid>
      <author>spiceee (Spiceee)</author>
    </item>
    <item>
      <title>upload_to_s3 - Ruby S3 upload client</title>
      <link>http://snippets.dzone.com/posts/show/4088</link>
      <description>Prerequisites:&lt;br /&gt;gem install aws-s3&lt;br /&gt;gem install main&lt;br /&gt;&lt;br /&gt;&lt;code&gt;#!/bin/env ruby&lt;br /&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'main'&lt;br /&gt;require 'aws/s3'&lt;br /&gt;include AWS::S3&lt;br /&gt;&lt;br /&gt;Main {&lt;br /&gt;  argument('source_filename') {&lt;br /&gt;    cast :string&lt;br /&gt;    description 'source filename to copy to S3'&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  argument('bucket_name') {&lt;br /&gt;    cast :string&lt;br /&gt;    description 'bucket to place the file in on S3'&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  option('access_key_id') {&lt;br /&gt;    argument :optional&lt;br /&gt;    description 'specify the access_key_id manually'&lt;br /&gt;    default 'put your access key here if you want'&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  option('secret_access_key') {&lt;br /&gt;    argument :optional&lt;br /&gt;    description 'specify the secret key manually'&lt;br /&gt;    default 'put your secret key here if you want'&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  def run&lt;br /&gt;    bucket_name = params['bucket_name'].value&lt;br /&gt;    source_filename = params['source_filename'].value&lt;br /&gt;&lt;br /&gt;    Base.establish_connection!(&lt;br /&gt;      :access_key_id     =&gt; params['access_key_id'].value,&lt;br /&gt;      :secret_access_key =&gt; params['secret_access_key'].value&lt;br /&gt;    )&lt;br /&gt;&lt;br /&gt;    begin&lt;br /&gt;      Bucket.find(bucket_name)&lt;br /&gt;    rescue&lt;br /&gt;      puts "Need to make bucket #{bucket_name}.."&lt;br /&gt;      Bucket.create(bucket_name)&lt;br /&gt;&lt;br /&gt;      # Confirm its existence..&lt;br /&gt;      Bucket.find(bucket_name)&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    puts "Got bucket.."&lt;br /&gt;    puts "Uploading #{File.basename(source_filename)}.."&lt;br /&gt;    S3Object.store(File.basename(source_filename), open(source_filename), bucket_name)&lt;br /&gt;    puts "Stored!"&lt;br /&gt;&lt;br /&gt;    exit_success!&lt;br /&gt;  end&lt;br /&gt;}&lt;/code&gt;</description>
      <pubDate>Fri, 01 Jun 2007 17:21:39 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4088</guid>
      <author>peter (Peter Cooperx)</author>
    </item>
    <item>
      <title>Ruby Client for Amazon Alexa Site Thumbnail (AST) Service</title>
      <link>http://snippets.dzone.com/posts/show/3087</link>
      <description>It's scrappy, but it does the job.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'cgi'&lt;br /&gt;require 'openssl'&lt;br /&gt;require 'base64'&lt;br /&gt;require 'open-uri'&lt;br /&gt;&lt;br /&gt;access_id = 'YOUR_ACCESS_ID'&lt;br /&gt;secret_id = 'YOUR_SECRET_ID'&lt;br /&gt;&lt;br /&gt;source_url = ARGV.first&lt;br /&gt;&lt;br /&gt;timestamp = Time.now.strftime("%Y-%m-%dT%H:%M:%SZ")&lt;br /&gt;sig = Base64.encode64(OpenSSL::HMAC::digest(OpenSSL::Digest::Digest.new('SHA1'), secret_id, 'Thumbnail' + timestamp)).strip&lt;br /&gt;&lt;br /&gt;url = "http://ast.amazonaws.com/Xino?Action=Thumbnail&amp;AWSAccessKeyId=" + access_id&lt;br /&gt;url &lt;&lt; "&amp;Signature=" + CGI.escape(sig)&lt;br /&gt;url &lt;&lt; "&amp;Timestamp=" + CGI.escape(timestamp)&lt;br /&gt;url &lt;&lt; "&amp;Url=" +  source_url&lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;  doc = open(url).read&lt;br /&gt;rescue&lt;br /&gt;  puts "Could not access AWS"&lt;br /&gt;  exit&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;m = doc.match(/\&lt;aws:thumbnail[^\&gt;]+exists=\"true\"\&gt;(.+?)\&lt;\//i)&lt;br /&gt;&lt;br /&gt;if m &amp;&amp; m[1]&lt;br /&gt;  thumb_url = m[1]&lt;br /&gt;  thumb_url.gsub!(/\&amp;amp;/, '&amp;')&lt;br /&gt;  File.open("#{source_url}.jpg", "w") { |f| f.write open(thumb_url).read }&lt;br /&gt;  puts "Saved to #{source_url}.jpg"&lt;br /&gt;elsif m &amp;&amp; m.match(/exists=\"false\"/)&lt;br /&gt;  puts "No thumbnail for #{source_url}"&lt;br /&gt;else&lt;br /&gt;  puts "Error"&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 05 Dec 2006 18:31:27 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3087</guid>
      <author>peter (Peter Cooperx)</author>
    </item>
    <item>
      <title>S3 upload client for Ruby</title>
      <link>http://snippets.dzone.com/posts/show/3062</link>
      <description>Uses Marcel Molina's AWS::S3 gem.. gem install aws-s3&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'aws/s3'&lt;br /&gt;&lt;br /&gt;local_file = ARGV[0]&lt;br /&gt;bucket = ARGV[1]&lt;br /&gt;mime_type = ARGV[2] || "application/octet-stream"&lt;br /&gt;&lt;br /&gt;AWS::S3::Base.establish_connection!(&lt;br /&gt;  :access_key_id     =&gt; 'REPLACE_ME',&lt;br /&gt;  :secret_access_key =&gt; 'REPLACE_ME'&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;base_name = File.basename(local_file)&lt;br /&gt;&lt;br /&gt;puts "Uploading #{local_file} as '#{base_name}' to '#{bucket}'"&lt;br /&gt;&lt;br /&gt;AWS::S3::S3Object.store(&lt;br /&gt;  base_name,&lt;br /&gt;  File.open(local_file),&lt;br /&gt;  bucket,&lt;br /&gt;  :content_type =&gt; mime_type&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;puts "Uploaded!"&lt;/code&gt;</description>
      <pubDate>Thu, 30 Nov 2006 10:27:44 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3062</guid>
      <author>peter (Peter Cooperx)</author>
    </item>
  </channel>
</rss>
