intown 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d76054e6f04a413200acac85cd5d1efa1001fd3f
4
+ data.tar.gz: f465740a9d6886e767a98188fc7f35ebf41da2ef
5
+ SHA512:
6
+ metadata.gz: 69d58ede22936397ae92900ed3997417176650beeef66830fac78d78f7113bf1f2ad6e67c7563520e399a53981a0af1aa7461a16bfd239af3a8807dbcbf1602e
7
+ data.tar.gz: 629e25cc1fe3fd3585c79d965f2214336f7b38e03f6925ac044582e52419d1f46d52d05773dd6af7afe977dfd0fad0fe01a064860308932ebb8e6c0b143ca41f
data/lib/intown/client.rb CHANGED
@@ -20,7 +20,8 @@ module Intown
20
20
 
21
21
  def process_response(response)
22
22
  case response.code
23
- when 500 then raise Intown::InvalidRequestError, response.body
23
+ when 500 then internal_server_error(response)
24
+ when 502 then bad_gateway(response)
24
25
  when 404 then process_not_found(response)
25
26
  when 406 then process_not_acceptable(response)
26
27
  else
@@ -48,6 +49,14 @@ module Intown
48
49
  nil
49
50
  end
50
51
 
52
+ def internal_server_error(response)
53
+ raise Intown::InternalServerError, "Bandsintown returned a 500 internal server error. Please retry this request later."
54
+ end
55
+
56
+ def bad_gateway(response)
57
+ raise Intown::BadGatewayError, "Bandsintown returned a 502 proxy error. Please retry this request later."
58
+ end
59
+
51
60
  def artist_identifier(params)
52
61
  return musicbrainz_identifier(params[:mbid]) if params[:mbid]
53
62
  return facebook_identifier(params[:fbid]) if params[:fbid]
data/lib/intown/errors.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  module Intown
2
2
  IntownError = Class.new(StandardError)
3
3
  InvalidRequestError = Class.new(IntownError)
4
+ InternalServerError = Class.new(IntownError)
5
+ BadGatewayError = Class.new(IntownError)
4
6
  end
@@ -1,3 +1,3 @@
1
1
  module Intown
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -59,21 +59,35 @@ describe Intown::Artist do
59
59
 
60
60
  describe "invalid response" do
61
61
  let(:status_code) { nil }
62
- let(:response_body) { nil }
62
+ let(:response_body) { '{"errors":["app_id param is required"]}' }
63
63
  let(:response) {
64
64
  stub(:body => response_body,
65
65
  :code => status_code)
66
66
  }
67
+
67
68
  before do
68
69
  Intown::Artist.should_receive(:get).and_return(response)
69
70
  end
71
+
72
+ context "500 Internal Server Error" do
73
+ let(:status_code) { 500 }
74
+ it_behaves_like 'error', Intown::InternalServerError
75
+ end
76
+
77
+ context "502 Bad Gateway" do
78
+ let(:status_code) { 502 }
79
+ it_behaves_like 'error', Intown::BadGatewayError
80
+ end
81
+
82
+ context "404 Not Found" do
83
+ let(:status_code) { 404 }
84
+ it_behaves_like 'error', Intown::InvalidRequestError
85
+ end
86
+
70
87
  context "406 Not Acceptable" do
71
88
  let(:status_code) { 406 }
72
- it "should raise an invalid request error" do
73
- expect { Intown::Artist.fetch(:name => "Jr. Doc") }.to raise_error Intown::InvalidRequestError
74
- end
89
+ it_behaves_like 'error', Intown::InvalidRequestError
75
90
  end
76
-
77
91
  end
78
92
 
79
93
  end
data/spec/spec_helper.rb CHANGED
@@ -12,3 +12,5 @@ VCR.configure do |c|
12
12
  c.hook_into :webmock
13
13
  c.allow_http_connections_when_no_cassette = true
14
14
  end
15
+
16
+ Dir["./spec/support/**/*.rb"].sort.each {|f| require f}
@@ -0,0 +1,5 @@
1
+ shared_examples 'error' do |e|
2
+ it "should raise #{e}" do
3
+ expect { Intown::Artist.fetch(:name => "Jr. Doc") }.to raise_error e
4
+ end
5
+ end
metadata CHANGED
@@ -1,112 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intown
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.4
4
+ version: 0.1.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ben Scheirman
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-23 00:00:00.000000000 Z
11
+ date: 2013-07-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- prerelease: false
16
- version_requirements: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ~>
19
- - !ruby/object:Gem::Version
20
- version: 2.12.0
21
- none: false
22
- type: :development
23
14
  name: rspec
24
15
  requirement: !ruby/object:Gem::Requirement
25
16
  requirements:
26
17
  - - ~>
27
18
  - !ruby/object:Gem::Version
28
19
  version: 2.12.0
29
- none: false
30
- - !ruby/object:Gem::Dependency
20
+ type: :development
31
21
  prerelease: false
32
22
  version_requirements: !ruby/object:Gem::Requirement
33
23
  requirements:
34
24
  - - ~>
35
25
  - !ruby/object:Gem::Version
36
- version: 2.4.0
37
- none: false
38
- type: :development
26
+ version: 2.12.0
27
+ - !ruby/object:Gem::Dependency
39
28
  name: vcr
40
29
  requirement: !ruby/object:Gem::Requirement
41
30
  requirements:
42
31
  - - ~>
43
32
  - !ruby/object:Gem::Version
44
33
  version: 2.4.0
45
- none: false
46
- - !ruby/object:Gem::Dependency
34
+ type: :development
47
35
  prerelease: false
48
36
  version_requirements: !ruby/object:Gem::Requirement
49
37
  requirements:
50
38
  - - ~>
51
39
  - !ruby/object:Gem::Version
52
- version: 1.9.3
53
- none: false
54
- type: :development
40
+ version: 2.4.0
41
+ - !ruby/object:Gem::Dependency
55
42
  name: webmock
56
43
  requirement: !ruby/object:Gem::Requirement
57
44
  requirements:
58
45
  - - ~>
59
46
  - !ruby/object:Gem::Version
60
47
  version: 1.9.3
61
- none: false
62
- - !ruby/object:Gem::Dependency
48
+ type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
- - - ! '>='
52
+ - - ~>
67
53
  - !ruby/object:Gem::Version
68
- version: '0'
69
- none: false
70
- type: :development
54
+ version: 1.9.3
55
+ - !ruby/object:Gem::Dependency
71
56
  name: pry
72
57
  requirement: !ruby/object:Gem::Requirement
73
58
  requirements:
74
- - - ! '>='
59
+ - - '>='
75
60
  - !ruby/object:Gem::Version
76
61
  version: '0'
77
- none: false
78
- - !ruby/object:Gem::Dependency
62
+ type: :development
79
63
  prerelease: false
80
64
  version_requirements: !ruby/object:Gem::Requirement
81
65
  requirements:
82
- - - ~>
66
+ - - '>='
83
67
  - !ruby/object:Gem::Version
84
- version: 0.10.0
85
- none: false
86
- type: :runtime
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
87
70
  name: httparty
88
71
  requirement: !ruby/object:Gem::Requirement
89
72
  requirements:
90
73
  - - ~>
91
74
  - !ruby/object:Gem::Version
92
75
  version: 0.10.0
93
- none: false
94
- - !ruby/object:Gem::Dependency
76
+ type: :runtime
95
77
  prerelease: false
96
78
  version_requirements: !ruby/object:Gem::Requirement
97
79
  requirements:
98
- - - ! '>='
80
+ - - ~>
99
81
  - !ruby/object:Gem::Version
100
- version: 1.2.0
101
- none: false
102
- type: :runtime
82
+ version: 0.10.0
83
+ - !ruby/object:Gem::Dependency
103
84
  name: hashie
104
85
  requirement: !ruby/object:Gem::Requirement
105
86
  requirements:
106
- - - ! '>='
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 1.2.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
107
95
  - !ruby/object:Gem::Version
108
96
  version: 1.2.0
109
- none: false
110
97
  description: A client for the Bandsintown API.
111
98
  email:
112
99
  - ben@scheirman.com
@@ -144,29 +131,29 @@ files:
144
131
  - spec/intown/event_spec.rb
145
132
  - spec/intown/intown_spec.rb
146
133
  - spec/spec_helper.rb
134
+ - spec/support/shared_examples.rb
147
135
  homepage: https://github.com/subdigital/intown
148
136
  licenses: []
137
+ metadata: {}
149
138
  post_install_message:
150
139
  rdoc_options: []
151
140
  require_paths:
152
141
  - lib
153
142
  required_ruby_version: !ruby/object:Gem::Requirement
154
143
  requirements:
155
- - - ! '>='
144
+ - - '>='
156
145
  - !ruby/object:Gem::Version
157
146
  version: '0'
158
- none: false
159
147
  required_rubygems_version: !ruby/object:Gem::Requirement
160
148
  requirements:
161
- - - ! '>='
149
+ - - '>='
162
150
  - !ruby/object:Gem::Version
163
151
  version: '0'
164
- none: false
165
152
  requirements: []
166
153
  rubyforge_project:
167
- rubygems_version: 1.8.25
154
+ rubygems_version: 2.0.2
168
155
  signing_key:
169
- specification_version: 3
156
+ specification_version: 4
170
157
  summary: Supports Bandsintown API version 1.1
171
158
  test_files:
172
159
  - spec/acceptance/fetch_artist_by_name_spec.rb
@@ -185,4 +172,4 @@ test_files:
185
172
  - spec/intown/event_spec.rb
186
173
  - spec/intown/intown_spec.rb
187
174
  - spec/spec_helper.rb
188
- has_rdoc:
175
+ - spec/support/shared_examples.rb