tunecore_direct 0.0.1
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 +0 -0
- data/History.txt +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +26 -0
- data/README.txt +48 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +70 -0
- data/config/requirements.rb +15 -0
- data/lib/tunecore_direct.rb +14 -0
- data/lib/tunecore_direct/album.rb +105 -0
- data/lib/tunecore_direct/base.rb +90 -0
- data/lib/tunecore_direct/person.rb +83 -0
- data/lib/tunecore_direct/request.rb +79 -0
- data/lib/tunecore_direct/response.rb +81 -0
- data/lib/tunecore_direct/song.rb +62 -0
- data/lib/tunecore_direct/version.rb +9 -0
- data/log/debug.log +0 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +74 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +17 -0
- data/test/test_helper.rb +2 -0
- data/test/test_tunecore_direct.rb +11 -0
- metadata +105 -0
- metadata.gz.sig +2 -0
data.tar.gz.sig
ADDED
Binary file
|
data/History.txt
ADDED
data/License.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008 FIXME full name
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest.txt
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
History.txt
|
2
|
+
License.txt
|
3
|
+
Manifest.txt
|
4
|
+
README.txt
|
5
|
+
Rakefile
|
6
|
+
config/hoe.rb
|
7
|
+
config/requirements.rb
|
8
|
+
lib/tunecore_direct.rb
|
9
|
+
lib/tunecore_direct/album.rb
|
10
|
+
lib/tunecore_direct/base.rb
|
11
|
+
lib/tunecore_direct/person.rb
|
12
|
+
lib/tunecore_direct/request.rb
|
13
|
+
lib/tunecore_direct/response.rb
|
14
|
+
lib/tunecore_direct/song.rb
|
15
|
+
lib/tunecore_direct/version.rb
|
16
|
+
log/debug.log
|
17
|
+
script/console
|
18
|
+
script/destroy
|
19
|
+
script/generate
|
20
|
+
script/txt2html
|
21
|
+
setup.rb
|
22
|
+
tasks/deployment.rake
|
23
|
+
tasks/environment.rake
|
24
|
+
tasks/website.rake
|
25
|
+
test/test_helper.rb
|
26
|
+
test/test_tunecore_direct.rb
|
data/README.txt
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
= tunecore_direct
|
2
|
+
|
3
|
+
* FIX (url)
|
4
|
+
|
5
|
+
== DESCRIPTION:
|
6
|
+
|
7
|
+
FIX (describe your package)
|
8
|
+
|
9
|
+
== FEATURES/PROBLEMS:
|
10
|
+
|
11
|
+
* FIX (list of features or problems)
|
12
|
+
|
13
|
+
== SYNOPSIS:
|
14
|
+
|
15
|
+
FIX (code sample of usage)
|
16
|
+
|
17
|
+
== REQUIREMENTS:
|
18
|
+
|
19
|
+
* FIX (list of requirements)
|
20
|
+
|
21
|
+
== INSTALL:
|
22
|
+
|
23
|
+
* FIX (sudo gem install, anything else)
|
24
|
+
|
25
|
+
== LICENSE:
|
26
|
+
|
27
|
+
(The MIT License)
|
28
|
+
|
29
|
+
Copyright (c) 2008 FIX
|
30
|
+
|
31
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
32
|
+
a copy of this software and associated documentation files (the
|
33
|
+
'Software'), to deal in the Software without restriction, including
|
34
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
35
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
36
|
+
permit persons to whom the Software is furnished to do so, subject to
|
37
|
+
the following conditions:
|
38
|
+
|
39
|
+
The above copyright notice and this permission notice shall be
|
40
|
+
included in all copies or substantial portions of the Software.
|
41
|
+
|
42
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
43
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
44
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
45
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
46
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
47
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
48
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
data/config/hoe.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'tunecore_direct/version'
|
2
|
+
|
3
|
+
AUTHOR = 'Alex Kane' # can also be an array of Authors
|
4
|
+
EMAIL = "alex@tunecore.com"
|
5
|
+
DESCRIPTION = "Ruby SDK for TuneCore web services"
|
6
|
+
GEM_NAME = 'tunecore_direct' # what ppl will type to install your gem
|
7
|
+
RUBYFORGE_PROJECT = 'tunecoredirect' # The unix name for your project
|
8
|
+
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
9
|
+
DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
|
10
|
+
|
11
|
+
@config_file = "~/.rubyforge/user-config.yml"
|
12
|
+
@config = nil
|
13
|
+
RUBYFORGE_USERNAME = "alexkane"
|
14
|
+
def rubyforge_username
|
15
|
+
unless @config
|
16
|
+
begin
|
17
|
+
@config = YAML.load(File.read(File.expand_path(@config_file)))
|
18
|
+
rescue
|
19
|
+
puts <<-EOS
|
20
|
+
ERROR: No rubyforge config file found: #{@config_file}
|
21
|
+
Run 'rubyforge setup' to prepare your env for access to Rubyforge
|
22
|
+
- See http://newgem.rubyforge.org/rubyforge.html for more details
|
23
|
+
EOS
|
24
|
+
exit
|
25
|
+
end
|
26
|
+
end
|
27
|
+
RUBYFORGE_USERNAME.replace @config["username"]
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
REV = nil
|
32
|
+
# UNCOMMENT IF REQUIRED:
|
33
|
+
# REV = YAML.load(`svn info`)['Revision']
|
34
|
+
VERS = TunecoreDirect::VERSION::STRING + (REV ? ".#{REV}" : "")
|
35
|
+
RDOC_OPTS = ['--quiet', '--title', 'tunecore_direct documentation',
|
36
|
+
"--opname", "index.html",
|
37
|
+
"--line-numbers",
|
38
|
+
"--main", "README",
|
39
|
+
"--inline-source"]
|
40
|
+
|
41
|
+
class Hoe
|
42
|
+
def extra_deps
|
43
|
+
@extra_deps.reject! { |x| Array(x).first == 'hoe' }
|
44
|
+
@extra_deps
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Generate all the Rake tasks
|
49
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
50
|
+
$hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
51
|
+
p.developer(AUTHOR, EMAIL)
|
52
|
+
p.description = DESCRIPTION
|
53
|
+
p.summary = DESCRIPTION
|
54
|
+
p.url = HOMEPATH
|
55
|
+
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
56
|
+
p.test_globs = ["test/**/test_*.rb"]
|
57
|
+
p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
|
58
|
+
|
59
|
+
# == Optional
|
60
|
+
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
61
|
+
#p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
|
62
|
+
|
63
|
+
#p.spec_extras = {} # A hash of extra values to set in the gemspec.
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
|
68
|
+
PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
|
69
|
+
$hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
|
70
|
+
$hoe.rsync_args = '-av --delete --ignore-errors'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
include FileUtils
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
%w[rake hoe newgem rubigen].each do |req_gem|
|
6
|
+
begin
|
7
|
+
require req_gem
|
8
|
+
rescue LoadError
|
9
|
+
puts "This Rakefile requires the '#{req_gem}' RubyGem."
|
10
|
+
puts "Installation: gem install #{req_gem} -y"
|
11
|
+
exit
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
$:.unshift(File.join(File.dirname(__FILE__), %w[.. lib]))
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# See TunecoreDirect::Base
|
2
|
+
module TunecoreDirect
|
3
|
+
require 'rexml/document'
|
4
|
+
require 'net/http'
|
5
|
+
require 'uri'
|
6
|
+
|
7
|
+
require "tunecore_direct"
|
8
|
+
require "tunecore_direct/base"
|
9
|
+
require "tunecore_direct/request"
|
10
|
+
require "tunecore_direct/response"
|
11
|
+
require "tunecore_direct/person"
|
12
|
+
require "tunecore_direct/album"
|
13
|
+
require "tunecore_direct/song"
|
14
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# See TunecoreDirect#Base
|
2
|
+
module TunecoreDirect
|
3
|
+
|
4
|
+
# Represents an individual TuneCore Album. Each album belongs to a Person and has one or more Song objects attached to it.
|
5
|
+
# To attach artwork to the Album you should place the Artwork file on Amazon S3 and provide the S3 location in the #artwork_s3_url accessor.
|
6
|
+
# You can upload the artwork file using !TuneCore's web-based upload tool or you can use a 3rd party S3 interface such as the
|
7
|
+
# Amazon_S3_Library_for_REST_in_Ruby[http://developer.amazonwebservices.com/connect/entry.jspa?externalID=135].
|
8
|
+
#
|
9
|
+
# Stores should be defined using the following abbreviations, seperated by commas:
|
10
|
+
# iTunesUS
|
11
|
+
# iTunesAU
|
12
|
+
# iTunesCA
|
13
|
+
# iTunesEU
|
14
|
+
# iTunesJP
|
15
|
+
# iTunesUK
|
16
|
+
# RhapsodyRH
|
17
|
+
# MusicNet
|
18
|
+
# Napster
|
19
|
+
# eMusic
|
20
|
+
# Amazon
|
21
|
+
# Lala
|
22
|
+
#
|
23
|
+
class Album < TunecoreDirect::Base
|
24
|
+
include TunecoreDirect
|
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
|
30
|
+
attr_accessor :stores, :state
|
31
|
+
|
32
|
+
|
33
|
+
def initialize(options = {})
|
34
|
+
options.each do |k,v|
|
35
|
+
self.send("#{k}=", v)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Creates an Album object from a Rexml:Element
|
40
|
+
def self.from_xml_element( album_element)
|
41
|
+
album = self.new
|
42
|
+
album.album_id = album_element.elements["id"].text
|
43
|
+
album.person_id = album_element.elements["person-id"].text
|
44
|
+
album.name = album_element.elements["name"].text
|
45
|
+
album.orig_release_year = album_element.elements["orig-release-year"].text
|
46
|
+
album.sale_date = album_element.elements["sale-date"].text
|
47
|
+
album.primary_genre = album_element.elements["primary-genre"].text
|
48
|
+
album.secondary_genre = album_element.elements["secondary-genre"].text unless album_element.elements["secondary-genre"].nil?
|
49
|
+
album.artist_name = album_element.elements["artist"].elements["name"].text
|
50
|
+
album.label_name = album_element.elements["label"].elements["name"].text
|
51
|
+
album.c_copyright = album_element.elements["c-copyright"].text
|
52
|
+
album.p_copyright = album_element.elements["p-copyright"].text
|
53
|
+
album.recording_location = album_element.elements["recording-location"].text
|
54
|
+
album.state = album_element.elements["state"].text
|
55
|
+
return album
|
56
|
+
end
|
57
|
+
|
58
|
+
# Creates a new album
|
59
|
+
def create
|
60
|
+
req = Request.new
|
61
|
+
params = { "person_id" => @person_id,
|
62
|
+
"name" => @name,
|
63
|
+
"orig_release_year" => @orig_release_year,
|
64
|
+
"sale_date" => @sale_date,
|
65
|
+
"primary_genre" => @primary_genre,
|
66
|
+
"secondary_genre" => @secondary_genre,
|
67
|
+
"artist_name" => @artist_name,
|
68
|
+
"label_name" => @label_name,
|
69
|
+
"c_copyright" => @c_copyright,
|
70
|
+
"p_copyright" => @p_copyright,
|
71
|
+
"recording_location" => @recording_location }
|
72
|
+
res = req.create_album(params)
|
73
|
+
raise "Unexpected return type: #{res.type}" unless res.type == "album"
|
74
|
+
if res.status == "created"
|
75
|
+
@album_id = res.object.album_id
|
76
|
+
return true
|
77
|
+
else
|
78
|
+
@errors = res.errors
|
79
|
+
return false
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Returns an array that contains every Song in this Album
|
84
|
+
def songs
|
85
|
+
raise "Album#songs is not implemented in this version of the SDK"
|
86
|
+
end
|
87
|
+
|
88
|
+
# Returns the number of songs that have been created for this album
|
89
|
+
def song_count
|
90
|
+
raise "Album#song_count is not implemented in this version of the SDK"
|
91
|
+
end
|
92
|
+
|
93
|
+
# Once you call Album#finalize the album will be queued for delivery to the stores. After you call finalize you can no longer make changes to the Album.
|
94
|
+
# All the songs should be created and media assets for the Album should be uploaded to S3.
|
95
|
+
def finalize
|
96
|
+
raise "Album#finalize is not implemented in this version of the SDK"
|
97
|
+
end
|
98
|
+
|
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"
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module TunecoreDirect
|
2
|
+
|
3
|
+
# = TunecoreDirect
|
4
|
+
# TunecoreDirect is a REST/XML based web service API that allows Tunecore partners to "white label" the Tunecore
|
5
|
+
# media distribution platform, letting you offer Tunecore's services to your customers transparently.
|
6
|
+
# The web service allows a partner to:
|
7
|
+
#
|
8
|
+
# 1. Create/Query customer accounts
|
9
|
+
# 2. Publish albums that belong to customer accounts
|
10
|
+
#
|
11
|
+
# To get started with the API first obtain an API key, then have a look at these three class which you will use to interact with TuneCore:
|
12
|
+
# * Person
|
13
|
+
# * Album
|
14
|
+
# * Song
|
15
|
+
# These three classes provide all the functionality you will need to easily manage your accounts and publish albums through TuneCore. Under the hood they use the
|
16
|
+
# Request and Response classes to interact with the TunecoreDirect REST API.
|
17
|
+
# ---
|
18
|
+
# === Short Example
|
19
|
+
# Set up your environment:
|
20
|
+
#
|
21
|
+
# require 'tunecore_direct'
|
22
|
+
# TunecoreDirect::Base.tunecore_server = "http://localhost:3000"
|
23
|
+
# TunecoreDirect::Base.api_key = "57247d992de24d7840a1b75dc2e5c30a"
|
24
|
+
# request = TunecoreDirect::Request.new
|
25
|
+
#
|
26
|
+
# Create a person:
|
27
|
+
# # Make a new a person object and set all the attributes
|
28
|
+
# person = TunecoreDirect::Person.new( :name => "Alex Kane",
|
29
|
+
# :email => "alex@gmail.com",
|
30
|
+
# :phone_number => "212-555-1212",
|
31
|
+
# :country => "United States",
|
32
|
+
# :postal_code => "11201" )
|
33
|
+
# # Create the person on the Tunecore server
|
34
|
+
# person.create
|
35
|
+
# => false
|
36
|
+
# # Hmm it didn't work. Let's find out why.
|
37
|
+
# person.errors
|
38
|
+
# => [{:message=>"can't be blank", :attribute=>"password"}]
|
39
|
+
# # Doh! We forgot to set a password.
|
40
|
+
# person.password = "paSSword"
|
41
|
+
# person.create
|
42
|
+
# => true
|
43
|
+
# # It worked, and we can now get the person_id which we will use later to create albums for this person
|
44
|
+
# person.person_id
|
45
|
+
# => 55342
|
46
|
+
#
|
47
|
+
# Get a list of your people:
|
48
|
+
#
|
49
|
+
# response = request.list_people
|
50
|
+
# response.status
|
51
|
+
# => "complete"
|
52
|
+
# response.type
|
53
|
+
# => "people"
|
54
|
+
# response.object.first.email
|
55
|
+
# => "joe1243@blow.com"
|
56
|
+
#
|
57
|
+
# Author:: Alex Kane (mailto:alex@tunecore.com)
|
58
|
+
# Copyright:: Copyright (c) 2008 Tunecore
|
59
|
+
# License:: GNU LPGPL
|
60
|
+
class TunecoreDirect::Base
|
61
|
+
@@tunecore_server = nil
|
62
|
+
@@api_key = nil
|
63
|
+
|
64
|
+
def self.tunecore_server=(uri)
|
65
|
+
@@tunecore_server = uri
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.tunecore_server
|
69
|
+
@@tunecore_server
|
70
|
+
end
|
71
|
+
|
72
|
+
def tunecore_server
|
73
|
+
@@tunecore_server
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.api_key=(key)
|
77
|
+
@@api_key = key
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.api_key
|
81
|
+
@@api_key
|
82
|
+
end
|
83
|
+
|
84
|
+
def api_key
|
85
|
+
@@api_key
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module TunecoreDirect
|
2
|
+
|
3
|
+
# Represents a individual TuneCore account
|
4
|
+
#
|
5
|
+
# Required fields are:
|
6
|
+
# * email
|
7
|
+
# * name
|
8
|
+
# * phone_number
|
9
|
+
# * postal_code
|
10
|
+
# * country
|
11
|
+
# * password
|
12
|
+
#
|
13
|
+
# Once you set these instance variables you can call Person#create to create the account at TuneCore. When the account is created the person_id will be
|
14
|
+
# set which you should use to track the user in your system.
|
15
|
+
#
|
16
|
+
# If you don't set these instance variables before calling Person#create the call will return false and the Person#errors accessor will be
|
17
|
+
# populated with a list of errors that you will need to fix.
|
18
|
+
class TunecoreDirect::Person < TunecoreDirect::Base
|
19
|
+
include TunecoreDirect
|
20
|
+
|
21
|
+
attr_accessor :person_id, :email, :name, :phone_number, :postal_code, :country, :password, :errors
|
22
|
+
|
23
|
+
def initialize(options = {})
|
24
|
+
options.each do |k,v|
|
25
|
+
self.send("#{k}=", v)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# takes an Rexml::Element and builds a person out of it
|
30
|
+
def self.from_xml_element(person_element)
|
31
|
+
@xml_element = person_element
|
32
|
+
person = self.new
|
33
|
+
person.person_id = person_element.attributes["person_id"]
|
34
|
+
person.email = person_element.elements["email"].text
|
35
|
+
person.name = person_element.elements["name"].text
|
36
|
+
person.phone_number = person_element.elements["phone_number"].text
|
37
|
+
return person
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns the XML representation of this person
|
41
|
+
def to_xml
|
42
|
+
return false if @xml_element.nil?
|
43
|
+
@xml_element.text
|
44
|
+
end
|
45
|
+
|
46
|
+
# Creates this person record in the Tunecore system
|
47
|
+
def create
|
48
|
+
req = Request.new
|
49
|
+
res = req.create_person(@email, @password, @name, @phone_number, @country, @postal_code)
|
50
|
+
raise "Unexpected return type: #{res.type}" unless res.type == "person"
|
51
|
+
if res.status == "complete"
|
52
|
+
@person_id = res.object.person_id
|
53
|
+
return true
|
54
|
+
else
|
55
|
+
@errors = res.errors
|
56
|
+
return false
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Creates a new album for this Person
|
61
|
+
def create_album(params={})
|
62
|
+
params[:person_id] = self.person_id
|
63
|
+
album = TunecoreDirect::Album.new(params)
|
64
|
+
album.create
|
65
|
+
return album
|
66
|
+
end
|
67
|
+
|
68
|
+
# Returns an array of people associated with your account
|
69
|
+
def self.get_people
|
70
|
+
req = Request.new
|
71
|
+
req.get_people.object
|
72
|
+
end
|
73
|
+
|
74
|
+
# Returns an array of albums owned by this person
|
75
|
+
def albums
|
76
|
+
req = Request.new
|
77
|
+
req.get_albums(person_id).object
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|