music_xray_api 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -1,24 +1,3 @@
1
- class Hash
2
- def to_url_params
3
- elements = []
4
- keys.size.times do |i|
5
- elements << "#{CGI::escape(keys[i])}=#{CGI::escape(values[i])}"
6
- end
7
- elements.join('&')
8
- end
9
-
10
- def self.from_url_params(url_params)
11
- result = {}.with_indifferent_access
12
- url_params.split('&').each do |element|
13
- element = element.split('=')
14
- result[element[0]] = element[1]
15
- end
16
- result
17
- end
18
- end
19
-
20
-
21
-
22
1
  module MusicXrayApi
23
2
 
24
3
  class Base
@@ -31,6 +10,12 @@ module MusicXrayApi
31
10
  def self.secret= s
32
11
  @@secret = s
33
12
  end
13
+ def self.api_endpoint= apiend
14
+ @@api_endpoint = apiend
15
+ end
16
+ def self.api_endpoint
17
+ return @@api_endpoint
18
+ end
34
19
  def self.rfc2616(time)
35
20
  time.utc.strftime("%a, %d %b %Y %H:%M:%S")+" +0000"
36
21
  end
@@ -40,53 +25,16 @@ module MusicXrayApi
40
25
  def self.sign_https_requestv3(date)
41
26
  return "{'client_key_id':'#{@@key}', 'algorithm':'HmacSHA256', 'signature':'#{Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest::Digest.new("sha256"), @@secret, date)).strip}'}"
42
27
  end
