has_bucket 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec7ea7ae46b38236a052c4ba78c19bb29d8344c2
4
- data.tar.gz: b92d96e8b5e6f07679ca447cd9f8e4ca40b75a72
3
+ metadata.gz: c9f518334d6f264fd79af730e3b4dc8314b83d27
4
+ data.tar.gz: 135148b79ceba9bac0ae50e6564a9a40514902c8
5
5
  SHA512:
6
- metadata.gz: 31490558e3bafb25eb4afae3d87a8d3e9c917219d208b305d3564267812f5df9ee916e102cc9f1f2d0df04cad7bd05f8408f4aabf740807375f8feb420ddce45
7
- data.tar.gz: 87b2561613ca600d1ad8e5d45987971c962f5ff10d71f1a6921fe0956efe00d55cf8026b30eaa4042c313a3e7d7351f75762329b167a3225797f9974751d55bc
6
+ metadata.gz: 6eebb62242286d4b6c297a139760c8170f9f40d3bdbcb2cbba6fb4b5d5b261a82e2bb68a5d3b61bb0364a8a34277c0dd2d5e9dbec73a1832adfeb91443fd1c64
7
+ data.tar.gz: 29416124c578e8e1c1ee5b9b5c233c82f769195494704f79a5ee95ff382b49f3ecdd12c6913ad1ae66e1c1ecc10d060fe3bdb66b5d8b02ef197f7b9b1032f343
data/.travis.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.2
3
+ - 2.1.5
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby '2.1.2'
3
+ ruby '2.1.5'
4
4
 
5
5
  # Specify your gem's dependencies in has_bucket.gemspec
6
6
  gemspec
data/has_bucket.gemspec CHANGED
@@ -18,8 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_runtime_dependency "uri_config"
21
+ spec.add_runtime_dependency "mime-types"
22
22
  spec.add_runtime_dependency "s3"
23
+ spec.add_runtime_dependency "uri_config"
23
24
 
24
25
  spec.add_development_dependency "bundler", "~> 1.6"
25
26
  spec.add_development_dependency "rake", "~> 10.0"
@@ -1,6 +1,7 @@
1
1
  require "cgi"
2
2
  require "uri"
3
3
  require "s3"
4
+ require "mime-types"
4
5
 
5
6
  module HasBucket
6
7
  class Facade
@@ -24,6 +25,7 @@ module HasBucket
24
25
  def []=(key, content)
25
26
  s3_object = object(key)
26
27
  s3_object.acl = "private"
28
+ s3_object.content_type = content_type_from_key(key)
27
29
  s3_object.content = content
28
30
  s3_object.save
29
31
  end
@@ -53,5 +55,13 @@ module HasBucket
53
55
  def bucket
54
56
  @service.bucket(@bucket_name)
55
57
  end
58
+
59
+ def content_type_from_key(key)
60
+ if (mime_type = MIME::Types.of(key).find { |mime| !mime.obsolete? })
61
+ mime_type.content_type
62
+ else
63
+ "application/octet-stream"
64
+ end
65
+ end
56
66
  end
57
67
  end
