musix_match 0.1.8 → 0.1.9
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/lib/musix_match/api/feedback.rb +19 -0
- data/lib/musix_match/feedback_result.rb +21 -0
- data/lib/musix_match.rb +7 -1
- data/spec/api/base_spec.rb +2 -2
- data/spec/api/feedback_spec.rb +39 -0
- data/spec/feedback_result_spec.rb +15 -0
- data/spec/musix_match_spec.rb +8 -0
- metadata +10 -4
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module MusixMatch
|
|
2
|
+
module API
|
|
3
|
+
class Feedback < Base
|
|
4
|
+
class InvalidFeedbackTypeException < Exception; end
|
|
5
|
+
|
|
6
|
+
VALID_TYPES = %w(wrong_attribution bad_characters lines_too_long wrong_verses wrong_formatting)
|
|
7
|
+
|
|
8
|
+
def post_feedback(track_id, lyrics_id, feedback)
|
|
9
|
+
raise InvalidFeedbackTypeException.new("Invalid feedback type. Try one of the following: #{VALID_TYPES.join(", ")}") unless VALID_TYPES.include?(feedback.to_s)
|
|
10
|
+
response = get('track.lyrics.feedback.post', {:track_id => track_id, :lyrics_id => lyrics_id, :feedback => feedback})
|
|
11
|
+
FeedbackResult.new(response)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.post_feedback(track_id, lyrics_id, feedback)
|
|
15
|
+
Feedback.new.post_feedback(track_id, lyrics_id, feedback)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module MusixMatch
|
|
2
|
+
class FeedbackResult
|
|
3
|
+
attr_reader :status_code, :execute_time
|
|
4
|
+
|
|
5
|
+
def initialize(response)
|
|
6
|
+
parse_response(response)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
protected
|
|
10
|
+
|
|
11
|
+
def parse_response(response)
|
|
12
|
+
parse_response_header(response)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def parse_response_header(response)
|
|
16
|
+
[:status_code, :execute_time].each do |key|
|
|
17
|
+
instance_variable_set "@#{key}", response['message']['header'][key.to_s]
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/musix_match.rb
CHANGED
|
@@ -18,8 +18,10 @@ musix_match_path = File.dirname(__FILE__)
|
|
|
18
18
|
'api/search',
|
|
19
19
|
'lyrics_find_result',
|
|
20
20
|
'track_find_result',
|
|
21
|
+
'feedback_result',
|
|
21
22
|
'api/finder',
|
|
22
23
|
'api/track_chart',
|
|
24
|
+
'api/feedback',
|
|
23
25
|
'models/track',
|
|
24
26
|
'instant_lyrics'].each do |lib|
|
|
25
27
|
require musix_match_path + '/musix_match/' + lib
|
|
@@ -49,5 +51,9 @@ module MusixMatch
|
|
|
49
51
|
def self.i_m_feeling_lucky(q)
|
|
50
52
|
result = MusixMatch::InstantLyrics::Search.search(q)
|
|
51
53
|
result.found? ? result.lyrics.lyrics_body : 'Lyrics not found'
|
|
52
|
-
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def self.post_feedback(*args)
|
|
57
|
+
API::Feedback.post_feedback(*args)
|
|
58
|
+
end
|
|
53
59
|
end
|
data/spec/api/base_spec.rb
CHANGED
|
@@ -2,12 +2,12 @@ require 'spec_helper'
|
|
|
2
2
|
|
|
3
3
|
describe MusixMatch::API::Base do
|
|
4
4
|
it "should always use JSON as format" do
|
|
5
|
-
expected_url = MusixMatch::API::Base::API_URL + '/lyrics.get?
|
|
5
|
+
expected_url = MusixMatch::API::Base::API_URL + '/lyrics.get?format=json&apikey='
|
|
6
6
|
MusixMatch::API::Base.url_for('lyrics.get', :format => 'xml').should == expected_url
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
it "should use JSON as format even if the format key is a string" do
|
|
10
|
-
expected_url = MusixMatch::API::Base::API_URL + '/lyrics.get?
|
|
10
|
+
expected_url = MusixMatch::API::Base::API_URL + '/lyrics.get?format=json&apikey='
|
|
11
11
|
MusixMatch::API::Base.url_for('lyrics.get', 'format' => 'xml').should == expected_url
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MusixMatch::API::Feedback do
|
|
4
|
+
it "should raise an exception for bad feedback type" do
|
|
5
|
+
lambda do
|
|
6
|
+
MusixMatch::API::Feedback.post_feedback(1, 1, "invalid-feedback-type")
|
|
7
|
+
end.should raise_error(MusixMatch::API::Feedback::InvalidFeedbackTypeException)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should call get with track.lyrics.feedback.post" do
|
|
11
|
+
track_id = 1
|
|
12
|
+
lyrics_id = 1
|
|
13
|
+
feedback_type = 'wrong_attribution'
|
|
14
|
+
feedback = MusixMatch::API::Feedback.new
|
|
15
|
+
feedback.should_receive(:get).with('track.lyrics.feedback.post', {:track_id => track_id, :lyrics_id => lyrics_id, :feedback => feedback_type}).and_return(load_fixture('track.lyrics.feedback.post'))
|
|
16
|
+
feedback.post_feedback(track_id, lyrics_id, feedback_type)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should initialize a new Feedback object" do
|
|
20
|
+
track_id = 1
|
|
21
|
+
lyrics_id = 1
|
|
22
|
+
feedback_type = 'wrong_attribution'
|
|
23
|
+
feedback = mock(MusixMatch::API::Feedback)
|
|
24
|
+
MusixMatch::API::Feedback.should_receive(:new).and_return(feedback)
|
|
25
|
+
feedback.should_receive(:post_feedback).with(track_id, lyrics_id, feedback_type)
|
|
26
|
+
MusixMatch::API::Feedback.post_feedback(track_id, lyrics_id, feedback_type)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should initialize a FeedbackResult" do
|
|
30
|
+
track_id = 1
|
|
31
|
+
lyrics_id = 1
|
|
32
|
+
feedback_type = 'wrong_attribution'
|
|
33
|
+
feedback = MusixMatch::API::Feedback.new
|
|
34
|
+
feedback_response = load_fixture('track.lyrics.feedback.post')
|
|
35
|
+
feedback.should_receive(:get).with('track.lyrics.feedback.post', {:track_id => track_id, :lyrics_id => lyrics_id, :feedback => feedback_type}).and_return(feedback_response)
|
|
36
|
+
MusixMatch::FeedbackResult.should_receive(:new).with(feedback_response)
|
|
37
|
+
feedback.post_feedback(track_id, lyrics_id, feedback_type)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MusixMatch::FeedbackResult do
|
|
4
|
+
it 'should set status_code' do
|
|
5
|
+
response = load_fixture('track.lyrics.feedback.post')
|
|
6
|
+
result = MusixMatch::FeedbackResult.new(response)
|
|
7
|
+
result.status_code.should == 200
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'should set execute_time' do
|
|
11
|
+
response = load_fixture('track.lyrics.feedback.post')
|
|
12
|
+
result = MusixMatch::FeedbackResult.new(response)
|
|
13
|
+
result.execute_time.should == 0.137812137604
|
|
14
|
+
end
|
|
15
|
+
end
|
data/spec/musix_match_spec.rb
CHANGED
|
@@ -41,4 +41,12 @@ describe MusixMatch do
|
|
|
41
41
|
MusixMatch::InstantLyrics::Search.should_receive(:search).with(q).and_return(result)
|
|
42
42
|
MusixMatch.i_m_feeling_lucky(q)
|
|
43
43
|
end
|
|
44
|
+
|
|
45
|
+
it "should call post_feedback on Feedback" do
|
|
46
|
+
track_id = 1
|
|
47
|
+
lyrics_id = 1
|
|
48
|
+
feedback_type = 'wrong_attribution'
|
|
49
|
+
MusixMatch::API::Feedback.should_receive(:post_feedback).with(track_id, lyrics_id, feedback_type)
|
|
50
|
+
MusixMatch.post_feedback(track_id, lyrics_id, feedback_type)
|
|
51
|
+
end
|
|
44
52
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: musix_match
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 9
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 1
|
|
9
|
-
-
|
|
10
|
-
version: 0.1.
|
|
9
|
+
- 9
|
|
10
|
+
version: 0.1.9
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Andrea Franz
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2010-11-
|
|
18
|
+
date: 2010-11-27 00:00:00 -05:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -63,9 +63,11 @@ files:
|
|
|
63
63
|
- Rakefile
|
|
64
64
|
- lib/musix_match.rb
|
|
65
65
|
- lib/musix_match/api/base.rb
|
|
66
|
+
- lib/musix_match/api/feedback.rb
|
|
66
67
|
- lib/musix_match/api/finder.rb
|
|
67
68
|
- lib/musix_match/api/search.rb
|
|
68
69
|
- lib/musix_match/api/track_chart.rb
|
|
70
|
+
- lib/musix_match/feedback_result.rb
|
|
69
71
|
- lib/musix_match/instant_lyrics.rb
|
|
70
72
|
- lib/musix_match/lyrics_find_result.rb
|
|
71
73
|
- lib/musix_match/lyrics_search_result.rb
|
|
@@ -76,9 +78,11 @@ files:
|
|
|
76
78
|
- lib/musix_match/track_find_result.rb
|
|
77
79
|
- lib/musix_match/track_search_result.rb
|
|
78
80
|
- spec/api/base_spec.rb
|
|
81
|
+
- spec/api/feedback_spec.rb
|
|
79
82
|
- spec/api/finder_spec.rb
|
|
80
83
|
- spec/api/search_spec.rb
|
|
81
84
|
- spec/api/track_chart_spec.rb
|
|
85
|
+
- spec/feedback_result_spec.rb
|
|
82
86
|
- spec/lyrics_find_result_spec.rb
|
|
83
87
|
- spec/lyrics_search_result_spec.rb
|
|
84
88
|
- spec/models/lyrics_spec.rb
|
|
@@ -124,9 +128,11 @@ specification_version: 3
|
|
|
124
128
|
summary: API wrapper for musixmatch.com API's
|
|
125
129
|
test_files:
|
|
126
130
|
- spec/api/base_spec.rb
|
|
131
|
+
- spec/api/feedback_spec.rb
|
|
127
132
|
- spec/api/finder_spec.rb
|
|
128
133
|
- spec/api/search_spec.rb
|
|
129
134
|
- spec/api/track_chart_spec.rb
|
|
135
|
+
- spec/feedback_result_spec.rb
|
|
130
136
|
- spec/lyrics_find_result_spec.rb
|
|
131
137
|
- spec/lyrics_search_result_spec.rb
|
|
132
138
|
- spec/models/lyrics_spec.rb
|