siilar 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e5dbbfc5c08063dc61515f786262fe8496a5a4eb
4
- data.tar.gz: 41142d35c7c0aba195ef7f1d5b8650df24772ca4
3
+ metadata.gz: 785bac5294e7164f071c426e8c303c40f9ea5531
4
+ data.tar.gz: aedda8542cbd5b2a6fbc7836ad7aa6134216666c
5
5
  SHA512:
6
- metadata.gz: 9fcda4f6aabbecd98c063feee28120537830147176678b18dc5f5f8ee66586bf611d3e53c92ec0e11f542a639fbc3e41438ddcf0551071966da1c17324357075
7
- data.tar.gz: 5e27cb0e3c5c0b785564bbba90a4c515c978ec29afbe24190137fe8e55521b5ee4ed0073b60e97d9848d232dca195bf41264f23e534bb5bbf63d088bb1de9be9
6
+ metadata.gz: 1c7002b4e922661fa6efd9fc7dcef47618ca2b7a3b9c203c2d2d2a3dd7f2429d28689e9748a802963bdf2759f5a975918279a313ea6827c7d6f245c795bef37d
7
+ data.tar.gz: a16752cce8dffd219d79b6112b080ffc9139a48b02e2e2c10bd4abee6e6c1fa46a880cc3137c621737f0e54ca24fec98d4cd044425f2adfd23e1c1066f82983f
@@ -9,6 +9,10 @@ module Siilar
9
9
  @services[:search] ||= Client::SearchService.new(self)
10
10
  end
11
11
 
12
+ def tags
13
+ @services[:tags] ||= Client::TagsService.new(self)
14
+ end
15
+
12
16
  class ClientService < ::Struct.new(:client)
13
17
  end
14
18
 
@@ -23,5 +27,11 @@ module Siilar
23
27
  class SearchService < ClientService
24
28
  include Client::Search
25
29
  end
30
+
31
+ require 'siilar/client/tags'
32
+
33
+ class TagsService < ClientService
34
+ include Client::Tags
35
+ end
26
36
  end
27
37
  end
@@ -0,0 +1,59 @@
1
+ module Siilar
2
+ class Client
3
+ module Tags
4
+
5
+ # Get all the tag collections
6
+ #
7
+ # @see http://api.siilar.com/1.0/doc/tags#list-tag-collections
8
+ def tag_collections
9
+ response = client.get('1.0/tag-collections')
10
+
11
+ response.map { |r| Struct::TagCollection.new(r) }
12
+ end
13
+
14
+ # Get one tag collection
15
+ #
16
+ # @see http://api.siilar.com/1.0/doc/tags#get-tag-collections
17
+ def tag_collection(collection)
18
+ response = client.get("1.0/tag-collections/#{collection}")
19
+
20
+ Struct::TagCollection.new(response)
21
+ end
22
+
23
+ # Create a tag collection
24
+ #
25
+ # @see http://api.siilar.com/1.0/doc/tags#create-tag-collections
26
+ def create_tag_collection(attributes = {})
27
+ Extra.validate_mandatory_attributes(attributes, [:name])
28
+ response = client.post('1.0/tag-collections', attributes)
29
+
30
+ Struct::TagCollection.new(response)
31
+ end
32
+
33
+ # Edit a tag collection
34
+ #
35
+ # @see http://api.siilar.com/1.0/doc/tags#edit-tag-collections
36
+ def edit_tag_collection(collection, attributes = {})
37
+ response = client.patch("1.0/tag-collections/#{collection}", attributes)
38
+
39
+ Struct::TagCollection.new(response)
40
+ end
41
+
42
+ # Delete a tag collection
43
+ #
44
+ # @see http://api.siilar.com/1.0/doc/tags#delete-tag-collections
45
+ def delete_tag_collection(collection)
46
+ client.delete("1.0/tag-collections/#{collection}")
47
+ end
48
+
49
+ # Find tags
50
+ #
51
+ # @see http://api.siilar.com/1.0/doc/tags#find-tags
52
+ def find_tags(attributes = {})
53
+ response = client.get('1.0/tags', attributes)
54
+
55
+ Struct::Tag.new(response)
56
+ end
57
+ end
58
+ end
59
+ end
data/lib/siilar/client.rb CHANGED
@@ -4,7 +4,7 @@ require 'siilar/client/clients'
4
4
 
