frenetic 0.0.2.alpha5 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
23
23
 
24
24
  gem.add_development_dependency 'guard-spork', '~> 0.7.1'
25
25
  gem.add_development_dependency 'guard-rspec', '~> 1.0.1'
26
- gem.add_development_dependency 'rspec', '~> 2.10.0'
26
+ gem.add_development_dependency 'rspec', '~> 2.11.0'
27
27
  gem.add_development_dependency 'bourne', '~> 1.1.2'
28
28
  gem.add_development_dependency 'webmock', '~> 1.8.7'
29
29
  gem.add_development_dependency 'vcr', '~> 2.2.2'
@@ -22,6 +22,8 @@ class Frenetic
22
22
  def initialize( config = {} )
23
23
  config = Configuration.new( config )
24
24
 
25
+ yield config if block_given?
26
+
25
27
  api_url = Addressable::URI.parse( config[:url] )
26
28
  @root_url = api_url.path
27
29
 
@@ -29,6 +31,8 @@ class Frenetic
29
31
  builder.use HalJson
30
32
  builder.request :basic_auth, config[:username], config[:password]
31
33
 
34
+ builder.response :logger if config[:response][:use_logger]
35
+
32
36
  if config[:cache]
33
37
  builder.use FaradayMiddleware::RackCompatible, Rack::Cache::Context, config[:cache]
34
38
  end
@@ -14,6 +14,7 @@ class Frenetic
14
14
  config[:username] = config[:api_key] if config[:api_key]
15
15
  config[:headers] ||= {}
16
16
  config[:request] ||= {}
17
+ config[:response] ||= {}
17
18
 
18
19
  config[:headers][:accept] ||= "application/hal+json"
19
20
 
@@ -42,7 +43,7 @@ class Frenetic
42
43
 
43
44
  def configure_cache
44
45
  if self[:cache]
45
- ignore_headers = (self[:cache][:ignore_headers] || '').split(' ')
46
+ ignore_headers = self[:cache][:ignore_headers] || []
46
47
 
47
48
  self[:cache][:ignore_headers] = (ignore_headers + %w[Set-Cookie X-Content-Digest]).uniq
48
49
  end
@@ -70,20 +71,13 @@ class Frenetic
70
71
 
71
72
  # TODO: Is this even being used?
72
73
  def config_file
73
- config_path = File.join( 'config', 'frenetic.yml' )
74
+ path = File.join 'config/frenetic.yml'
75
+ config = YAML.load_file( path )
76
+ env = ENV['RAILS_ENV'] || ENV['RACK_ENV']
74
77
 
75
- if File.exists? config_path
76
- config = YAML.load_file( config_path )
77
- env = ENV['RAILS_ENV'] || ENV['RACK_ENV']
78
-
79
- if config and config.has_key? env
80
- config[env]
81
- else
82
- {}
83
- end
84
- else
85
- {}
86
- end
78
+ config[env] || {}
79
+ rescue Errno::ENOENT, NoMethodError
80
+ {}
87
81
  end
88
82
 
89
83
  def symbolize_keys( arg )
@@ -1,3 +1,3 @@
1
1
  class Frenetic
2
- VERSION = "0.0.2.alpha5"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -7,6 +7,9 @@ describe Frenetic::Configuration do
7
7
  'headers' => {
8
8
  'accept' => content_type,
9
9
  },
10
+ 'response' => {
11
+ 'use_logger' => true
12
+ },
10
13
  'request' => {
11
14
  'timeout' => 10000
12
15
  }
@@ -32,9 +35,15 @@ describe Frenetic::Configuration do
32
35
  it { should include(:url) }
33
36
 
34
37
  it { should_not include(:unknown => 'option')}
38
+
39
+ it "should set default response options" do
40
+ subject[:response][:use_logger].should == true
41
+ end
42
+
35
43
  it "should set default request options" do
36
44
  subject[:request][:timeout].should == 10000
37
45
  end
46
+
38
47
  it "should set a User Agent request header" do
39
48
  subject[:headers][:user_agent].should =~ %r{Frenetic v.+; \S+$}
40
49
  end
@@ -1,9 +1,11 @@
1
1
  describe Frenetic do
2
- let(:client) { Frenetic.new }
2
+ let(:client) { described_class.new }
3
+
3
4
  let(:config) { {
4
- :url => 'http://example.org:5447/api',
5
- :api_key => '1234567890',
6
- :version => 'v1'
5
+ url: 'http://example.org:5447/api',
6
+ api_key: '1234567890',
7
+ version: 'v1',
8
+ response: {}
7
9
  } }
