intown 0.1.4 → 0.1.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.
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