43
- def self.make_request(secret,key,postfix,form_hash,method)
44
- date = MusicXrayApi::Base.rfc2616(Time.now)
45
- uri = URI.parse("https://api.musicxray.com/#{postfix}.xml")
46
- http = Net::HTTP.new(uri.host, uri.port)
47
- http.use_ssl = true
48
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
49
- if method.to_s.downcase=="post"
50
- @request = Net::HTTP::Post.new(uri.request_uri)
51
- @request.set_form_data(form_hash)
52
- @request['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'
53
- elsif method.to_s.downcase=="get"
54
- @request = Net::HTTP::Get.new("#{uri.request_uri}?#{form_hash.to_url_params}")
55
- elsif method.to_s.downcase=="put"
56
- @request = Net::HTTP::Put.new(uri.request_uri)
57
- @request.set_form_data(form_hash)
58
- @request['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8'
59
- elsif method.to_s.downcase=="delete"
60
- @request = Net::HTTP::Delete.new("#{uri.request_uri}?#{form_hash.to_url_params}")
61
- end
62
- @request.add_field("Date",date)
63
- @request.add_field("X-Xray-Authorization",MusicXrayApi::Base.sign_https_request(@request,date,secret,key))
64
- response = http.request(@request)
65
- case response
66
- when Net::HTTPSuccess then return response
67
- when Net::HTTPClientError then raise "#{response.body}"
68
- when Net::HTTPServerError then raise "#{response.body}"
69
- else raise "#{response.body}"
70
- end
71
- #return response
72
- end
73
- def self.objectify_params(outer,params)
74
- nar = {}
75
- params.each do |key,value|
76
- nar["#{outer}[#{key}]"]=value
77
- end
78
- return nar
79
- end
80
28
  end
81
29
  end
82
-
83
30
  module ResourceMethods
84
31
  def self.included(klass)
85
32
  klass.extend ClassMethods
86
33
  end
87
34
  module ClassMethods
88
35
  def set_headers
89
- self.site = 'https://api.musicxray.com'
36
+ self.site = MusicXrayApi::Base.api_endpoint
37
+ self.format = :xml
90
38
  date = MusicXrayApi::Base.rfc2616(Time.now)
91
39
  headers['Date'] = date.to_s
92
40
  headers['X-Xray-Authorization'] = MusicXrayApi::Base.sign_https_requestv3(date)
@@ -8,7 +8,11 @@ require "digest/sha1"
8
8
  require "rubygems"
9
9
  #require "mail"
10
10
  #require "xmlsimple"
11
- require 'active_resource'
11
+ #gem 'activesupport', '2.3.5'
12
+ #gem 'activeresource', '2.3.5'
13
+ #require 'activesupport'
14
+ require 'activeresource'
15
+
12
16
 
13
17
 
14
18
  $:.unshift(File.dirname(__FILE__))
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{music_xray_api}
8
- s.version = "0.1.0"
7
+ s.name = "music_xray_api"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["jeff durand"]
12
- s.date = %q{2011-05-18}
13
- s.description = %q{wrapper for music xray api }
14
- s.email = %q{jeff.durand@gmail.com}
12
+ s.date = "2012-05-02"
13
+ s.description = "wrapper for music xray api "
14
+ s.email = "jeff.durand@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.rdoc"
@@ -32,10 +32,10 @@ Gem::Specification.new do |s|
32
32
  "test/helper.rb",
33
33
  "test/test_music_xray_api.rb"
34
34
  ]
35
- s.homepage = %q{http://github.com/johnnyiller/Music-Xray-Api-Wrapper}
35
+ s.homepage = "http://github.com/johnnyiller/Music-Xray-Api-Wrapper"
36
36
  s.require_paths = ["lib"]
37
- s.rubygems_version = %q{1.7.2}
38
- s.summary = %q{Interface with the music xray api}
37
+ s.rubygems_version = "1.8.23"
38
+ s.summary = "Interface with the music xray api"
39
39
 
40
40
  if s.respond_to? :specification_version then
41
41
  s.specification_version = 3
@@ -7,39 +7,105 @@ class TestMusicXrayApi < Test::Unit::TestCase
7
7
  YAML.load_file("./test/credentials.yml").each { |key,value| instance_variable_set("@#{key}", value) }
8
8
  MusicXrayApi::Base.key = @key
9
9
  MusicXrayApi::Base.secret = @secret
10
+ MusicXrayApi::Base.api_endpoint = @endpoint
10
11
  MusicXrayApi::Track.set_headers
11
12
  MusicXrayApi::TrackSet.set_headers
12
13
  MusicXrayApi::TrackSetMember.set_headers
13
14
  MusicXrayApi::TrackMatchRequest.set_headers
14
15
 
15
16
  end
16
- should "Be able to create a track." do
17
- tr = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com", :uri=>"xray/#{Time.now.to_i.to_s}"})
18
- puts tr.id
17
+ should "Find some cached tracks" do
18
+ params = {:application_name=>"present",:application_id=>"246458"}
19
+ puts MusicXrayApi::Track.find(:all,:params=>params).first.inspect
19
20
  end
20
- should "be able to do crud for track sets" do
21
- ts = MusicXrayApi::TrackSet.new
22
- ts.name = "another my new one"
23
- puts ts.save
24
- puts ts.id
25
- unless ts
26
- ts.errors
27
- end
28
- fts = MusicXrayApi::TrackSet.find(ts.id)
29
- puts fts.name
30
- end
31
- should "be able to add a track I create to a track set I also create" do
32
- t1 = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com", :uri=>"xray/#{Time.now.to_i.to_s}1"})
33
- t2 = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com", :uri=>"xray/#{Time.now.to_i.to_s}2"})
34
- t3 = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com", :uri=>"xray/#{Time.now.to_i.to_s}3"})
35
- ts = MusicXrayApi::TrackSet.create({:name=>"whatever it's just a name"})
36
- tsm = MusicXrayApi::TrackSetMember.create({:track_id=>t1.id, :track_set_id=>ts.id})
37
- tsm = MusicXrayApi::TrackSetMember.create({:track_id=>t2.id, :track_set_id=>ts.id})
38
- # testing matching request capable
39
- tmr = MusicXrayApi::TrackMatchRequest.create({:track_id=>t3.id, :track_set_id=>ts.id,:result_delivery_method=>'none'})
40
-
41
- end
42
-
21
+ #
22
+ # should "Be able to create a track." do
23
+ # tr = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com", :uri=>"xray/#{Time.now.to_i.to_s}"})
24
+ # puts tr.id
25
+ # end
26
+ # should "be able to do crud for track sets" do
27
+ # ts = MusicXrayApi::TrackSet.new
28
+ # ts.name = "another my new one"
29
+ # puts ts.save
30
+ # puts ts.id
31
+ # unless ts
32
+ # ts.errors
33
+ # end
34
+ # fts = MusicXrayApi::TrackSet.find(ts.id)
35
+ # #fts.destroy
36
+ # puts fts.name
37
+ # end
38
+ # should "be able to add a track I create to a track set I also create" do
39
+ # turi1 = "xray/#{Time.now.to_i.to_s}1"
40
+ # turi2 = "xray/#{Time.now.to_i.to_s}2"
41
+ # turi3 = "xray/#{Time.now.to_i.to_s}3"
42
+ # ids = [turi1,turi2]
43
+ # t1 = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com", :uri=>turi1})
44
+ # t2 = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com", :uri=>turi2})
45
+ # t3 = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com", :uri=>turi3})
46
+ # ts = MusicXrayApi::TrackSet.create({:name=>"whatever it's just a name"})
47
+ # tsm = MusicXrayApi::TrackSetMember.create({:track_id=>t1.id, :track_set_id=>ts.id})
48
+ # tsm = MusicXrayApi::TrackSetMember.create({:track_id=>t2.id, :track_set_id=>ts.id})
49
+ # # testing matching request capable
50
+ # tmr = MusicXrayApi::TrackMatchRequest.create({:track_id=>t3.id, :track_set_id=>ts.id,:result_delivery_method=>'none'})
51
+ # #puts tsm.inspect
52
+ # tsm.destroy
53
+ # puts ids.inspect
54
+ # tracks = MusicXrayApi::Track.find :all, :params=>{:uris=>ids.join(",")}
55
+ # puts tracks.inspect
56
+ # end
57
+ # should "be able to update a track causing it to re-index" do
58
+ # t = MusicXrayApi::Track.find :all
59
+ # #puts t.inspect
60
+ # f = t.first
61
+ # f.recalcfeatures = true
62
+ # f.save
63
+ # f.reload
64
+ # puts f.inspect
65
+ # end
66
+ #
67
+ # should "be able to find all tracks that aren't extracted" do
68
+ # @page = 0
69
+ # #puts MusicXrayApi::Track.find(:all, params=>{:page=>@page}).inspect
70
+ # #while(tracks = MusicXrayApi::Track.find(:all, :params=>{:page=>@page, :extracted=>false})) do
71
+ # # puts @page
72
+ # # puts "found #{tracks.size} tracks"
73
+ # # if tracks.size <= 0
74
+ # # break
75
+ # # end
76
+ # # puts tracks.first.id
77
+ # # puts tracks.last.id
78
+ # #tracks.each do |t|
79
+ # # puts t.id
80
+ # #end
81
+ # #tracks = nil
82
+ # # @page +=1
83
+ # #end
84
+ #
85
+ # #while(track_match_requests = MusicXrayApi::TrackMatchRequest.find(:all,:params=>{:page=>@page,:limit=>50})) do
86
+ # # puts @page
87
+ # # puts "found matches #{track_match_requests.size}"
88
+ # # if track_match_requests.size <= 0
89
+ # # break
90
+ # # end
91
+ # # puts track_match_requests.first.id
92
+ # # puts track_match_requests.last.id
93
+ # # @page+=1
94
+ # #end
95
+ # #@trm = MusicXrayApi::TrackMatchRequest.find(:all,:params=>{:limit=>1}).first
96
+ # #@trm.put(:rematch)
97
+ # #@trm.inspect
98
+ # end
99
+ # should "be able to create track and find it later" do
100
+ # # time = Time.now.to_i.to_s
101
+ # # t1 = MusicXrayApi::Track.create({:mp3_url=>"http://www.google.com",
102
+ # # :uri=>"xray/#{Time.now.to_i.to_s}12",
103
+ # # :application_name=>'myxrays',
104
+ # # :application_id=>"#{time}"})
105
+ # #puts t1.inspect
106
+ # # tracks = MusicXrayApi::Track.find :all, :params=>{:application_name=>'myxrays', :application_id=>time}
107
+ #
108
+ # end
43
109
  end
44
110
  end
45
111
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: music_xray_api
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - jeff durand
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-18 00:00:00 Z
13
+ date: 2012-05-02 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: xml-simple
@@ -70,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
70
  requirements: []
71
71
 
72
72
  rubyforge_project:
73
- rubygems_version: 1.7.2
73
+ rubygems_version: 1.8.23
74
74
  signing_key:
75
75
  specification_version: 3
76
76
  summary: Interface with the music xray api