@@ -1,3 +1,3 @@
1
1
  module HasBucket
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,128 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: https://s3.amazonaws.com/jma-2014-test-bucket/foo
6
+ body:
7
+ encoding: UTF-8
8
+ string: bar
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ X-Amz-Acl:
17
+ - private
18
+ X-Amz-Storage-Class:
19
+ - STANDARD
20
+ Content-Type:
21
+ - application/octet-stream
22
+ Content-Length:
23
+ - '3'
24
+ Date:
25
+ - Tue, 14 Apr 2015 04:51:12 GMT
26
+ Content-Md5:
27
+ - N7UdGUp1E+RbVvZSTy1R8g==
28
+ Authorization:
29
+ - AWS AKIAICVNTIM4AWNLWR4Q:2X1mVmvLc7CNporcBhQeSOhdaC4=
30
+ response:
31
+ status:
32
+ code: 200
33
+ message: OK
34
+ headers:
35
+ X-Amz-Id-2:
36
+ - 3xny5kfRG5txFxJEGeEfApNHRtgue9WGV99WEEXXa7q8tcETDjmn1aGhBUssEhAa
37
+ X-Amz-Request-Id:
38
+ - 56FD51C8E1B08B5C
39
+ Date:
40
+ - Tue, 14 Apr 2015 04:51:12 GMT
41
+ Etag:
42
+ - '"37b51d194a7513e45b56f6524f2d51f2"'
43
+ Content-Length:
44
+ - '0'
45
+ Server:
46
+ - AmazonS3
47
+ body:
48
+ encoding: UTF-8
49
+ string: ''
50
+ http_version:
51
+ recorded_at: Tue, 14 Apr 2015 04:51:12 GMT
52
+ - request:
53
+ method: get
54
+ uri: https://s3.amazonaws.com/jma-2014-test-bucket/foo?AWSAccessKeyId=AKIAICVNTIM4AWNLWR4Q&Expires=1428990672&Signature=zFSsiagLAJs0a%2B/JmLYIa6SW/Ug=
55
+ body:
56
+ encoding: US-ASCII
57
+ string: ''
58
+ headers:
59
+ Accept-Encoding:
60
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
61
+ Accept:
62
+ - "*/*"
63
+ User-Agent:
64
+ - Ruby
65
+ response:
66
+ status:
67
+ code: 200
68
+ message: OK
69
+ headers:
70
+ X-Amz-Id-2:
71
+ - "+AurMJjN6HO9VcK30sburpvMiFxh4nAP34Pa8WGaVCfNhg2sV58+CNLul7WczUXY"
72
+ X-Amz-Request-Id:
73
+ - 30AD311FECFA761F
74
+ Date:
75
+ - Tue, 14 Apr 2015 04:51:13 GMT
76
+ Last-Modified:
77
+ - Tue, 14 Apr 2015 04:51:12 GMT
78
+ Etag:
79
+ - '"37b51d194a7513e45b56f6524f2d51f2"'
80
+ Accept-Ranges:
81
+ - bytes
82
+ Content-Type:
83
+ - application/octet-stream
84
+ Content-Length:
85
+ - '3'
86
+ Server:
87
+ - AmazonS3
88
+ body:
89
+ encoding: UTF-8
90
+ string: bar
91
+ http_version:
92
+ recorded_at: Tue, 14 Apr 2015 04:51:12 GMT
93
+ - request:
94
+ method: delete
95
+ uri: https://s3.amazonaws.com/jma-2014-test-bucket/foo
96
+ body:
97
+ encoding: US-ASCII
98
+ string: ''
99
+ headers:
100
+ Accept-Encoding:
101
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
102
+ Accept:
103
+ - "*/*"
104
+ User-Agent:
105
+ - Ruby
106
+ Date:
107
+ - Tue, 14 Apr 2015 04:51:12 GMT
108
+ Authorization:
109
+ - AWS AKIAICVNTIM4AWNLWR4Q:/Cp5RryT3Fu8yNvsP8lxymIoaTc=
110
+ response:
111
+ status:
112
+ code: 204
113
+ message: No Content
114
+ headers:
115
+ X-Amz-Id-2:
116
+ - 7zvdTCCLR8m54NyAFijp/AxyVCpXMZPfd/emV1JQmna+TSY0X2pjDa9Ri+ykywdz
117
+ X-Amz-Request-Id:
118
+ - DCAC02FF003DD68B
119
+ Date:
120
+ - Tue, 14 Apr 2015 04:51:14 GMT
121
+ Server:
122
+ - AmazonS3
123
+ body:
124
+ encoding: UTF-8
125
+ string: ''
126
+ http_version:
127
+ recorded_at: Tue, 14 Apr 2015 04:51:12 GMT
128
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,128 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: https://s3.amazonaws.com/jma-2014-test-bucket/foo.csv
6
+ body:
7
+ encoding: UTF-8
8
+ string: bar
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Ruby
16
+ X-Amz-Acl:
17
+ - private
18
+ X-Amz-Storage-Class:
19
+ - STANDARD
20
+ Content-Type:
21
+ - text/csv
22
+ Content-Length:
23
+ - '3'
24
+ Date:
25
+ - Tue, 14 Apr 2015 04:51:14 GMT
26
+ Content-Md5:
27
+ - N7UdGUp1E+RbVvZSTy1R8g==
28
+ Authorization:
29
+ - AWS AKIAICVNTIM4AWNLWR4Q:1YIz3ErsndxOkH0UISG9BNRJ5IU=
30
+ response:
31
+ status:
32
+ code: 200
33
+ message: OK
34
+ headers:
35
+ X-Amz-Id-2:
36
+ - mnWYD5qee+S+b70wrwvX3Qr1U+NvR9fMpP+TaGV/a+ULFpU8/pBegdrHvK5G00Sn
37
+ X-Amz-Request-Id:
38
+ - A980057B3C94DBE5
39
+ Date:
40
+ - Tue, 14 Apr 2015 04:51:15 GMT
41
+ Etag:
42
+ - '"37b51d194a7513e45b56f6524f2d51f2"'
43
+ Content-Length:
44
+ - '0'
45
+ Server:
46
+ - AmazonS3
47
+ body:
48
+ encoding: UTF-8
49
+ string: ''
50
+ http_version:
51
+ recorded_at: Tue, 14 Apr 2015 04:51:14 GMT
52
+ - request:
53
+ method: get
54
+ uri: https://s3.amazonaws.com/jma-2014-test-bucket/foo.csv?AWSAccessKeyId=AKIAICVNTIM4AWNLWR4Q&Expires=1428990674&Signature=RDXOhQKpN32vOGUBYph21uCXuT4=
55
+ body:
56
+ encoding: US-ASCII
57
+ string: ''
58
+ headers:
59
+ Accept-Encoding:
60
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
61
+ Accept:
62
+ - "*/*"
63
+ User-Agent:
64
+ - Ruby
65
+ response:
66
+ status:
67
+ code: 200
68
+ message: OK
69
+ headers:
70
+ X-Amz-Id-2:
71
+ - ce3PhV91YP6qK84P+SnN1jVJrHMrTzAWA72AzoX5wYatGzcdY1YUbFnf99nZLaZa
72
+ X-Amz-Request-Id:
73
+ - 918D21AB87DAA90D
74
+ Date:
75
+ - Tue, 14 Apr 2015 04:51:15 GMT
76
+ Last-Modified:
77
+ - Tue, 14 Apr 2015 04:51:15 GMT
78
+ Etag:
79
+ - '"37b51d194a7513e45b56f6524f2d51f2"'
80
+ Accept-Ranges:
81
+ - bytes
82
+ Content-Type:
83
+ - text/csv
84
+ Content-Length:
85
+ - '3'
86
+ Server:
87
+ - AmazonS3
88
+ body:
89
+ encoding: UTF-8
90
+ string: bar
91
+ http_version:
92
+ recorded_at: Tue, 14 Apr 2015 04:51:14 GMT
93
+ - request:
94
+ method: delete
95
+ uri: https://s3.amazonaws.com/jma-2014-test-bucket/foo.csv
96
+ body:
97
+ encoding: US-ASCII
98
+ string: ''
99
+ headers:
100
+ Accept-Encoding:
101
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
102
+ Accept:
103
+ - "*/*"
104
+ User-Agent:
105
+ - Ruby
106
+ Date:
107
+ - Tue, 14 Apr 2015 04:51:14 GMT
108
+ Authorization:
109
+ - AWS AKIAICVNTIM4AWNLWR4Q:CmPC9uXXNUixGgGcMBRDikEsSn8=
110
+ response:
111
+ status:
112
+ code: 204
113
+ message: No Content
114
+ headers:
115
+ X-Amz-Id-2:
116
+ - Kih+P/FatFdXtYuHVGaWKauat9PauKRLwnCJel5j7s0Z8tNCekMjri/jKMVF4QF9
117
+ X-Amz-Request-Id:
118
+ - 575C4CFF28FCEBEA
119
+ Date:
120
+ - Tue, 14 Apr 2015 04:51:16 GMT
121
+ Server:
122
+ - AmazonS3
123
+ body:
124
+ encoding: UTF-8
125
+ string: ''
126
+ http_version:
127
+ recorded_at: Tue, 14 Apr 2015 04:51:14 GMT
128
+ recorded_with: VCR 2.9.3
@@ -30,6 +30,25 @@ describe HasBucket do
30
30
  expect(subject).to_not include(key)
