swd 0.0.4 → 0.0.5

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.
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - jruby
6
+ - ree
data/Gemfile CHANGED
@@ -1,2 +1,7 @@
1
1
  source "http://rubygems.org"
2
+
3
+ platform :jruby do
4
+ gem 'jruby-openssl', '>= 0.7'
5
+ end
6
+
2
7
  gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- swd (0.0.2)
4
+ swd (0.0.4)
5
5
  activesupport (>= 3)
6
6
  attr_required (>= 0.0.3)
7
7
  httpclient (>= 2.2.1)
@@ -11,14 +11,16 @@ PATH
11
11
  GEM
12
12
  remote: http://rubygems.org/
13
13
  specs:
14
- activesupport (3.0.10)
14
+ activesupport (3.1.0)
15
+ multi_json (~> 1.0)
15
16
  addressable (2.2.6)
16
17
  attr_required (0.0.3)
17
18
  crack (0.1.8)
18
- diff-lcs (1.1.2)
19
+ diff-lcs (1.1.3)
19
20
  httpclient (2.2.1)
20
21
  i18n (0.6.0)
21
- json (1.5.3)
22
+ json (1.5.4)
23
+ multi_json (1.0.3)
22
24
  rake (0.9.2)
23
25
  rcov (0.9.10)
24
26
  rspec (2.6.0)
@@ -29,7 +31,7 @@ GEM
29
31
  rspec-expectations (2.6.0)
30
32
  diff-lcs (~> 1.1.2)
31
33
  rspec-mocks (2.6.0)
32
- webmock (1.7.4)
34
+ webmock (1.7.5)
33
35
  addressable (> 2.2.5, ~> 2.2)
34
36
  crack (>= 0.1.7)
35
37
 
@@ -37,6 +39,7 @@ PLATFORMS
37
39
  ruby
38
40
 
39
41
  DEPENDENCIES
42
+ jruby-openssl (>= 0.7)
40
43
  rake (>= 0.8)
41
44
  rcov (>= 0.9)
42
45
  rspec (>= 2)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
data/lib/swd/resource.rb CHANGED
@@ -22,7 +22,7 @@ module SWD
22
22
  def discover!(cache_options = {})
23
23
  SWD.cache.fetch(cache_key, cache_options) do
24
24
  handle_response do
25
- HTTPClient.get_content endpoint.to_s
25
+ http_client.get_content endpoint.to_s
26
26
  end
27
27
  end
28
28
  end
@@ -38,6 +38,14 @@ module SWD
38
38
 
39
39
  private
40
40
 
41
+ def http_client
42
+ _http_client_ = HTTPClient.new(
43
+ :agent_name => "SWD (#{VERSION})"
44
+ )
45
+ _http_client_.request_filter << Debugger::RequestFilter.new if SWD.debugging?
46
+ _http_client_
47
+ end
48
+
41
49
  def handle_response
42
50
  res = JSON.parse(yield).with_indifferent_access
43
51
  if redirect = res[:SWD_service_redirect]
data/lib/swd.rb CHANGED
@@ -1,19 +1,53 @@
1
+ require 'logger'
2
+
1
3
  module SWD
4
+ VERSION = ::File.read(
5
+ ::File.join(::File.dirname(__FILE__), '../VERSION')
6
+ )
7
+
2
8
  def self.cache=(cache)
3
9
  @@cache = cache
4
10
  end
5
11
  def self.cache
6
12
  @@cache
7
13
  end
14
+
8
15
  def self.discover!(attributes = {})
9
16
  Resource.new(attributes).discover!(attributes[:cache])
10
17
  end
