topdmc-client 0.0.3 → 0.0.4

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: 01ed01182cd07bb9100ee5b6a19808f6ad8143f4
4
- data.tar.gz: 618400e0b881b5ba4e7a09f095c4857b0d436a0e
3
+ metadata.gz: 40bfa35d8f3341250b9b0a0c31006a6995fd87b1
4
+ data.tar.gz: f45805d469d746a19132f01ef44b687708ad7f45
5
5
  SHA512:
6
- metadata.gz: 7ba7e0d34b0a02615d9cc8ebd3508ab62c5f57ccb16ab8801d3a526966e1ef18270dafebcafa84ee241b8af767b4d7bc00592863135033c325586fd7880e7177
7
- data.tar.gz: 81ad2e88428ffb4ff3dddaddb7de0b4b19dcc6f6814599226833ccf0e62adedb0159f49ea279b87ba0eddff1100a3ee3aafe22179f689c21aba3b3d86d75bc88
6
+ metadata.gz: bd29ee75bd138797275f0b0481dc233e47fdb473199ecd41fb8459c4f9da560e31bb8f97da6c6fbaa7032580a22895937137a6ee1f8d3ecd0e255aa27608e0a9
7
+ data.tar.gz: c6e5de351cc88e6bbd7f739b78d623eb5ebf7b50ad45ab9d7c322a7d481d7387e8582a128e72d384e4971514769a63807a2ce95ae19c6f23ad903dbda85f5df6
@@ -29,26 +29,7 @@ module TopDMC
29
29
  base_params.merge! params
30
30
  end
31
31
 
32
- # 对参数名称和参数值进行URL编码
33
- encoded_params = base_params.map do |key, value|
34
- [key, URI.encode_www_form_component(value.to_s)]
35
- end
36
-
37
- # 按参数名进行升序排列,如果key值相同之后按照value进行排序
38
- sorted_params = encoded_params.sort
39
-
40
- # 参数名和参数值之间用 “=” 号连接,参数和参数之间用 “&” 号连接
41
- normalized = sorted_params.map do |item|
42
- item.join('=')
43
- end
44
-
45
- sign_str = [request_method,
46
- URI.encode_www_form_component(path),
47
- URI.encode_www_form_component(normalized.join('&'))
48
- ].join('&')
49
-
50
- sign = hmac_sha1_signature(@client.client_secure, sign_str)
51
- base_params[:sign] = sign
32
+ base_params[:sign] = sign(request_method,path,base_params,@client.client_secure)
52
33
 
53
34
  # 处理请求地址
54
35
  path = "#{@client.url}#{path}"
@@ -1,4 +1,7 @@
1
1
  require 'topdmc/resources/artist'
2
+ require 'topdmc/resources/search'
3
+ require 'topdmc/resources/album'
4
+ require 'topdmc/resources/track'
2
5
  require "topdmc/resources/version"
3
6
 
4
7
  module TopDMC
@@ -26,6 +29,10 @@ module TopDMC
26
29
  TopDMC::Resources::Album.new(self)
27
30
  end
28
31
 
32
+ def track
33
+ TopDMC::Resources::Track.new(self)
34
+ end
35
+
29
36
  def search
30
37
  TopDMC::Resources::Search.new(self)
31
38
  end
@@ -1,7 +1,6 @@
1
1
  require 'topdmc/resources/base'
2
2
 
3
3
  module TopDMC
4
- module Client
5
4
  module Resources
6
5
  class Search < Base
7
6
  def initialize(client)
@@ -12,6 +11,5 @@ module TopDMC
12
11
  perform_request('GET', "/v1/search", query)
13
12
  end
14
13
  end
15
- end
16
14
  end
17
15
  end
@@ -1,7 +1,7 @@
1
1
  require 'topdmc/resources/base'
2
2
 
3
3
  module TopDMC
4
- module Client
4
+ module Resources
5
5
  class Track < Base
6
6
  def initialize(client)
7
7
  super(client)
@@ -30,6 +30,23 @@ module TopDMC
30
30
  def update_offline_play_count(id, params)
31
31
  perform_request('PUT', "/v1/tracks/#{id}", params)
32
32
  end
33
+
34
+ def authorize_url(track_id,params={})
35
+ base_params ={
36
+ timestamp: Time.now.to_i,
37
+ nonce: nonce,
38
+ client_id: @client.client_id
39
+ }
40
+
41
+ params.merge! base_params
42
+ params[:sign] = sign('GET',"/v1/tracks/#{track_id}/authorize",params,@client.client_secure)
43
+
44
+ query = params.map { |key, value|
45
+ [key, URI.encode_www_form_component(value.to_s)]
46
+ }.sort.map { |item| item.join('=') }.join('&')
47
+
48
+ "#{@client.url}/v1/tracks/#{track_id}/authorize?#{query}"
49
+ end
33
50
  end
34
51
  end
35
52
  end
@@ -1,20 +1,35 @@
1
1
  require 'base64'
2
2
  require 'openssl'
3
- require 'cgi'
3
+ require 'uri'
4
4
 
5
5
  module TopDMC
6
- module Resources
7
- module Utils
8
- def hmac_sha1_signature(key, signature_string)
9
- digest = OpenSSL::Digest::Digest.new( 'sha1' )
10
- hmac = OpenSSL::HMAC.digest( digest, key, signature_string )
11
- Base64.encode64( hmac ).chomp.gsub( /\n/, '' )
12
- end
6
+ module Resources
7
+ module Utils
8
+ def hmac_sha1_signature(key, signature_string)
9
+ digest = OpenSSL::Digest::Digest.new('sha1')
10
+ hmac = OpenSSL::HMAC.digest(digest, key, signature_string)
11
+ Base64.encode64(hmac).chomp.gsub(/\n/, '')
12
+ end
13
+
14
+ def nonce
15
+ rand(10 ** 30).to_s.rjust(30, '0')
16
+ end
17
+
18
+ def sign(method, path, params, key)
19
+
20
+ normalized = params.map { |key, value|
21
+ [key, URI.encode_www_form_component(value.to_s)]
22
+ }.sort.map { |item| item.join('=') }
23
+
24
+ sign_str = [method,
25
+ URI.encode_www_form_component(path),
26
+ URI.encode_www_form_component(normalized.join('&'))
27
+ ].join('&')
13
28
 
14
- def nonce
15
- rand(10 ** 30).to_s.rjust(30,'0')
16
- end
29
+ #return sign string
30
+ hmac_sha1_signature(key, sign_str)
17
31
  end
32
+ end
18
33
  end
19
34
  end
20
35
 
@@ -1,5 +1,5 @@
1
1
  module TopDMC
2
2
  module Resources
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: topdmc-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - liangyali