31
31
  end
32
32
 
33
+ it "should default content_type when not specified", :vcr do
34
+ subject[key] = value
35
+ response = Net::HTTP.get_response(URI(subject.url_for(key)))
36
+
37
+ expect(response["Content-Type"]).to eq("application/octet-stream")
38
+
39
+ subject.delete(key)
40
+ end
41
+
42
+ it "should determine content_type from extension", :vcr do
43
+ key = "foo.csv"
44
+ subject[key] = value
45
+ response = Net::HTTP.get_response(URI(subject.url_for(key)))
46
+
47
+ expect(response["Content-Type"]).to eq("text/csv")
48
+
49
+ subject.delete(key)
50
+ end
51
+
33
52
  it "#prefixed_with should allow for directory-like keys", :vcr do
34
53
  subject["other/bar"] = "bar"
35
54
  subject["foo/bar"] = "bar"
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_bucket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathon M. Abbott
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-05 00:00:00.000000000 Z
11
+ date: 2015-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: uri_config
14
+ name: mime-types
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: uri_config
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -159,6 +173,8 @@ files:
159
173
  - spec/cassettes/HasBucket/_object_keys_should_return_all_object_keys.yml
160
174
  - spec/cassettes/HasBucket/_prefixed_with_should_allow_for_directory-like_keys.yml
161
175
  - spec/cassettes/HasBucket/should_allow_storage_of_blobs_on_S3.yml
176
+ - spec/cassettes/HasBucket/should_default_content_type_when_not_specified.yml
177
+ - spec/cassettes/HasBucket/should_determine_content_type_from_extension.yml
162
178
  - spec/has_bucket_spec.rb
163
179
  - spec/spec_helper.rb
164
180
  homepage: https://github.com/JonathonMA/has_bucket
@@ -181,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
197
  version: '0'
182
198
  requirements: []
183
199
  rubyforge_project:
184
- rubygems_version: 2.4.2
200
+ rubygems_version: 2.2.2
185
201
  signing_key:
186
202
  specification_version: 4
187
203
  summary: i has an S3 bucket
@@ -189,6 +205,7 @@ test_files:
189
205
  - spec/cassettes/HasBucket/_object_keys_should_return_all_object_keys.yml
190
206
  - spec/cassettes/HasBucket/_prefixed_with_should_allow_for_directory-like_keys.yml
191
207
  - spec/cassettes/HasBucket/should_allow_storage_of_blobs_on_S3.yml
208
+ - spec/cassettes/HasBucket/should_default_content_type_when_not_specified.yml
209
+ - spec/cassettes/HasBucket/should_determine_content_type_from_extension.yml
192
210
  - spec/has_bucket_spec.rb
193
211
  - spec/spec_helper.rb
194
- has_rdoc: