has_bucket 0.0.3 → 0.0.4

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.
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: