topdmc-client 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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