8
10
 
9
11
  before { Frenetic::Configuration.stubs(:new).returns(config) }
@@ -20,23 +22,37 @@ describe Frenetic do
20
22
 
21
23
  its(:connection) { should be_a(Faraday::Connection) }
22
24
 
23
- describe "#connection" do
24
- before do
25
- faraday_stub = Faraday.new
26
- Faraday.stubs(:new).returns( faraday_stub )
27
-
28
- client
25
+ it 'should accept a configuration block' do
26
+ described_class.new( config ) do |cfg|
27
+ cfg.should == config
29
28
  end
29
+ end
30
+
31
+ describe "#connection" do
32
+ let(:connection) { client.connection }
30
33
 
31
34
  subject { client.connection }
32
35
 
33
- it { should be_a(Faraday::Connection) }
36
+ it { should be_a Faraday::Connection }
34
37
 
35
38
  it "should be created" do
39
+ faraday_stub = Faraday.new
40
+ Faraday.stubs(:new).returns( faraday_stub )
41
+
42
+ client
43
+
36
44
  Faraday.should have_received(:new).with() { |config|
37
45
  config.has_key? :url
38
46
  }
39
47
  end
48
+
49
+ describe 'logger configuration' do
50
+ before { config[:response][:use_logger] = true }
51
+
52
+ subject { connection.builder.handlers.collect(&:name) }
53
+
54
+ it { should include 'Faraday::Response::Logger' }
55
+ end
40
56
  end
41
57
 
42
58
  describe "#description" do
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frenetic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.alpha5
5
- prerelease: 6
4
+ version: 0.0.3
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Derek Lindahl
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-29 00:00:00.000000000 Z
12
+ date: 2012-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
16
- requirement: &2151913920 !ruby/object:Gem::Requirement
16
+ requirement: &2164705080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.8.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2151913920
24
+ version_requirements: *2164705080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: faraday_middleware
27
- requirement: &2151912140 !ruby/object:Gem::Requirement
27
+ requirement: &2164719480 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.8.7
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2151912140
35
+ version_requirements: *2164719480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rack-cache
38
- requirement: &2151926360 !ruby/object:Gem::Requirement
38
+ requirement: &2164717740 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '1.1'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2151926360
46
+ version_requirements: *2164717740
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: addressable
49
- requirement: &2151925080 !ruby/object:Gem::Requirement
49
+ requirement: &2164716900 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.2.8
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2151925080
57
+ version_requirements: *2164716900
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: patron
60
- requirement: &2151923860 !ruby/object:Gem::Requirement
60
+ requirement: &2164716220 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.4.18
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2151923860
68
+ version_requirements: *2164716220
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-spork
71
- requirement: &2151922960 !ruby/object:Gem::Requirement
71
+ requirement: &2164715380 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.7.1
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2151922960
79
+ version_requirements: *2164715380
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: guard-rspec
82
- requirement: &2151922060 !ruby/object:Gem::Requirement
82
+ requirement: &2164714260 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,21 +87,21 @@ dependencies:
87
87
  version: 1.0.1
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2151922060
90
+ version_requirements: *2164714260
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rspec
93
- requirement: &2151920740 !ruby/object:Gem::Requirement
93
+ requirement: &2164725920 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
97
97
  - !ruby/object:Gem::Version
98
- version: 2.10.0
98
+ version: 2.11.0
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2151920740
101
+ version_requirements: *2164725920
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: bourne
104
- requirement: &2151936100 !ruby/object:Gem::Requirement
104
+ requirement: &2164724580 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 1.1.2
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *2151936100
112
+ version_requirements: *2164724580
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: webmock
115
- requirement: &2151935220 !ruby/object:Gem::Requirement
115
+ requirement: &2164722520 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.8.7
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *2151935220
123
+ version_requirements: *2164722520
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: vcr
126
- requirement: &2151933480 !ruby/object:Gem::Requirement
126
+ requirement: &2164736740 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: 2.2.2
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *2151933480
134
+ version_requirements: *2164736740
135
135
  description: An opinionated Ruby-based Hypermedia API client.
136
136
  email:
137
137
  - dlindahl@customink.com
@@ -178,9 +178,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
178
  required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  none: false
180
180
  requirements:
181
- - - ! '>'
181
+ - - ! '>='
182
182
  - !ruby/object:Gem::Version
183
- version: 1.3.1
183
+ version: '0'
184
184
  requirements: []
185
185
  rubyforge_project:
186
186
  rubygems_version: 1.8.10