siilar 1.4.0 → 2.0.0
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 +4 -4
- data/README.md +3 -3
- data/lib/siilar/client/radios.rb +44 -19
- data/lib/siilar/client/search.rb +8 -18
- data/lib/siilar/client/tags.rb +55 -17
- data/lib/siilar/client/tracks.rb +62 -22
- data/lib/siilar/client/users.rb +32 -40
- data/lib/siilar/struct.rb +2 -1
- data/lib/siilar/struct/suggestion.rb +28 -0
- data/lib/siilar/struct/tag.rb +11 -1
- data/lib/siilar/struct/temporary_track.rb +8 -0
- data/lib/siilar/struct/track.rb +1 -1
- data/lib/siilar/struct/user.rb +1 -1
- data/lib/siilar/version.rb +1 -1
- metadata +4 -3
- data/lib/siilar/struct/external_track.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b17083450469418ae3c14ddb410f8fb30a15241
|
4
|
+
data.tar.gz: ef87152d3243cb1991e2ab91a418c9d695b0352c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb9aeba2546609d274c0a58d5b763a5eb44c28f9205956a78da75c2130af4b4c1db6d11e97f4c41ef9a37245b4dda3ebb39504c19cfac334194f5438cac71f90
|
7
|
+
data.tar.gz: 3c6b546f65b3d7795ca7214ca8128d9b699df0d1cbd16143b4af21ed4fa92accf07aa9fc2259d5934f20dd4ad538b88004d85a94664cb294caa0fdc9da00c376
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Siilar Ruby Client [](https://travis-ci.org/craftsmen/niland-siilar-ruby)
|
2
2
|
|
3
|
-
A Ruby client for the [Siilar API](http://api.niland.io/
|
3
|
+
A Ruby client for the [Siilar API](http://api.niland.io/2.0/doc/).
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -18,7 +18,7 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
This library is a Ruby client you can use to interact with the [Siilar API](http://api.niland.io/
|
21
|
+
This library is a Ruby client you can use to interact with the [Siilar API](http://api.niland.io/2.0/doc/).
|
22
22
|
|
23
23
|
Here's a short example.
|
24
24
|
|
@@ -28,7 +28,7 @@ require 'siilar'
|
|
28
28
|
client = Siilar::Client.new(api_key: 'YOUR_KEY')
|
29
29
|
|
30
30
|
# Create a track
|
31
|
-
track = client.tracks.create(title: 'Nine Lives',
|
31
|
+
track = client.tracks.create(title: 'Nine Lives', reference: '123')
|
32
32
|
puts "Track: %s (id: %d)" % [track.title, track.id]
|
33
33
|
|
34
34
|
# Search for similar tracks
|
data/lib/siilar/client/radios.rb
CHANGED
@@ -4,77 +4,102 @@ module Siilar
|
|
4
4
|
|
5
5
|
# Get a list of your radios.
|
6
6
|
#
|
7
|
-
# @see http://api.niland.io/
|
7
|
+
# @see http://api.niland.io/2.0/doc/radios#list-radios
|
8
8
|
def list
|
9
|
-
response = client.get('
|
10
|
-
response.map { |radio| Struct::Radio.new(radio) }
|
9
|
+
response = client.get('2.0/radios')
|
10
|
+
response['data'].map { |radio| Struct::Radio.new(radio) }
|
11
11
|
end
|
12
12
|
|
13
13
|
# Get a radio.
|
14
14
|
#
|
15
|
-
# @see http://api.niland.io/
|
15
|
+
# @see http://api.niland.io/2.0/doc/radios#get-a-radio
|
16
16
|
def get(radio)
|
17
|
-
response = client.get("
|
17
|
+
response = client.get("2.0/radios/#{radio}")
|
18
18
|
Struct::Radio.new(response)
|
19
19
|
end
|
20
20
|
|
21
21
|
# Create a radio.
|
22
22
|
#
|
23
|
-
# @see http://api.niland.io/
|
23
|
+
# @see http://api.niland.io/2.0/doc/radios#create-a-radio
|
24
24
|
def create(attributes = {})
|
25
|
-
response = client.post('
|
25
|
+
response = client.post('2.0/radios', attributes)
|
26
26
|
Struct::Radio.new(response)
|
27
27
|
end
|
28
28
|
|
29
29
|
# Edit a radio.
|
30
30
|
#
|
31
|
-
# @see http://api.niland.io/
|
31
|
+
# @see http://api.niland.io/2.0/doc/radios#edit-a-radio
|
32
32
|
def edit(radio, attributes = {})
|
33
|
-
response = client.patch("
|
33
|
+
response = client.patch("2.0/radios/#{radio}", attributes)
|
34
34
|
Struct::Radio.new(response)
|
35
35
|
end
|
36
36
|
|
37
|
+
# Delete a radio.
|
38
|
+
#
|
39
|
+
# @see http://api.niland.io/2.0/doc/radios#delete-a-radio
|
40
|
+
def delete(radio, attributes = {})
|
41
|
+
response = client.delete("2.0/radios/#{radio}")
|
42
|
+
end
|
43
|
+
|
37
44
|
# Get next radio tracks
|
38
45
|
#
|
39
|
-
# @see http://api.niland.io/
|
46
|
+
# @see http://api.niland.io/2.0/doc/radios#get-next-radio-tracks
|
40
47
|
def get_next(radio)
|
41
|
-
response = client.get("
|
48
|
+
response = client.get("2.0/radios/#{radio}/next")
|
42
49
|
response.map { |track| Struct::Track.new(track) }
|
43
50
|
end
|
44
51
|
|
45
52
|
# Notify a skip.
|
46
53
|
#
|
47
|
-
# @see http://api.niland.io/
|
54
|
+
# @see http://api.niland.io/2.0/doc/radios#notify-a-skip
|
48
55
|
def notify_skip(radio, attributes = {})
|
49
56
|
Extra.validate_mandatory_attributes(attributes, [:track])
|
50
|
-
response = client.post("
|
57
|
+
response = client.post("2.0/radios/#{radio}/skips", attributes)
|
51
58
|
Struct::Radio.new(response)
|
52
59
|
end
|
53
60
|
|
54
61
|
# Notify a like.
|
55
62
|
#
|
56
|
-
# @see http://api.niland.io/
|
63
|
+
# @see http://api.niland.io/2.0/doc/radios#notify-a-like
|
57
64
|
def notify_like(radio, attributes = {})
|
58
65
|
Extra.validate_mandatory_attributes(attributes, [:track])
|
59
|
-
response = client.post("
|
66
|
+
response = client.post("2.0/radios/#{radio}/likes", attributes)
|
60
67
|
Struct::Radio.new(response)
|
61
68
|
end
|
62
69
|
|
63
70
|
# Notify a dislike.
|
64
71
|
#
|
65
|
-
# @see http://api.niland.io/
|
72
|
+
# @see http://api.niland.io/2.0/doc/radios#notify-a-dislike
|
66
73
|
def notify_dislike(radio, attributes = {})
|
67
74
|
Extra.validate_mandatory_attributes(attributes, [:track])
|
68
|
-
response = client.post("
|
75
|
+
response = client.post("2.0/radios/#{radio}/dislikes", attributes)
|
76
|
+
Struct::Radio.new(response)
|
77
|
+
end
|
78
|
+
|
79
|
+
# Notify a ban.
|
80
|
+
#
|
81
|
+
# @see http://api.niland.io/2.0/doc/radios#notify-a-ban
|
82
|
+
def notify_ban(radio, attributes = {})
|
83
|
+
Extra.validate_mandatory_attributes(attributes, [:track])
|
84
|
+
response = client.post("2.0/radios/#{radio}/bans", attributes)
|
69
85
|
Struct::Radio.new(response)
|
70
86
|
end
|
71
87
|
|
72
88
|
# Notify a favorite.
|
73
89
|
#
|
74
|
-
# @see http://api.niland.io/
|
90
|
+
# @see http://api.niland.io/2.0/doc/radios#notify-a-favorite
|
75
91
|
def notify_favorite(radio, attributes = {})
|
76
92
|
Extra.validate_mandatory_attributes(attributes, [:track])
|
77
|
-
response = client.post("
|
93
|
+
response = client.post("2.0/radios/#{radio}/favorites", attributes)
|
94
|
+
Struct::Radio.new(response)
|
95
|
+
end
|
96
|
+
|
97
|
+
# Notify a not played track.
|
98
|
+
#
|
99
|
+
# @see http://api.niland.io/2.0/doc/radios#notify-a-not-played-track
|
100
|
+
def notify_not_played(radio, attributes = {})
|
101
|
+
Extra.validate_mandatory_attributes(attributes, [:track])
|
102
|
+
response = client.post("2.0/radios/#{radio}/notplayed", attributes)
|
78
103
|
Struct::Radio.new(response)
|
79
104
|
end
|
80
105
|
end
|
data/lib/siilar/client/search.rb
CHANGED
@@ -4,32 +4,22 @@ module Siilar
|
|
4
4
|
|
5
5
|
# Search for a track
|
6
6
|
#
|
7
|
-
# @see
|
8
|
-
def
|
7
|
+
# @see https://api.niland.io/2.0/doc/tracks#search-for-tracks
|
8
|
+
def tracks(query = {})
|
9
9
|
options = { query: query }
|
10
|
-
response = client.get('
|
10
|
+
response = client.get('2.0/tracks/search', options)
|
11
11
|
|
12
|
-
response.map { |r| Struct::Track.new(r) }
|
12
|
+
response['data'].map { |r| Struct::Track.new(r) }
|
13
13
|
end
|
14
14
|
|
15
15
|
# Search for a track from external ids
|
16
16
|
#
|
17
|
-
# @see http://api.niland.io/
|
18
|
-
def
|
17
|
+
# @see http://api.niland.io/2.0/doc/search-and-analyze#search-from-external
|
18
|
+
def suggestions(query = {})
|
19
19
|
options = { query: query }
|
20
|
-
response = client.get('
|
20
|
+
response = client.get('2.0/suggestions', options)
|
21
21
|
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
# Search for similar tracks from query
|
26
|
-
#
|
27
|
-
# @see https://api.niland.io/1.0/doc/search-and-analyze#search-from-any
|
28
|
-
def similar_from_any(query = {})
|
29
|
-
options = { query: query }
|
30
|
-
response = client.get('1.0/search-from-any', options)
|
31
|
-
|
32
|
-
response.map { |r| Struct::Track.new(r) }
|
22
|
+
Struct::Suggestion.new(response)
|
33
23
|
end
|
34
24
|
end
|
35
25
|
end
|
data/lib/siilar/client/tags.rb
CHANGED
@@ -2,58 +2,96 @@ module Siilar
|
|
2
2
|
class Client
|
3
3
|
module Tags
|
4
4
|
|
5
|
-
#
|
5
|
+
# list or find tag collections
|
6
6
|
#
|
7
|
-
# @see http://api.niland.io/
|
8
|
-
def tag_collections
|
9
|
-
|
7
|
+
# @see http://api.niland.io/2.0/doc/tags#list-or-find-tag-collections
|
8
|
+
def tag_collections(query = {})
|
9
|
+
options = { query: query }
|
10
|
+
response = client.get('2.0/tag-collections', options)
|
10
11
|
|
11
|
-
response.map { |r| Struct::TagCollection.new(r) }
|
12
|
+
response['data'].map { |r| Struct::TagCollection.new(r) }
|
12
13
|
end
|
13
14
|
|
14
15
|
# Get one tag collection
|
15
16
|
#
|
16
|
-
# @see http://api.niland.io/
|
17
|
+
# @see http://api.niland.io/2.0/doc/tags#get-a-tag-collection
|
17
18
|
def tag_collection(collection)
|
18
|
-
response = client.get("
|
19
|
+
response = client.get("2.0/tag-collections/#{collection}")
|
19
20
|
|
20
21
|
Struct::TagCollection.new(response)
|
21
22
|
end
|
22
23
|
|
23
24
|
# Create a tag collection
|
24
25
|
#
|
25
|
-
# @see http://api.niland.io/
|
26
|
+
# @see http://api.niland.io/2.0/doc/tags#create-a-tag-collection
|
26
27
|
def create_tag_collection(attributes = {})
|
27
28
|
Extra.validate_mandatory_attributes(attributes, [:name])
|
28
|
-
response = client.post('
|
29
|
+
response = client.post('2.0/tag-collections', attributes)
|
29
30
|
|
30
31
|
Struct::TagCollection.new(response)
|
31
32
|
end
|
32
33
|
|
33
34
|
# Edit a tag collection
|
34
35
|
#
|
35
|
-
# @see http://api.niland.io/
|
36
|
+
# @see http://api.niland.io/2.0/doc/tags#edit-a-tag-collection
|
36
37
|
def edit_tag_collection(collection, attributes = {})
|
37
|
-
response = client.patch("
|
38
|
+
response = client.patch("2.0/tag-collections/#{collection}", attributes)
|
38
39
|
|
39
40
|
Struct::TagCollection.new(response)
|
40
41
|
end
|
41
42
|
|
42
43
|
# Delete a tag collection
|
43
44
|
#
|
44
|
-
# @see http://api.niland.io/
|
45
|
+
# @see http://api.niland.io/2.0/doc/tags#delete-a-tag-collection
|
45
46
|
def delete_tag_collection(collection)
|
46
|
-
client.delete("
|
47
|
+
client.delete("2.0/tag-collections/#{collection}")
|
47
48
|
end
|
48
49
|
|
49
|
-
#
|
50
|
+
# list or find tags
|
50
51
|
#
|
51
|
-
# @see http://api.niland.io/
|
52
|
-
def find_tags(
|
53
|
-
|
52
|
+
# @see http://api.niland.io/2.0/doc/tags#list-or-find-tags
|
53
|
+
def find_tags(query = {})
|
54
|
+
options = { query: query }
|
55
|
+
response = client.get('2.0/tags', options)
|
56
|
+
|
57
|
+
response['data'].map { |tag| Struct::Tag.new(tag) }
|
58
|
+
end
|
59
|
+
|
60
|
+
# Get one tag
|
61
|
+
#
|
62
|
+
# @see http://api.niland.io/2.0/doc/tags#get-a-tag
|
63
|
+
def tag(tag)
|
64
|
+
response = client.get("2.0/tags/#{tag}")
|
65
|
+
|
66
|
+
Struct::Tag.new(response)
|
67
|
+
end
|
68
|
+
|
69
|
+
# Create a tag
|
70
|
+
#
|
71
|
+
# @see http://api.niland.io/2.0/doc/tags#create-a-tag
|
72
|
+
def create_tag(attributes = {})
|
73
|
+
Extra.validate_mandatory_attributes(attributes, [:title, :tag_collection])
|
74
|
+
response = client.post('2.0/tags', attributes)
|
54
75
|
|
55
76
|
Struct::Tag.new(response)
|
56
77
|
end
|
78
|
+
|
79
|
+
# Edit a tag
|
80
|
+
#
|
81
|
+
# @see http://api.niland.io/2.0/doc/tags#edit-a-tag
|
82
|
+
def edit_tag(tag, attributes = {})
|
83
|
+
response = client.patch("2.0/tags/#{tag}", attributes)
|
84
|
+
|
85
|
+
Struct::Tag.new(response)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Delete a tag
|
89
|
+
#
|
90
|
+
# @see http://api.niland.io/2.0/doc/tags#delete-a-tag
|
91
|
+
def delete_tag(tag)
|
92
|
+
client.delete("2.0/tags/#{tag}")
|
93
|
+
end
|
94
|
+
|
57
95
|
end
|
58
96
|
end
|
59
97
|
end
|
data/lib/siilar/client/tracks.rb
CHANGED
@@ -2,57 +2,97 @@ module Siilar
|
|
2
2
|
class Client
|
3
3
|
module Tracks
|
4
4
|
|
5
|
-
#
|
5
|
+
# List tracks.
|
6
6
|
#
|
7
|
-
# @see http://api.niland.io/
|
8
|
-
def
|
9
|
-
|
7
|
+
# @see http://api.niland.io/2.0/doc/tracks#list-tracks
|
8
|
+
def tracks(query = {})
|
9
|
+
options = { query: query }
|
10
|
+
response = client.get("2.0/tracks", options)
|
10
11
|
|
11
|
-
Struct::Track.new(
|
12
|
+
response['data'].map { |track| Struct::Track.new(track) }
|
12
13
|
end
|
13
14
|
|
14
|
-
# Gets
|
15
|
+
# Gets a track.
|
15
16
|
#
|
16
|
-
# @see
|
17
|
-
def
|
18
|
-
response = client.get("
|
17
|
+
# @see http://api.niland.io/2.0/doc/tracks#get-a-track
|
18
|
+
def track(track)
|
19
|
+
response = client.get("2.0/tracks/#{track}")
|
19
20
|
|
20
|
-
Struct::
|
21
|
+
Struct::Track.new(response)
|
21
22
|
end
|
22
23
|
|
23
|
-
# Gets a track from its
|
24
|
+
# Gets a track from its internal reference.
|
24
25
|
#
|
25
|
-
# @see https://api.niland.io/doc/tracks#get-
|
26
|
-
def
|
27
|
-
response = client.get("
|
26
|
+
# @see https://api.niland.io/doc/tracks#get-a-track-from-your-internal-reference
|
27
|
+
def from_reference(reference)
|
28
|
+
response = client.get("2.0/tracks/reference/#{reference}")
|
28
29
|
|
29
|
-
|
30
|
+
Struct::Track.new(response)
|
30
31
|
end
|
31
32
|
|
32
33
|
# Creates a track.
|
33
34
|
#
|
34
|
-
# @see http://api.niland.io/
|
35
|
+
# @see http://api.niland.io/2.0/doc/tracks#create-a-track
|
35
36
|
def create(attributes = {})
|
36
|
-
Extra.validate_mandatory_attributes(attributes, [:title, :
|
37
|
-
response = client.post('
|
37
|
+
Extra.validate_mandatory_attributes(attributes, [:title, :reference])
|
38
|
+
response = client.post('2.0/tracks', attributes)
|
38
39
|
|
39
40
|
Struct::Track.new(response)
|
40
41
|
end
|
41
42
|
|
43
|
+
# Upload a temporary track.
|
44
|
+
#
|
45
|
+
# @see https://api.niland.io/2.0/doc/tracks#upload-a-temporary-track
|
46
|
+
# def upload_temporary(attributes = {})
|
47
|
+
# options = {
|
48
|
+
# headers: {
|
49
|
+
# 'Content-Type' => 'multipart/form-data'
|
50
|
+
# }
|
51
|
+
# }
|
52
|
+
# Extra.validate_mandatory_attributes(attributes, [:file])
|
53
|
+
# response = client.execute(:post, '2.0/tracks/temporaries', attributes, options)
|
54
|
+
|
55
|
+
# Struct::TemporaryTrack.new(response)
|
56
|
+
# end
|
57
|
+
|
42
58
|
# Updates a track.
|
43
59
|
#
|
44
|
-
# @see http://api.niland.io/
|
60
|
+
# @see http://api.niland.io/2.0/doc/tracks#edit-a-track
|
45
61
|
def update(track, attributes = {})
|
46
|
-
response = client.patch("
|
62
|
+
response = client.patch("2.0/tracks/#{track}", attributes)
|
47
63
|
|
48
64
|
Struct::Track.new(response)
|
49
65
|
end
|
50
66
|
|
67
|
+
# Updates a track audio file
|
68
|
+
#
|
69
|
+
# @see https://api.niland.io/2.0/doc/tracks#upload-a-temporary-track
|
70
|
+
# def edit_audio_file(track, attributes = {})
|
71
|
+
# options = {
|
72
|
+
# headers: {
|
73
|
+
# 'Content-Type' => 'multipart/form-data'
|
74
|
+
# }
|
75
|
+
# }
|
76
|
+
# response = client.execute(:post, "2.0/tracks/#{track}/audio", attributes, options)
|
77
|
+
|
78
|
+
# Struct::Track.new(response)
|
79
|
+
# end
|
80
|
+
|
51
81
|
# Deletes a track.
|
52
82
|
#
|
53
|
-
# @see http://api.niland.io/
|
83
|
+
# @see http://api.niland.io/2.0/doc/tracks#delete-a-track
|
54
84
|
def delete(track)
|
55
|
-
client.delete("
|
85
|
+
client.delete("2.0/tracks/#{track}")
|
86
|
+
end
|
87
|
+
|
88
|
+
|
89
|
+
# Gets a track's tags.
|
90
|
+
#
|
91
|
+
# @see https://api.niland.io/2.0/doc/tracks#get-track-tags
|
92
|
+
def tags(track)
|
93
|
+
response = client.get("2.0/tracks/#{track}/tags")
|
94
|
+
|
95
|
+
response.map { |tag| Struct::Tag.new(tag) }
|
56
96
|
end
|
57
97
|
end
|
58
98
|
end
|
data/lib/siilar/client/users.rb
CHANGED
@@ -4,84 +4,76 @@ module Siilar
|
|
4
4
|
|
5
5
|
# Get a list of your users.
|
6
6
|
#
|
7
|
-
# @see http://api.niland.io/
|
7
|
+
# @see http://api.niland.io/2.0/doc/users#list-users
|
8
8
|
def list(query = {})
|
9
|
-
response = client.get('
|
10
|
-
response.map { |user| Struct::User.new(user) }
|
9
|
+
response = client.get('2.0/users')
|
10
|
+
response['data'].map { |user| Struct::User.new(user) }
|
11
11
|
end
|
12
12
|
|
13
13
|
# Get a user.
|
14
14
|
#
|
15
|
-
# @see http://api.niland.io/
|
15
|
+
# @see http://api.niland.io/2.0/doc/users#get-a-user
|
16
16
|
def get(user)
|
17
|
-
response = client.get("
|
17
|
+
response = client.get("2.0/users/#{user}")
|
18
18
|
Struct::User.new(response)
|
19
19
|
end
|
20
20
|
|
21
21
|
# Create a user.
|
22
22
|
#
|
23
|
-
# @see http://api.niland.io/
|
23
|
+
# @see http://api.niland.io/2.0/doc/users#create-a-user
|
24
24
|
def create(attributes = {})
|
25
|
-
Extra.validate_mandatory_attributes(attributes, [:
|
26
|
-
response = client.post('
|
25
|
+
Extra.validate_mandatory_attributes(attributes, [:reference])
|
26
|
+
response = client.post('2.0/users', attributes)
|
27
27
|
Struct::User.new(response)
|
28
28
|
end
|
29
29
|
|
30
30
|
# Update a user.
|
31
31
|
#
|
32
|
-
# @see http://api.niland.io/
|
32
|
+
# @see http://api.niland.io/2.0/doc/users#edit-a-user
|
33
33
|
def update(user, attributes = {})
|
34
|
-
response = client.patch("
|
34
|
+
response = client.patch("2.0/users/#{user}", attributes)
|
35
35
|
Struct::User.new(response)
|
36
36
|
end
|
37
37
|
|
38
38
|
# Delete a user.
|
39
39
|
#
|
40
|
-
# @see http://api.niland.io/
|
40
|
+
# @see http://api.niland.io/2.0/doc/users#delete-a-user
|
41
41
|
def delete(user)
|
42
|
-
client.delete("
|
42
|
+
client.delete("2.0/users/#{user}")
|
43
43
|
end
|
44
44
|
|
45
|
-
# Get
|
45
|
+
# Get user likes
|
46
46
|
#
|
47
|
-
# @see http://api.niland.io/
|
48
|
-
def
|
49
|
-
response = client.get("
|
50
|
-
response.map { |
|
47
|
+
# @see http://api.niland.io/2.0/doc/users#get-user-likes
|
48
|
+
def get_likes(user)
|
49
|
+
response = client.get("2.0/users/#{user}/likes")
|
50
|
+
response['data'].map { |track| Struct::Track.new(track) }
|
51
51
|
end
|
52
52
|
|
53
|
-
#
|
53
|
+
# Add a user like.
|
54
54
|
#
|
55
|
-
# @see https://api.niland.io/doc/users#
|
56
|
-
def
|
57
|
-
response = client.get("1.0/users/#{user}/likes")
|
58
|
-
response.map { |track| Struct::Track.new(track) }
|
59
|
-
end
|
60
|
-
|
61
|
-
# Add liked tracks.
|
62
|
-
#
|
63
|
-
# @see https://api.niland.io/doc/users#add-liked-track
|
64
|
-
def add_liked_track(user, attributes = {})
|
55
|
+
# @see https://api.niland.io/doc/users#add-a-user-like
|
56
|
+
def add_like(user, attributes = {})
|
65
57
|
Extra.validate_mandatory_attributes(attributes, [:track])
|
66
|
-
response = client.post("
|
67
|
-
Struct::Track.new(response)
|
58
|
+
response = client.post("2.0/users/#{user}/likes", attributes)
|
59
|
+
Struct::Track.new(response['track'])
|
68
60
|
end
|
69
61
|
|
70
|
-
# Get
|
62
|
+
# Get user dislikes
|
71
63
|
#
|
72
|
-
# @see
|
73
|
-
def
|
74
|
-
response = client.get("
|
75
|
-
response.map { |track| Struct::Track.new(track) }
|
64
|
+
# @see http://api.niland.io/2.0/doc/users#get-user-dislikes
|
65
|
+
def get_dislikes(user)
|
66
|
+
response = client.get("2.0/users/#{user}/dislikes")
|
67
|
+
response['data'].map { |track| Struct::Track.new(track) }
|
76
68
|
end
|
77
69
|
|
78
|
-
# Add
|
70
|
+
# Add a user dislike.
|
79
71
|
#
|
80
|
-
# @see https://api.niland.io/doc/users#add-
|
81
|
-
def
|
72
|
+
# @see https://api.niland.io/doc/users#add-a-user-dislike
|
73
|
+
def add_dislike(user, attributes = {})
|
82
74
|
Extra.validate_mandatory_attributes(attributes, [:track])
|
83
|
-
response = client.post("
|
84
|
-
Struct::Track.new(response)
|
75
|
+
response = client.post("2.0/users/#{user}/dislikes", attributes)
|
76
|
+
Struct::Track.new(response['track'])
|
85
77
|
end
|
86
78
|
end
|
87
79
|
end
|
data/lib/siilar/struct.rb
CHANGED
@@ -14,9 +14,10 @@ end
|
|
14
14
|
|
15
15
|
require 'siilar/struct/album'
|
16
16
|
require 'siilar/struct/artist'
|
17
|
-
require 'siilar/struct/external_track'
|
18
17
|
require 'siilar/struct/radio'
|
18
|
+
require 'siilar/struct/suggestion'
|
19
19
|
require 'siilar/struct/tag'
|
20
20
|
require 'siilar/struct/tag_collection'
|
21
|
+
require 'siilar/struct/temporary_track'
|
21
22
|
require 'siilar/struct/track'
|
22
23
|
require 'siilar/struct/user'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Siilar
|
2
|
+
module Struct
|
3
|
+
|
4
|
+
class Suggestion < Base
|
5
|
+
attr_accessor :similar_artists, :similar_tracks, :artists, :albums
|
6
|
+
|
7
|
+
def tags
|
8
|
+
@tags ||= []
|
9
|
+
end
|
10
|
+
|
11
|
+
def tags=(attrs)
|
12
|
+
if attrs
|
13
|
+
@tags = attrs.map { |tag| Struct::Tag.new(tag) }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def tracks
|
18
|
+
@tracks ||= []
|
19
|
+
end
|
20
|
+
|
21
|
+
def tracks=(attrs)
|
22
|
+
if attrs
|
23
|
+
@tracks = attrs.map { |track| Struct::Track.new(track) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/siilar/struct/tag.rb
CHANGED
@@ -2,7 +2,17 @@ module Siilar
|
|
2
2
|
module Struct
|
3
3
|
|
4
4
|
class Tag < Base
|
5
|
-
attr_accessor :id, :title
|
5
|
+
attr_accessor :id, :title, :synonyms
|
6
|
+
|
7
|
+
def tag_collection
|
8
|
+
@tag_collection ||= []
|
9
|
+
end
|
10
|
+
|
11
|
+
def tag_collection=(attrs)
|
12
|
+
if attrs
|
13
|
+
@tag_collection = Struct::TagCollection.new(attrs)
|
14
|
+
end
|
15
|
+
end
|
6
16
|
end
|
7
17
|
end
|
8
18
|
end
|
data/lib/siilar/struct/track.rb
CHANGED
data/lib/siilar/struct/user.rb
CHANGED
data/lib/siilar/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: siilar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mehdi Lahmam
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -96,10 +96,11 @@ files:
|
|
96
96
|
- lib/siilar/struct.rb
|
97
97
|
- lib/siilar/struct/album.rb
|
98
98
|
- lib/siilar/struct/artist.rb
|
99
|
-
- lib/siilar/struct/external_track.rb
|
100
99
|
- lib/siilar/struct/radio.rb
|
100
|
+
- lib/siilar/struct/suggestion.rb
|
101
101
|
- lib/siilar/struct/tag.rb
|
102
102
|
- lib/siilar/struct/tag_collection.rb
|
103
|
+
- lib/siilar/struct/temporary_track.rb
|
103
104
|
- lib/siilar/struct/track.rb
|
104
105
|
- lib/siilar/struct/user.rb
|
105
106
|
- lib/siilar/version.rb
|