echowrap 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 788bd27b6b2046898456e19218694052ade712a7
4
- data.tar.gz: e813c4e8d7626cb0144a20bb6de2b2fefca0e339
3
+ metadata.gz: 0634ed5d2d365c11f726dc460204ddb5ccfe267b
4
+ data.tar.gz: e024bd59e708f57435a1ff3d38ee00398714e4ff
5
5
  SHA512:
6
- metadata.gz: 1eeca991459d386db4b0d6616795fde13a30c72d1f8e71a47d76a05c7f89a5d658d19eae43bef06ebd6df711e30f5fd1c4fddd512bf3f50b7b3bd18030d69e7f
7
- data.tar.gz: 050df1d7be4d74527f3e05e0bc247e531fc0e31cfaea819e3df282e2442cdab1480abbfd01464722d58338dc01e1fb8d33e5d0fe57c564e014cb15570ec059b5
6
+ metadata.gz: 0bfdcd37bc277bf7e508372e8581d1bad7a3e368ee48e424186640ac98fd9897775bb114eb84b9120ae3fbac865e5a897442421f2f60b2c1aca8df35a759cbb4
7
+ data.tar.gz: 626c6b8c235a1b8326d4c24c7b35046eb3fda02e65d0e5a93f90b6a38ca83553fbb32eb4a5eedb8bed7fa00c5e7189010c5f94e53ccb05d20158f127acd2d753
@@ -16,18 +16,7 @@ module Echowrap
16
16
  private
17
17
 
18
18
  def self.parse_error(body)
19
- if body.nil?
20
- ''
21
- elsif body[:error]
22
- body[:error]
23
- elsif body[:errors]
24
- first = Array(body[:errors]).first
25
- if first.is_a?(Hash)
26
- first[:message].chomp
27
- else
28
- first.chomp
29
- end
30
- end
19
+ body[:response][:status][:message]
31
20
  end
32
21
 
33
22
  end
@@ -2,7 +2,7 @@ module Echowrap
2
2
  class Version
3
3
  MAJOR = 0 unless defined? Echowrap::Version::MAJOR
4
4
  MINOR = 1 unless defined? Echowrap::Version::MINOR
5
- PATCH = 1 unless defined? Echowrap::Version::PATCH
5
+ PATCH = 2 unless defined? Echowrap::Version::PATCH
6
6
  PRE = nil unless defined? Echowrap::Version::PRE
7
7
 
8
8
  class << self
@@ -67,46 +67,6 @@ describe Echowrap::Client do
67
67
  end
68
68
  end
69
69
 
70
- # it "does not cache the screen name across clients" do
71
- # stub_get("/1.1/account/verify_credentials.json").to_return(:body => fixture("sferik.json"), :headers => {:content_type => "application/json; charset=utf-8"})
72
- # client1 = Echowrap::Client.new
73
- # expect(client1.verify_credentials.id).to eq 7505382
74
- # stub_get("/1.1/account/verify_credentials.json").to_return(:body => fixture("pengwynn.json"), :headers => {:content_type => "application/json; charset=utf-8"})
75
- # client2 = Echowrap::Client.new
76
- # expect(client2.verify_credentials.id).to eq 14100886
77
- # end
78
- #
79
- # describe "#delete" do
80
- # before do
81
- # stub_delete("/custom/delete").with(:query => {:deleted => "object"})
82
- # end
83
- # it "allows custom delete requests" do
84
- # subject.delete("/custom/delete", {:deleted => "object"})
85
- # expect(a_delete("/custom/delete").with(:query => {:deleted => "object"})).to have_been_made
86
- # end
87
- # end
88
- #
89
- # describe "#put" do
90
- # before do
91
- # stub_put("/custom/put").with(:body => {:updated => "object"})
92
- # end
93
- # it "allows custom put requests" do
94
- # subject.put("/custom/put", {:updated => "object"})
95
- # expect(a_put("/custom/put").with(:body => {:updated => "object"})).to have_been_made
96
- # end
97
- # end
98
- #
99
- # describe "#credentials?" do
100
- # it "returns true if all credentials are present" do
101
- # client = Echowrap::Client.new(:consumer_key => 'CK', :consumer_secret => 'CS', :oauth_token => 'OT', :oauth_token_secret => 'OS')
102
- # expect(client.credentials?).to be_true
103
- # end
104
- # it "returns false if any credentials are missing" do
105
- # client = Echowrap::Client.new(:consumer_key => 'CK', :consumer_secret => 'CS', :oauth_token => 'OT')
106
- # expect(client.credentials?).to be_false
107
- # end
108
- # end
109
- #
110
70
  describe "#connection" do
