tunecore_direct 0.0.1 → 0.0.2

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.
data.tar.gz.sig CHANGED
Binary file
@@ -23,13 +23,12 @@ module TunecoreDirect
23
23
  class Album < TunecoreDirect::Base
24
24
  include TunecoreDirect
25
25
 
26
- attr_accessor :album_id, :person_id, :name, :orig_release_year, :sale_date, :primary_genre, :secondary_genre
27
- attr_accessor :artist_name, :label_name, :c_copyright, :p_copyright, :recording_location
28
- attr_accessor :errors
29
- attr_accessor :artwork_s3_url
26
+ attr_accessor :album_id, :person_id, :name, :orig_release_date, :sale_date, :primary_genre, :secondary_genre
27
+ attr_accessor :artist_name, :label_name, :c_copyright, :p_copyright, :recording_location, :parental_advisory
28
+ attr_accessor :artwork_s3_id, :takedown_at
29
+ attr_accessor :errors
30
30
  attr_accessor :stores, :state
31
31
 
32
-
33
32
  def initialize(options = {})
34
33
  options.each do |k,v|
35
34
  self.send("#{k}=", v)
@@ -38,20 +37,23 @@ module TunecoreDirect
38
37
 
39
38
  # Creates an Album object from a Rexml:Element
40
39
  def self.from_xml_element( album_element)
40
+ @xml = album_element
41
+ #puts @xml
41
42
  album = self.new
42
43
  album.album_id = album_element.elements["id"].text
43
44
  album.person_id = album_element.elements["person-id"].text
44
45
  album.name = album_element.elements["name"].text
45
- album.orig_release_year = album_element.elements["orig-release-year"].text
46
+ album.orig_release_date = album_element.elements["orig-release-year"].text
46
47
  album.sale_date = album_element.elements["sale-date"].text
47
48
  album.primary_genre = album_element.elements["primary-genre"].text
48
49
  album.secondary_genre = album_element.elements["secondary-genre"].text unless album_element.elements["secondary-genre"].nil?
49
50
  album.artist_name = album_element.elements["artist"].elements["name"].text
50
- album.label_name = album_element.elements["label"].elements["name"].text
51
+ album.label_name = album_element.elements["label-name"].text
51
52
  album.c_copyright = album_element.elements["c-copyright"].text
52
53
  album.p_copyright = album_element.elements["p-copyright"].text
53
54
  album.recording_location = album_element.elements["recording-location"].text
54
55
  album.state = album_element.elements["state"].text
56
+ album.takedown_at = album_element.elements["takedown-at"].text
55
57
  return album
56
58
  end
57
59
 
@@ -60,7 +62,7 @@ module TunecoreDirect
60
62
  req = Request.new
61
63
  params = { "person_id" => @person_id,
62
64
  "name" => @name,
63
- "orig_release_year" => @orig_release_year,
65
+ "orig_release_year" => @orig_release_date,
64
66
  "sale_date" => @sale_date,
65
67
  "primary_genre" => @primary_genre,
66
68
  "secondary_genre" => @secondary_genre,
@@ -68,7 +70,8 @@ module TunecoreDirect
68
70
  "label_name" => @label_name,
69
71
  "c_copyright" => @c_copyright,
70
72
  "p_copyright" => @p_copyright,
71
- "recording_location" => @recording_location }
73
+ "recording_location" => @recording_location,
74
+ "stores" => @stores }
72
75
  res = req.create_album(params)
73
76
  raise "Unexpected return type: #{res.type}" unless res.type == "album"
74
77
  if res.status == "created"
@@ -79,6 +82,22 @@ module TunecoreDirect
79
82
  return false
80
83
  end
81
84
  end
85
+
86
+ # Returns an Album
87
+ def self.get(album_id)
88
+ req = Request.new
89
+ res = req.get_album(album_id)
90
+ raise "Unexpected return type: #{res.type}" unless res.type == "album"
91
+ return res.object
92
+ end
93
+
94
+ # Returns all your albums. If a person_id is specified it will return only albums for that person.
95
+ def self.get_all(person_id=nil)
96
+ req = Request.new
97
+ res = req.get_albums(person_id)
98
+ raise "Unexpected return type: #{res.type}" unless res.type == "albums"
99
+ return res.object
100
+ end
82
101
 
83
102
  # Returns an array that contains every Song in this Album
84
103
  def songs
@@ -96,10 +115,21 @@ module TunecoreDirect
96
115
  raise "Album#finalize is not implemented in this version of the SDK"
97
116
  end
98
117
 
99
- # Returns the XML element for this Album, if it was created from the api.
100
- def to_xml
101
- raise "Album#to_xml is not implemented in this version of the SDK"
118
+ # Takes down an album from the stores
119
+ def self.takedown(album_id)
120
+ req = Request.new
121
+ res = req.takedown_album(album_id)
122
+ raise "Unexpected return type: #{res.type}" unless res.type == "album"
123
+ if res.object.takedown_at != nil
124
+ return true
125
+ else
126
+ return false
127
+ end
102
128
  end
103
-
129
+
130
+ def is_taken_down?
131
+ !@takedown.nil?
132
+ end
133
+
104
134
  end
105
135
  end
@@ -1,3 +1,4 @@
1
+ require 'Logger'
1
2
  module TunecoreDirect
2
3
 
3
4
  # = TunecoreDirect
@@ -58,9 +59,15 @@ module TunecoreDirect
58
59
  # Copyright:: Copyright (c) 2008 Tunecore
59
60
  # License:: GNU LPGPL
60
61
  class TunecoreDirect::Base
62
+ attr_accessor :log
61
63
  @@tunecore_server = nil
62
64
  @@api_key = nil
63
-
65
+
66
+ def log( method, params=nil )
67
+ @log = Logger.new(STDOUT) if @log.nil?
68
+ @log.send(method, params)
69
+ end
70
+
64
71
  def self.tunecore_server=(uri)
65
72
  @@tunecore_server = uri
66
73
  end
@@ -84,6 +91,10 @@ module TunecoreDirect
84
91
  def api_key
85
92
  @@api_key
86
93
  end
94
+
95
+ def to_xml
96
+ @xml
97
+ end
87
98
 
88
99
  end
89
100
 
@@ -30,7 +30,7 @@ module TunecoreDirect
30
30
  def self.from_xml_element(person_element)
31
31
  @xml_element = person_element
32
32
  person = self.new
33
- person.person_id = person_element.attributes["person_id"]
33
+ person.person_id = person_element.elements["id"].text
34
34
  person.email = person_element.elements["email"].text
35
35
  person.name = person_element.elements["name"].text
36
36
  person.phone_number = person_element.elements["phone_number"].text
@@ -44,7 +44,7 @@ module TunecoreDirect
44
44
  def get_albums(person_id=nil)
45
45
  params = { "person_id" => person_id }
46
46
  http_res = http_post("get_albums", params )
47
- tc_res = Response.new( http_res.body )
47
+ tc_res = Response.new( http_res.body )
48
48
  return tc_res
49
49
  end
50
50
 
@@ -62,7 +62,15 @@ module TunecoreDirect
62
62
  tc_res = Response.new( http_res.body )
63
63
  return tc_res
64
64
  end
65
-
65
+
66
+ # Sends a takedown request for this album
67
+ def takedown_album(album_id)
68
+ params = {"album_id" => album_id}
69
+ http_res = http_post("takedown_album", params )
70
+ tc_res = Response.new( http_res.body )
71
+ return tc_res
72
+ end
73
+
66
74
  private
67
75
 
68
76
  # Make contact with TC. API key is inserted here automatically and is used to authenticate and authorize the request.
@@ -70,11 +70,6 @@ module TunecoreDirect
70
70
  end
71
71
  end
72
72
 
73
- # Returns the XML body of the web service response
74
- def to_xml
75
- @body
76
- end
77
-
78
73
 
79
74
  end
80
75
 