18
+
19
+ def self.logger
20
+ @@logger
21
+ end
22
+ def self.logger=(logger)
23
+ @@logger = logger
24
+ end
25
+ self.logger = ::Logger.new(STDOUT)
26
+ self.logger.progname = 'SWD'
27
+
28
+ def self.debugging?
29
+ @@debugging
30
+ end
31
+ def self.debugging=(boolean)
32
+ @@debugging = boolean
33
+ end
34
+ def self.debug!
35
+ self.debugging = true
36
+ end
37
+ def self.debug(&block)
38
+ original = self.debugging?
39
+ self.debugging = true
40
+ yield
41
+ ensure
42
+ self.debugging = original
43
+ end
44
+ self.debugging = false
11
45
  end
12
46
 
13
47
  require 'swd/cache'
14
48
  require 'swd/exception'
15
49
  require 'swd/resource'
16
50
  require 'swd/response'
51
+ require 'swd/debugger'
17
52
 
18
- # NOTE: Default Cache doesn't cache anything.
19
53
  SWD.cache = SWD::Cache.new
@@ -70,31 +70,41 @@ describe SWD::Resource do
70
70
  end
71
71
 
72
72
  describe 'error handling' do
73
+ let(:http_client) { resource.send(:http_client) }
74
+ before do
75
+ module SWD
76
+ class Resource
77
+ def http_client
78
+ @http_client ||= HTTPClient.new
79
+ end
80
+ end
81
+ end
82
+ end
73
83
 
74
84
  context 'when invalid SSL cert' do
75
85
  it do
76
- HTTPClient.should_receive(:get_content).and_raise(OpenSSL::SSL::SSLError)
86
+ http_client.should_receive(:get_content).and_raise(OpenSSL::SSL::SSLError)
77
87
  expect { res = resource.discover! }.should raise_error SWD::Exception
78
88
  end
79
89
  end
80
90
 
81
91
  context 'when invalid JSON' do
82
92
  it do
83
- HTTPClient.should_receive(:get_content).and_raise(JSON::ParserError)
93
+ http_client.should_receive(:get_content).and_raise(JSON::ParserError)
84
94
  expect { res = resource.discover! }.should raise_error SWD::Exception
85
95
  end
86
96
  end
87
97
 
88
98
  context 'when SocketError' do
89
99
  it do
90
- HTTPClient.should_receive(:get_content).and_raise(SocketError)
100
+ http_client.should_receive(:get_content).and_raise(SocketError)
91
101
  expect { res = resource.discover! }.should raise_error SWD::Exception
92
102
  end
93
103
  end
94
104
 
95
105
  context 'when BadResponseError without response' do
96
106
  it do
97
- HTTPClient.should_receive(:get_content).and_raise(HTTPClient::BadResponseError.new(''))
107
+ http_client.should_receive(:get_content).and_raise(HTTPClient::BadResponseError.new(''))
98
108
  expect { res = resource.discover! }.should raise_error SWD::Exception
99
109
  end
100
110
  end
data/spec/swd_spec.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe SWD do
4
+ after { SWD.debugging = false }
5
+
6
+ its(:logger) { should be_a Logger }
7
+ its(:debugging?) { should be_false }
4
8
  its(:cache) { should be_a SWD::Cache }
5
9
 
6
10
  describe '#discover!' do
@@ -17,4 +21,26 @@ describe SWD do
17
21
  end
18
22
  end
19
23
  end
24
+
25
+ describe '.debug!' do
26
+ before { SWD.debug! }
27
+ its(:debugging?) { should be_true }
28
+ end
29
+
30
+ describe '.debug' do
31
+ it 'should enable debugging within given block' do
32
+ SWD.debug do
33
+ SWD.debugging?.should be_true
34
+ end
35
+ SWD.debugging?.should be_false
36
+ end
37
+
38
+ it 'should not force disable debugging' do
39
+ SWD.debug!
40
+ SWD.debug do
41
+ SWD.debugging?.should be_true
42
+ end
43
+ SWD.debugging?.should be_true
44
+ end
45
+ end
20
46
  end
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swd
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 21
4
5
  prerelease:
5
- version: 0.0.4
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 5
10
+ version: 0.0.5
6
11
  platform: ruby
