s3batch 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,7 +39,7 @@ module S3Batch
39
39
 
40
40
  def self.run s3id, s3key, bucket, dir, pattern
41
41
  EM.run {
42
- items = Upload.new bucket, dir, pattern, :aws_access_key_id => s3id, :aws_secret_access_key => s3key, :protocol => 'http', :permissions => 'public-read'
42
+ items = S3Batch::Upload.new bucket, dir, pattern, :aws_access_key_id => s3id, :aws_secret_access_key => s3key, :protocol => 'http', :permissions => 'public-read'
43
43
  items.upload
44
44
  }
45
45
  end
@@ -58,7 +58,7 @@ module S3Batch
58
58
  end
59
59
 
60
60
  def check_md5_and_upload keys
61
- manager = TaskManager.new
61
+ manager = S3Batch::TaskManager.new
62
62
  on_error = Proc.new {|response| puts "An error occured: #{response.response_header.status}"; manager.remove; }
63
63
  on_success = Proc.new {|response| manager.remove; }
64
64
 
@@ -72,7 +72,10 @@ module S3Batch
72
72
  if keys[key] != md5
73
73
  puts "uploading #{key} to #{@bucket}"
74
74
  item = Happening::S3::Item.new(@bucket, key, @options)
75
- item.put(content, :on_error => on_error, :on_success => on_success)
75
+ headers = {}
76
+ type = MIME::Types.type_for(key).first
77
+ headers['Content-Type'] = type if type
78
+ item.put(content, :on_error => on_error, :on_success => on_success, :headers => headers)
76
79
  manager.add
77
80
  else
78
81
  puts "ignore #{key}, no change"
@@ -81,6 +84,5 @@ module S3Batch
81
84
 
82
85
  manager.end_adding
83
86
  end
84
-
85
87
  end
86
88
  end
@@ -7,6 +7,7 @@ module Happening
7
7
  def canonical_request_description(method, path, headers = {}, expires = nil)
8
8
  description = old_canonical_request_description(method, path, headers, expires)
9
9
  description << '?delete' if path[/[&?]delete($|&|=)/]
10
+ description << '?website' if path[/[&?]website($|&|=)/]
10
11
  description
11
12
  end
12
13
  end
@@ -26,12 +26,12 @@ module S3Batch
26
26
  end
27
27
  end
28
28
 
29
- def run s3id, s3key, bucket, keys
29
+ def self.run s3id, s3key, bucket, keys
30
30
  EM.run {
31
31
  on_error = Proc.new {|response| puts "An error occured: #{response.response}"; EM.stop }
32
32
  on_success = Proc.new {|response| puts "Deleted!"; EM.stop }
33
- items = Delete.new bucket, keys, :aws_access_key_id => s3id, :aws_secret_access_key => s3key, :protocol => 'http'
34
- items.delete(:on_error => on_error, :on_success => on_success)
33
+ items = S3Batch::Delete.new bucket, keys, :aws_access_key_id => s3id, :aws_secret_access_key => s3key, :protocol => 'http'
34
+ items.delete(:on_error => on_error, :on_success => on_success)
35
35
  }
36
36
  end
37
37
  end
@@ -0,0 +1,35 @@
1
+ module S3Batch
2
+ class WebsiteEnabler < Happening::S3::Item
3
+ def path(with_bucket=true)
4
+ with_bucket ? "/#{bucket}/?website" : "/?website"
5
+ end
6
+
7
+ def enable index_doc, error_doc, request_options = {}, &blk
8
+ data =<<EOF
9
+ <WebsiteConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
10
+ <IndexDocument>
11
+ <Suffix>#{index_doc}</Suffix>
12
+ </IndexDocument>
13
+ <ErrorDocument>
14
+ <Key>#{error_doc}</Key>
15
+ </ErrorDocument>
16
+ </WebsiteConfiguration>
17
+ EOF
18
+
19
+ md5 = Base64.encode64(Digest::MD5.digest(data)).strip
20
+ headers = aws.sign("PUT", path, {"Content-MD5" => md5})
21
+ request_options[:on_success] = blk if blk
22
+ request_options.update(:headers => headers, :data => data)
23
+ Happening::S3::Request.new(:put, url, {:ssl => options[:ssl]}.update(request_options)).execute
24
+ end
25
+
26
+ def self.run s3id, s3key, bucket, index_doc = "index.html", error_doc = "404.html"
27
+ EM.run {
28
+ on_error = Proc.new {|response| puts "An error occured: #{response.response}"; EM.stop; }
29
+ on_success = Proc.new {|response| puts "Enabled #{response.response}"; EM.stop; }
30
+ item = S3Batch::WebsiteEnabler.new(bucket, "NO_USE", :aws_access_key_id => s3id, :aws_secret_access_key => s3key, :protocol => 'http')
31
+ item.enable(index_doc, error_doc, :on_error => on_error, :on_success => on_success)
32
+ }
33
+ end
34
+ end
35
+ end
data/lib/s3batch.rb CHANGED
@@ -1,9 +1,11 @@
1
1
  require 'happening'
2
2
  require 'nokogiri'
3
+ require 'mime/types'
3
4
 
4
5
  require File.expand_path(File.dirname(__FILE__) + '/s3batch/happening_patch')
5
6
  require File.expand_path(File.dirname(__FILE__) + '/s3batch/multi_delete')
6
7
  require File.expand_path(File.dirname(__FILE__) + '/s3batch/batch_upload')
8
+ require File.expand_path(File.dirname(__FILE__) + '/s3batch/website_enabler')
7
9
 
8
10
  #ruby s3batch.rb S3ID S3KEY BUCKET DIR
9
11
  if $0 == __FILE__
@@ -13,6 +15,8 @@ if $0 == __FILE__
13
15
  dir = ARGV[3]
14
16
  pattern = ARGV[4] || "**/*"
15
17
 
16
- S3Batch::Upload.run s3id, s3key, bucket, dir, pattern
18
+ S3Batch::WebsiteEnabler.run s3id, s3key, bucket
19
+ #S3Batch::Upload.run s3id, s3key, bucket, dir, pattern
20
+ #S3Batch::Delete.run s3id, s3key, bucket, [dir]
17
21
  end
18
22
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3batch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-05-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: happening
16
- requirement: &68897600 !ruby/object:Gem::Requirement
16
+ requirement: &72777590 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *68897600
24
+ version_requirements: *72777590
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &68897130 !ruby/object:Gem::Requirement
27
+ requirement: &72777260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,18 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *68897130
35
+ version_requirements: *72777260
36
+ - !ruby/object:Gem::Dependency
37
+ name: mime-types
38
+ requirement: &72701030 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *72701030
36
47
  description:
37
48
  email:
38
49
  - yong@intridea.com
@@ -42,6 +53,7 @@ extra_rdoc_files: []
42
53
  files:
43
54
  - lib/s3batch/multi_delete.rb
44
55
  - lib/s3batch/batch_upload.rb
56
+ - lib/s3batch/website_enabler.rb
45
57
  - lib/s3batch/happening_patch.rb
46
58
  - lib/s3batch.rb
47
59
  homepage: http://github.com/yong/s3batch