111
71
  it "looks like Faraday connection" do
112
72
  expect(subject.send(:connection)).to respond_to(:run_request)
@@ -117,58 +77,5 @@ describe Echowrap::Client do
117
77
  end
118
78
  end
119
79
 
120
- # describe "#request" do
121
- # it "encodes the entire body when no uploaded media is present" do
122
- # stub_post("/1.1/statuses/update.json").with(:body => {:status => "Update"}).to_return(:body => fixture("status.json"), :headers => {:content_type => "application/json; charset=utf-8"})
123
- # subject.update("Update")
124
- # expect(a_post("/1.1/statuses/update.json").with(:body => {:status => "Update"})).to have_been_made
125
- # end
126
- # it "encodes none of the body when uploaded media is present" do
127
- # stub_post("/1.1/statuses/update_with_media.json")
128
- # subject.update_with_media("Update", fixture("pbjt.gif"))
129
- # expect(a_post("/1.1/statuses/update_with_media.json")).to have_been_made
130
- # end
131
- # it "catches Faraday errors" do
132
- # subject.stub!(:connection).and_raise(Faraday::Error::ClientError.new("Oops"))
133
- # expect{subject.send(:request, :get, "/path")}.to raise_error Echowrap::Error::ClientError
134
- # end
135
- # it "catches MultiJson::DecodeError errors" do
136
- # subject.stub!(:connection).and_raise(MultiJson::DecodeError.new("unexpected token", [], "<!DOCTYPE html>"))
137
- # expect{subject.send(:request, :get, "/path")}.to raise_error Echowrap::Error::DecodeError
138
- # end
139
- # end
140
-
141
- # describe "#oauth_auth_header" do
142
- # it "creates the correct auth headers" do
143
- # uri = "/1.1/direct_messages.json"
144
- # authorization = subject.send(:oauth_auth_header, :get, uri)
145
- # expect(authorization.options[:signature_method]).to eq "HMAC-SHA1"
146
- # expect(authorization.options[:version]).to eq "1.0"
147
- # expect(authorization.options[:consumer_key]).to eq "CK"
148
- # expect(authorization.options[:consumer_secret]).to eq "CS"
149
- # expect(authorization.options[:token]).to eq "OT"
150
- # expect(authorization.options[:token_secret]).to eq "OS"
151
- # end
152
- # end
153
- #
154
- # describe "#bearer_auth_header" do
155
- # subject do
156
- # Echowrap::Client.new(:bearer_token => "BT")
157
- # end
158
- #
159
- # it "creates the correct auth headers with supplied bearer_token" do
160
- # uri = "/1.1/direct_messages.json"
161
- # authorization = subject.send(:bearer_auth_header)
162
- # expect(authorization).to eq "Bearer BT"
163
- # end
164
- # end
165
- #
166
- # describe "#bearer_token_credentials_auth_header" do
167
- # it "creates the correct auth header with supplied consumer_key and consumer_secret" do
168
- # uri = "/1.1/direct_messages.json"
169
- # authorization = subject.send(:bearer_token_credentials_auth_header)
170
- # expect(authorization).to eq "Basic #{Base64.strict_encode64("CK:CS")}"
171
- # end
172
- # end
173
80
  end
174
81
 
@@ -1,6 +1,9 @@
1
1
  require 'helper'
2
2
 
3
3
  describe Echowrap::Error do
4
+ before do
5
+ @client = new_test_client
6
+ end
4
7
 
5
8
  describe "#initialize" do
6
9
  it "wraps another error class" do
@@ -17,4 +20,39 @@ describe Echowrap::Error do
17
20
  end
18
21
  end
19
22
 
