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