@@ -2,7 +2,7 @@ module TunecoreDirect #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 1
5
+ TINY = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -1,11 +1,73 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TestTunecoreDirect < Test::Unit::TestCase
4
-
5
- def setup
6
- end
7
-
8
- def test_truth
9
- assert true
10
- end
11
- end
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestTunecoreDirect < Test::Unit::TestCase
4
+
5
+ def setup
6
+ TunecoreDirect::Base.tunecore_server = "http://test.tunecore.com"
7
+ TunecoreDirect::Base.api_key = "testkey"
8
+
9
+ #random email address so we dont get collisions after the first test
10
+ chars = ["A".."Z","a".."z","0".."9"].collect { |r| r.to_a }.join
11
+ @email = (1..8).collect { chars[rand(chars.size)] }.pack("C*") + "@domain.com"
12
+ end
13
+
14
+ def test_can_create_person
15
+ person = TunecoreDirect::Person.new
16
+ person.name = "Joe Schmoe"
17
+ person.email = @email
18
+ person.password = "my_pas$word"
19
+ person.phone_number = "212-555-1212"
20
+ person.country = "United States"
21
+ person.postal_code = "11201"
22
+ created = person.create
23
+ assert created == true
24
+ end
25
+
26
+ def test_can_create_person_and_album_and_song
27
+ # create the person
28
+ person = TunecoreDirect::Person.new
29
+ person.name = "Joe Schmoe"
30
+ person.email = @email
31
+ person.password = "my_pas$word"
32
+ person.phone_number = "212-555-1212"
33
+ person.country = "United States"
34
+ person.postal_code = "11201"
35
+ assert person.create
36
+
37
+ # create the album
38
+ album = TunecoreDirect::Album.new
39
+ album.name = "My Album"
40
+ album.person_id = person.person_id
41
+ album.orig_release_date = "2008-02-23"
42
+ album.sale_date = "2008-02-23"
43
+ album.primary_genre = "Rock"
44
+ album.secondary_genre = "Alternative"
45
+ album.artist_name = "Alex Kane"
46
+ album.label_name = "Shochu"
47
+ album.c_copyright = "1999"
48
+ album.p_copyright = "1999"
49
+ album.recording_location = "Bucktown"
50
+ album.parental_advisory = false
51
+ album.stores = "iTunesUS,iTunesAU,iTunesCA,iTunesEU,iTunesJP,iTunesEU,RhapsodyRH,MusicNet,Napster,eMusic,Amazon,Lala"
52
+ created = album.create
53
+ assert created == true
54
+
55
+ #create the song
56
+ song = TunecoreDirect::Song.new
57
+ song.album_id = album.album_id
58
+ song.name = "My song"
59
+ assert song.save == true
60
+
61
+ # get all albums
62
+ albums = TunecoreDirect::Album.get_all
63
+ puts albums.inspect
64
+ assert albums.size > 0
65
+
66
+ # takedown the first album
67
+ album_id = albums.first.album_id
68
+ assert TunecoreDirect::Album.takedown( album_id ) != nil
69
+
70
+ end
71
+
72
+
73
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tunecore_direct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Kane
@@ -30,7 +30,7 @@ cert_chain:
30
30
  f3TSOQ==
31
31
  -----END CERTIFICATE-----
32
32
 
33
- date: 2008-04-09 00:00:00 -04:00
33
+ date: 2008-04-11 00:00:00 -04:00
34
34
  default_executable:
35
35
  dependencies: []
36
36
 
metadata.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
- 0�r4��V�����Ɉ�y*�`��PPLo�Q ��M��'��T��?w����L�z��F& N���_��]��J����E�<InV�$���|Mp��#"!-�ll��������v��2�����.��w��uK��\>��j2��A7@ْ�V8���e�
2
- %*��_�!=V��%jr������c&�}S��T��LέM��7fu�b���|�IF��&�Ɛ�S��j��{wxQ�軝�_�����p�
1
+ e�U[S2��,n��TBL`M#��`c�mSIy��Y�|���.W�e��@���0��2~�aR�,@���:��c��-B�J)5�TV����˱�W���e���O'�a�r~ꅈa�]����#7
2
+ iZZ?���~̯==j�uFu�/�-e������g�V[��4a������%VCg�6+d(U���u8㼿��>�ԁ$���)�����ɑ�\.�+9 ���p���A��o3M9�^�I�ߢf�<