23
+ describe "#from_response" do
24
+
25
+ before do
26
+ stub_get("/api/v4/song/search").
27
+ with(:query => {
28
+ :results => 1,
29
+ :artist => 'radiohead',
30
+ :title => 'karma police',
31
+ :bucket => ['fakebucket']}).
32
+ to_return(:status => 400,
33
+ :body => fixture('error_response.json'))
34
+ end
35
+
36
+ it "should return echowrap badrequest when 400 is returned" do
37
+ expect{@client.song_search(:results => 1,
38
+ :artist => 'radiohead',
39
+ :title => 'karma police',
40
+ :bucket => ['fakebucket'])}.to raise_error(Echowrap::Error::BadRequest)
41
+
42
+ end
43
+
44
+ it "returns an error with the echonest message parsed correctly" do
45
+ begin
46
+ @client.song_search(:results => 1,
47
+ :artist => 'radiohead',
48
+ :title => 'karma police',
49
+ :bucket => ['fakebucket'])
50
+ rescue Echowrap::Error::BadRequest => error
51
+ expect(error.message).to match(/bucket - Invalid parameter: bucket/)
52
+ end
53
+ end
54
+ end
55
+
56
+
57
+
20
58
  end
@@ -0,0 +1 @@
1
+ {"response": {"status": {"version": "4.2", "code": 5, "message": "bucket - Invalid parameter: bucket \"fakebucket\" is not one of \"song_hotttnesss\", \"song_hotttnesss_rank\", \"artist_familiarity\", \"artist_familiarity_rank\", \"artist_hotttnesss\", \"artist_hotttnesss_rank\", \"artist_discovery\", \"artist_discovery_rank\", \"audio_summary\", \"artist_location\", \"tracks\", \"scores\", \"song_type\", \"song_discovery\", \"song_discovery_rank\", \"song_currency\", \"song_currency_rank\", \"id:7digital-US\", \"id:7digital-AU\", \"id:7digital-UK\", \"id:facebook\", \"id:fma\", \"id:emi_open_collection\", \"id:emi_bluenote\", \"id:emi_artists\", \"id:twitter\", \"id:spotify-WW\", \"id:seatwave\", \"id:lyricfind-US\", \"id:jambase\", \"id:musixmatch-WW\", \"id:rdio-US\", \"id:rdio-AT\", \"id:rdio-AU\", \"id:rdio-BR\", \"id:rdio-CA\", \"id:rdio-CH\", \"id:rdio-DE\", \"id:rdio-DK\", \"id:rdio-ES\", \"id:rdio-FI\", \"id:rdio-FR\", \"id:rdio-IE\", \"id:rdio-IT\", \"id:rdio-NL\", \"id:rdio-NO\", \"id:rdio-NZ\", \"id:rdio-PT\", \"id:rdio-SE\", \"id:emi_electrospective\", \"id:rdio-WW\", \"id:rdio-EE\", \"id:rdio-LT\", \"id:rdio-LV\", \"id:rdio-IS\", \"id:rdio-BE\", \"id:rdio-MX\", \"id:seatgeek\", \"id:rdio-GB\", \"id:rdio-CZ\", \"id:rdio-CO\", \"id:rdio-PL\", \"id:rdio-MY\", \"id:rdio-HK\", \"id:rdio-CL\", \"id:twitter_numeric\", \"id:7digital-ES\", or \"id:<CATALOG ID>\""}}}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: echowrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Case
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-03 00:00:00.000000000 Z
11
+ date: 2014-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -182,6 +182,7 @@ files:
182
182
  - spec/fixtures/artist/video.json
183
183
  - spec/fixtures/billie_jean_fingerprint.txt
184
184
  - spec/fixtures/billie_jean_query.json
185
+ - spec/fixtures/error_response.json
185
186
  - spec/fixtures/oauth/timestamp.json
186
187
  - spec/fixtures/playlist/basic.json
187
188
  - spec/fixtures/playlist/dynamic/create.json
@@ -280,6 +281,7 @@ test_files:
280
281
  - spec/fixtures/artist/video.json
281
282
  - spec/fixtures/billie_jean_fingerprint.txt
282
283
  - spec/fixtures/billie_jean_query.json
284
+ - spec/fixtures/error_response.json
283
285
  - spec/fixtures/oauth/timestamp.json
284
286
  - spec/fixtures/playlist/basic.json
285
287
  - spec/fixtures/playlist/dynamic/create.json