5
5
  module Siilar
6
6
  class Client
7
- attr_accessor :api_endpoint, :api_key, :user_agent
7
+ attr_accessor :api_endpoint, :api_key, :user_agent, :requests_timeout
8
8
 
9
9
  def initialize(options = {})
10
10
  defaults = Siilar::Default.options
@@ -55,7 +55,6 @@ module Siilar
55
55
  if !data.empty?
56
56
  options[:body] = data.to_json
57
57
  end
58
-
59
58
  HTTParty.send(method, api_endpoint + path, Extra.deep_merge!(base_options, options))
60
59
  end
61
60
 
@@ -75,6 +74,10 @@ module Siilar
75
74
  }
76
75
  }
77
76
 
77
+ if requests_timeout
78
+ options.merge!(timeout: requests_timeout)
79
+ end
80
+
78
81
  if api_key
79
82
  options.merge!(query: { key: api_key })
80
83
  else
@@ -5,7 +5,7 @@ module Siilar
5
5
 
6
6
  class << self
7
7
  def keys
8
- @keys ||= [:api_endpoint, :api_key, :user_agent]
8
+ @keys ||= [:api_endpoint, :api_key, :user_agent, :requests_timeout]
9
9
  end
10
10
 
11
11
  def options
@@ -20,6 +20,10 @@ module Siilar
20
20
  ENV['SIILAR_API_KEY']
21
21
  end
22
22
 
23
+ def requests_timeout
24
+ ENV['SIILAR_REQUESTS_TIMEOUT'] || 10
25
+ end
26
+
23
27
  def user_agent
24
28
  ENV['SIILAR_USER_AGENT'] || USER_AGENT
25
29
  end
@@ -0,0 +1,8 @@
1
+ module Siilar
2
+ module Struct
3
+
4
+ class Tag < Base
5
+ attr_accessor :id, :title
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,18 @@
1
+ module Siilar
2
+ module Struct
3
+
4
+ class TagCollection < Base
5
+ attr_accessor :id, :name, :description
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
+ end
17
+ end
18
+ end
data/lib/siilar/struct.rb CHANGED
@@ -15,3 +15,5 @@ end
15
15
  require 'siilar/struct/track'
16
16
  require 'siilar/struct/album'
17
17
  require 'siilar/struct/artist'
18
+ require 'siilar/struct/tag'
19
+ require 'siilar/struct/tag_collection'
@@ -1,3 +1,3 @@
1
1
  module Siilar
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
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: 1.0.0
4
+ version: 1.1.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: 2015-04-05 00:00:00.000000000 Z
11
+ date: 2015-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -86,6 +86,7 @@ files:
86
86
  - lib/siilar/client.rb
87
87
  - lib/siilar/client/clients.rb
88
88
  - lib/siilar/client/search.rb
89
+ - lib/siilar/client/tags.rb
89
90
  - lib/siilar/client/tracks.rb
90
91
  - lib/siilar/default.rb
91
92
  - lib/siilar/error.rb
@@ -93,6 +94,8 @@ files:
93
94
  - lib/siilar/struct.rb
94
95
  - lib/siilar/struct/album.rb
95
96
  - lib/siilar/struct/artist.rb
97
+ - lib/siilar/struct/tag.rb
98
+ - lib/siilar/struct/tag_collection.rb
96
99
  - lib/siilar/struct/track.rb
97
100
  - lib/siilar/version.rb
98
101
  - siilar.gemspec