7
12
  authors:
8
13
  - nov matake
@@ -10,7 +15,7 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-08-20 00:00:00 Z
18
+ date: 2011-09-10 00:00:00 Z
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: json
@@ -20,6 +25,11 @@ dependencies:
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 1
29
+ segments:
30
+ - 1
31
+ - 4
32
+ - 3
23
33
  version: 1.4.3
24
34
  type: :runtime
25
35
  version_requirements: *id001
@@ -31,6 +41,11 @@ dependencies:
31
41
  requirements:
32
42
  - - ">="
33
43
  - !ruby/object:Gem::Version
44
+ hash: 5
45
+ segments:
46
+ - 2
47
+ - 2
48
+ - 1
34
49
  version: 2.2.1
35
50
  type: :runtime
36
51
  version_requirements: *id002
@@ -42,6 +57,9 @@ dependencies:
42
57
  requirements:
43
58
  - - ">="
44
59
  - !ruby/object:Gem::Version
60
+ hash: 5
61
+ segments:
62
+ - 3
45
63
  version: "3"
46
64
  type: :runtime
47
65
  version_requirements: *id003
@@ -53,6 +71,9 @@ dependencies:
53
71
  requirements:
54
72
  - - ">="
55
73
  - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
56
77
  version: "0"
57
78
  type: :runtime
58
79
  version_requirements: *id004
@@ -64,6 +85,11 @@ dependencies:
64
85
  requirements:
65
86
  - - ">="
66
87
  - !ruby/object:Gem::Version
88
+ hash: 25
89
+ segments:
90
+ - 0
91
+ - 0
92
+ - 3
67
93
  version: 0.0.3
68
94
  type: :runtime
69
95
  version_requirements: *id005
@@ -75,6 +101,10 @@ dependencies:
75
101
  requirements:
76
102
  - - ">="
77
103
  - !ruby/object:Gem::Version
104
+ hash: 27
105
+ segments:
106
+ - 0
107
+ - 8
78
108
  version: "0.8"
79
109
  type: :development
80
110
  version_requirements: *id006
@@ -86,6 +116,10 @@ dependencies:
86
116
  requirements:
87
117
  - - ">="
88
118
  - !ruby/object:Gem::Version
119
+ hash: 25
120
+ segments:
121
+ - 0
122
+ - 9
89
123
  version: "0.9"
90
124
  type: :development
91
125
  version_requirements: *id007
@@ -97,6 +131,9 @@ dependencies:
97
131
  requirements:
98
132
  - - ">="
99
133
  - !ruby/object:Gem::Version
134
+ hash: 7
135
+ segments:
136
+ - 2
100
137
  version: "2"
101
138
  type: :development
102
139
  version_requirements: *id008
@@ -108,6 +145,11 @@ dependencies:
108
145
  requirements:
109
146
  - - ">="
110
147
  - !ruby/object:Gem::Version
148
+ hash: 11
149
+ segments:
150
+ - 1
151
+ - 6
152
+ - 2
111
153
  version: 1.6.2
112
154
  type: :development
113
155
  version_requirements: *id009
@@ -123,6 +165,7 @@ extra_rdoc_files: []
123
165
  files:
124
166
  - .gitignore
125
167
  - .rspec
168
+ - .travis.yml
126
169
  - Gemfile
127
170
  - Gemfile.lock
128
171
  - LICENSE
@@ -157,12 +200,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
200
  requirements:
158
201
  - - ">="
159
202
  - !ruby/object:Gem::Version
203
+ hash: 3
204
+ segments:
205
+ - 0
160
206
  version: "0"
161
207
  required_rubygems_version: !ruby/object:Gem::Requirement
162
208
  none: false
163
209
  requirements:
164
210
  - - ">="
165
211
  - !ruby/object:Gem::Version
212
+ hash: 3
213
+ segments:
214
+ - 0
166
215
  version: "0"
167
216
  requirements: []
168
217