defog 0.6.1 → 0.7.0

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.
@@ -0,0 +1,6 @@
1
+ rvm:
2
+ - 1.9.2
3
+ - 1.9.3
4
+ notifications:
5
+ recipients:
6
+ - ronen@barzel.org
@@ -1,5 +1,8 @@
1
1
  = defog
2
2
 
3
+ {<img src="https://secure.travis-ci.org/ronen/defog.png"/>}[http://travis-ci.org/ronen/defog]
4
+ {<img src="https://gemnasium.com/ronen/defog.png" alt="Dependency Status" />}[https://gemnasium.com/ronen/defog]
5
+
3
6
  Defog wraps the fog[https://rubygems.org/gems/fog] gem (specifically,
4
7
  {Fog::Storage}[http://fog.io/1.3.1/storage/]), providing access to files
5
8
  stored in the cloud via proxy files on the local file system.
@@ -19,12 +22,6 @@ Defog also provides a few simple remote-file management methods to minimize
19
22
  the need to dig down into the Fog layer; but full access to the underlying
20
23
  fog objects is available should it be needed.
21
24
 
22
- <b>NOTE:</b> Currently the only supported providers are :local and :AWS since
23
- those are what the author currently uses. Please fork and add others!
24
- (There's just a very small amount of provider-specific code in {one
25
- file}[https://github.com/ronen/defog/blob/master/lib/defog/fog_wrapper.rb],
26
- plus spec examples.)
27
-
28
25
  == Usage Summary
29
26
 
30
27
  Full Rdoc is available at http://rubydoc.info/gems/defog
@@ -216,8 +213,23 @@ Gemfile:
216
213
 
217
214
  == Compatibility
218
215
 
219
- Defog has (so far) been tested on MRI 1.9.3 using
220
- fog[https://rubygems.org/gems/fog] storage providers :local and :AWS
216
+ Defog is currently known to work on:
217
+
218
+ * Ruby: MRI 1.9.2, MRI 1.9.3
219
+ * Fog Storage: :local, :AWS
220
+
221
+ The above storage providers are what the author uses. Please fork and add
222
+ others! (There's just a very small amount of provider-specific code in {one
223
+ file}[https://github.com/ronen/defog/blob/master/lib/defog/fog_wrapper.rb],
224
+ plus spec examples.)
225
+
226
+ == History
227
+
228
+ Release Notes:
229
+
230
+ * 0.7.0 - Add :query option to Handle#url
231
+ * 0.6.1 - Bug fix (caching)
232
+ * 0.6.0 - Add logging
221
233
 
222
234
  == Copyright
223
235
 
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
3
 
4
+ task :default => :spec
5
+
4
6
  require 'rspec/core/rake_task'
5
7
  RSpec::Core::RakeTask.new(:spec) do |spec|
6
8
  spec.rspec_opts = '-Ispec'
@@ -89,7 +89,7 @@ module Defog #:nodoc: all
89
89
  Digest::MD5.hexdigest(fog_head(key).body)
90
90
  end
91
91
 
92
- def url(key, expiry)
92
+ def url(key, options={})
93
93
  localpath = Pathname.new("#{@local_root}/#{@prefix}#{key}").expand_path
94
94
  if defined?(Rails)
95
95
  relative = localpath.relative_path_from Rails.root + "public" rescue nil
@@ -116,8 +116,10 @@ module Defog #:nodoc: all
116
116
  fog_head(key).etag
117
117
  end
118
118
 
119
- def url(key, expiry)
120
- fog_head(key).url(expiry)
119
+ def url(key, options={})
120
+ options = options.keyword_args(:expiry => :required, :query => :optional)
121
+ expiry = options.delete(:expiry)
122
+ fog_head(key).url(expiry, options)
121
123
  end
122
124
 
123
125
  end
@@ -60,19 +60,25 @@ module Defog
60
60
  fog_model.andand.last_modified
61
61
  end
62
62
 
63
- # Returns a URL to access the remote cloud file.
63
+ # Returns a URL to access the remote cloud file. The options are
64
+ # storage-specific.
64
65
  #
65
- # The option
66
+ # For :AWS files, the option
66
67
  # :expiry => time
67
- # Specifies the expiration of time-limited URLS when using :AWS. The default is
68
- # <code>Time.now + 10.minutes</code>. The expiry is ignored when using :local
68
+ # is required and specifies the expiration of time-limited URLS when
69
+ # using :AWS. The default is <code>Time.now + 10.minutes</code>.
70
+ # The option
71
+ # :query => { ... }
72
+ # is optional and is passed directly to fog. Example usage might be
73
+ # :query => {'response-content-disposition' => 'attachment'}
69
74
  #
70
- # For :local cloud files, if Rails is defined and the file is in the
71
- # Rails app's public directory, returns a site path relative to
72
- # the public directory. Otherwise returns a <code>"file://"</code> URL
75
+ # For :local cloud files, all options are ignored. If Rails is defined
76
+ # and the file is in Rails app's public directory, returns a path
77
+ # relative to the public directory. Otherwise returns a
78
+ # <code>"file://"</code> URL
73
79
  def url(opts={})
74
- opts = opts.keyword_args(:expiry => Time.now + 10*60)
75
- @proxy.fog_wrapper.url(@key, opts.expiry)
80
+ opts = opts.keyword_args(:expiry => Time.now + 10*60, :query => :optional)
81
+ @proxy.fog_wrapper.url(@key, opts)
76
82
  end
77
83
 
78
84
  # Returns the underlying Fog::Model, should you need it for something.
@@ -1,3 +1,3 @@
1
1
  module Defog
2
- VERSION = "0.6.1"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -51,9 +51,9 @@ shared_examples "read" do
51
51
 
52
52
  it "should pass encodings through" do
53
53
  create_remote("encode me")
54
- @proxy.file(key, "#{@mode}:EUC-JP:UTF-16") do |file|
54
+ @proxy.file(key, "#{@mode}:EUC-JP:UTF-8") do |file|
55
55
  file.external_encoding.name.should == "EUC-JP"
56
- file.internal_encoding.name.should == "UTF-16"
56
+ file.internal_encoding.name.should == "UTF-8"
57
57
  end
58
58
  end
59
59
 
@@ -116,6 +116,18 @@ describe Defog::Handle do
116
116
  args = {:provider => :AWS, :aws_access_key_id => "dummyid", :aws_secret_access_key => "dummysecret", :region => "eu-west-1", :bucket => "tester"}
117
117
  it_should_behave_like "a handle", args
118
118
 
119
+ it "should pass url query options to fog" do
120
+ @proxy = Defog::Proxy.new(args)
121
+
122
+ create_remote("reach out to me")
123
+ t = Time.now + 10*60
124
+ #Fog::Storage::AWS::File.any_instance.should_receive(:url).with(t, "response-content-disposition" => "attachment")
125
+ url = @proxy.file(key).url(:expiry => t, :query => {"response-content-disposition" => "attachment"})
126
+ puts url
127
+ url.should include "response-content-disposition=attachment"
128
+ end
129
+
130
+
119
131
  end
120
132
 
121
133
  end
@@ -218,8 +218,8 @@ shared_examples "a proxy" do |args|
218
218
  proxy_path.should_not be_exist
219
219
  other_proxy_path("a").should be_exist
220
220
  other_proxy_path("b").should be_exist
221
- other_proxy_path("r").should be_exist
222
- other_proxy_path("s").should be_exist
221
+ other_proxy_path("R").should be_exist
222
+ other_proxy_path("S").should be_exist
223
223
  end
224
224
  end
225
225
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: defog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-01 00:00:00.000000000 Z
12
+ date: 2012-06-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
16
- requirement: &70295900380220 !ruby/object:Gem::Requirement
16
+ requirement: &70218300244080 !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: *70295900380220
24
+ version_requirements: *70218300244080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hash_keyword_args
27
- requirement: &70295900379640 !ruby/object:Gem::Requirement
27
+ requirement: &70218300243200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70295900379640
35
+ version_requirements: *70218300243200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fastandand
38
- requirement: &70295900379020 !ruby/object:Gem::Requirement
38
+ requirement: &70218300242260 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70295900379020
46
+ version_requirements: *70218300242260
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &70295900378340 !ruby/object:Gem::Requirement
49
+ requirement: &70218300241500 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70295900378340
57
+ version_requirements: *70218300241500
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &70295900377800 !ruby/object:Gem::Requirement
60
+ requirement: &70218300240880 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70295900377800
68
+ version_requirements: *70218300240880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
- requirement: &70295900376820 !ruby/object:Gem::Requirement
71
+ requirement: &70218300240200 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70295900376820
79
+ version_requirements: *70218300240200
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: simplecov-gem-adapter
82
- requirement: &70295900362380 !ruby/object:Gem::Requirement
82
+ requirement: &70218300239480 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70295900362380
90
+ version_requirements: *70218300239480
91
91
  description: Wrapper to fog gem, proxying access to cloud files as local files.
92
92
  email:
93
93
  - ronen@barzel.org
@@ -96,6 +96,7 @@ extensions: []
96
96
  extra_rdoc_files: []
97
97
  files:
98
98
  - .gitignore
99
+ - .travis.yml
99
100
  - Gemfile
100
101
  - LICENSE
101
102
  - README.rdoc