rtunesu 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +77 -0
- data/README.txt +38 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +75 -0
- data/config/requirements.rb +15 -0
- data/lib/multipart.rb +53 -0
- data/lib/rtunesu/connection.rb +111 -0
- data/lib/rtunesu/document.rb +84 -0
- data/lib/rtunesu/entities/course.rb +8 -0
- data/lib/rtunesu/entities/division.rb +16 -0
- data/lib/rtunesu/entities/group.rb +8 -0
- data/lib/rtunesu/entities/permission.rb +7 -0
- data/lib/rtunesu/entities/section.rb +15 -0
- data/lib/rtunesu/entities/site.rb +7 -0
- data/lib/rtunesu/entities/theme.rb +4 -0
- data/lib/rtunesu/entities/track.rb +13 -0
- data/lib/rtunesu/entity.rb +154 -0
- data/lib/rtunesu/user.rb +26 -0
- data/lib/rtunesu/version.rb +9 -0
- data/lib/rtunesu.rb +25 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +82 -0
- data/setup.rb +1585 -0
- data/spec/connection_spec.rb +53 -0
- data/spec/document_spec.rb +16 -0
- data/spec/documents/add_spec.rb +41 -0
- data/spec/documents/delete_spec.rb +30 -0
- data/spec/documents/merge_spec.rb +30 -0
- data/spec/documents/show_tree_spec.rb +16 -0
- data/spec/entities/course_spec.rb +47 -0
- data/spec/entities/division_spec.rb +8 -0
- data/spec/entities/group_spec.rb +8 -0
- data/spec/entities/permission_spec.rb +8 -0
- data/spec/entities/section_spec.rb +8 -0
- data/spec/entities/site_spec.rb +8 -0
- data/spec/entities/track_spec.rb +8 -0
- data/spec/entity_spec.rb +108 -0
- data/spec/fixtures/add_course.xml +26 -0
- data/spec/fixtures/add_division.xml +26 -0
- data/spec/fixtures/add_group.xml +27 -0
- data/spec/fixtures/add_permission.xml +12 -0
- data/spec/fixtures/add_section.xml +34 -0
- data/spec/fixtures/add_track.xml +19 -0
- data/spec/fixtures/delete_course.xml +8 -0
- data/spec/fixtures/delete_division.xml +8 -0
- data/spec/fixtures/delete_group.xml +8 -0
- data/spec/fixtures/delete_permission.xml +9 -0
- data/spec/fixtures/delete_section.xml +8 -0
- data/spec/fixtures/delete_track.xml +7 -0
- data/spec/fixtures/merge_course.xml +38 -0
- data/spec/fixtures/merge_division.xml +47 -0
- data/spec/fixtures/merge_group.xml +29 -0
- data/spec/fixtures/merge_permission.xml +12 -0
- data/spec/fixtures/merge_section.xml +36 -0
- data/spec/fixtures/merge_site.xml +31 -0
- data/spec/fixtures/merge_track.xml +18 -0
- data/spec/fixtures/requests/add_coures_request.xml +0 -0
- data/spec/fixtures/responses/generic_entity_response.xml +17 -0
- data/spec/fixtures/responses/show_tree_course.xml +676 -0
- data/spec/fixtures/show_tree.xml +273 -0
- data/spec/fixtures/update_group.xml +7 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/user_spec.rb +18 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/rspec.rake +21 -0
- data/tasks/website.rake +17 -0
- data/website/index.html +141 -0
- data/website/index.txt +83 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +138 -0
- data/website/template.html.erb +48 -0
- metadata +144 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
|
4
|
+
describe Connection do
|
5
|
+
describe 'token generation' do
|
6
|
+
before do
|
7
|
+
Time.should_receive(:now).and_return(@current_time)
|
8
|
+
@current_time.should_receive(:to_i).and_return(1214619134)
|
9
|
+
|
10
|
+
user = mock(RTunesU::User, :id => 0,
|
11
|
+
:username => 'admin',
|
12
|
+
:name => 'Admin',
|
13
|
+
:email => 'admin@example.edu',
|
14
|
+
:credentials => ['Administrator@urn:mace:itunesu.com:sites:example.edu'],
|
15
|
+
:to_credential_string => 'Administrator@urn:mace:itunesu.com:sites:example.edu',
|
16
|
+
:to_identity_string => '"Admin" <admin@example.edu> (admin) [0]')
|
17
|
+
|
18
|
+
@connection = Connection.new(:user => user, :shared_secret => 'STRINGOFTHIRTYTWOLETTERSORDIGITS')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'generates a token' do
|
22
|
+
@connection.generate_authorization_token.should eql("credentials=Administrator%40urn%3Amace%3Aitunesu.com%3Asites%3Aexample.edu&identity=%22Admin%22+%3Cadmin%40example.edu%3E+%28admin%29+%5B0%5D&time=1214619134&signature=121a6cf76c9c5ecda41450d87e3394b9d02c570a5f76b2bd16287f860f068302")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
describe 'requesting an upload location for a file' do
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'API accessing' do
|
29
|
+
before do
|
30
|
+
Time.should_receive(:now).and_return(@current_time)
|
31
|
+
@current_time.should_receive(:to_i).and_return(1214619134)
|
32
|
+
|
33
|
+
user = mock(RTunesU::User, :id => 0,
|
34
|
+
:username => 'admin',
|
35
|
+
:name => 'Admin',
|
36
|
+
:email => 'admin@example.edu',
|
37
|
+
:credentials => ['Administrator@urn:mace:itunesu.com:sites:example.edu'],
|
38
|
+
:to_credential_string => 'Administrator@urn:mace:itunesu.com:sites:example.edu',
|
39
|
+
:to_identity_string => '"Admin" <admin@example.edu> (admin) [0]')
|
40
|
+
|
41
|
+
@connection = Connection.new(:user => user, :site => 'example.edu', :shared_secret => 'STRINGOFTHIRTYTWOLETTERSORDIGITS')
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'access a web services url for the institution' do
|
45
|
+
@connection.webservices_url.should eql('https://deimos.apple.com/WebObjects/Core.woa/API/ProcessWebServicesDocument/example.edu?credentials=Administrator%40urn%3Amace%3Aitunesu.com%3Asites%3Aexample.edu&identity=%22Admin%22+%3Cadmin%40example.edu%3E+%28admin%29+%5B0%5D&time=1214619134&signature=121a6cf76c9c5ecda41450d87e3394b9d02c570a5f76b2bd16287f860f068302')
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'can generate a url for uploading files'
|
49
|
+
it 'opens an HTTPS connection to iTunes U'
|
50
|
+
it 'send XML data'
|
51
|
+
it 'generates a url user access to a location through iTunes U'
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
|
4
|
+
describe Document do
|
5
|
+
before(:all) do
|
6
|
+
@xml = Document::Merge.new(Course.new).xml
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'includes a base element of ITunesUDocument' do
|
10
|
+
(Hpricot.XML(@xml) % 'ITunesUDocument').should_not be_nil
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'includes a version number' do
|
14
|
+
(Hpricot.XML(@xml) % 'ITunesUDocument/Version').should_not be_nil
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
include Document
|
4
|
+
|
5
|
+
describe Document::Add do
|
6
|
+
before do
|
7
|
+
course = mock(RTunesU::Course, :handle => 1234567,
|
8
|
+
:parent_handle => 98765,
|
9
|
+
:class_name => 'Course',
|
10
|
+
:to_xml => '<Course></Course>')
|
11
|
+
@document = Document::Add.new(course)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'can convert itself to a string of xml' do
|
15
|
+
lambda { @document.xml }.should_not raise_error
|
16
|
+
end
|
17
|
+
|
18
|
+
describe 'xml contents' do
|
19
|
+
before do
|
20
|
+
course = Course.new(:handle => 1234567, :parent_handle => 98765)
|
21
|
+
@document = Document::Add.new(course)
|
22
|
+
@xml = Hpricot.XML(@document.xml)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'has a source entity that defines the specific action name' do
|
26
|
+
@xml.at('AddCourse').should_not be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'has a parent handle' do
|
30
|
+
@xml.at('AddCourse/ParentHandle').should_not be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'has a parent path' do
|
34
|
+
@xml.at('AddCourse/ParentPath').should_not be_nil
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'has a child element that represents the source entity' do
|
38
|
+
@xml.at('AddCourse/Course').should_not be_nil
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
include Document
|
4
|
+
|
5
|
+
describe Document::Delete do
|
6
|
+
before do
|
7
|
+
course = Course.new(:handle => 1234567, :parent_handle => 98765)
|
8
|
+
@document = Document::Delete.new(course)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'can convert itself to a string of xml' do
|
12
|
+
lambda { @document.xml }.should_not raise_error
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'xml contents' do
|
16
|
+
before do
|
17
|
+
course = Course.new(:handle => 1234567, :parent_handle => 98765)
|
18
|
+
document = Document::Delete.new(course)
|
19
|
+
@xml = Hpricot.XML(document.xml)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'has a parent handle' do
|
23
|
+
@xml.at('DeleteCourse/CourseHandle').should_not be_nil
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'has a parent path' do
|
27
|
+
@xml.at('DeleteCourse/CoursePath').should_not be_nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
include Document
|
4
|
+
|
5
|
+
describe Document::Merge do
|
6
|
+
before do
|
7
|
+
course = Course.new(:handle => 1234567, :parent_handle => 98765)
|
8
|
+
@document = Document::Merge.new(course)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'can convert itself to a string of xml' do
|
12
|
+
lambda { @document.xml }.should_not raise_error
|
13
|
+
end
|
14
|
+
|
15
|
+
describe 'xml contents' do
|
16
|
+
before do
|
17
|
+
course = Course.new(:handle => 1234567, :parent_handle => 98765)
|
18
|
+
document = Document::Merge.new(course)
|
19
|
+
@xml = Hpricot.XML(document.xml)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'has a handle that represents its entity' do
|
23
|
+
@xml.at('MergeCourse/CourseHandle').should_not be_nil
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'has a child element that represents the source entity' do
|
27
|
+
@xml.at('MergeCourse/Course').should_not be_nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
include Document
|
4
|
+
|
5
|
+
describe Document, "ShowTree" do
|
6
|
+
describe 'handle' do
|
7
|
+
it 'should exist'
|
8
|
+
it 'should default to the source entity handle location'
|
9
|
+
it 'can take a specific handle'
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'keygroup' do
|
13
|
+
it 'should default to most'
|
14
|
+
it 'cannot take values other than minimal, maximal, and most'
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
|
4
|
+
describe Course do
|
5
|
+
before do
|
6
|
+
u = RTunesU::User.new(0, 'admin', 'Admin', 'admin@example.com')
|
7
|
+
u.credentials = ['Administrator@urn:mace:example.edu']
|
8
|
+
@connection = RTunesU::Connection.new(:user => u, :site => 'example.edu', :shared_secret => 'STRINGOFTHIRTYTWOLETTERSORDIGITS')
|
9
|
+
end
|
10
|
+
|
11
|
+
describe 'finding' do
|
12
|
+
it 'can find itself in iTunesU' do
|
13
|
+
@connection.should_receive(:process).and_return(File.open(File.dirname(__FILE__) + '/../fixtures/responses/show_tree_course.xml'))
|
14
|
+
@course = Course.find(1257981186, @connection)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe ' after successful finding' do
|
19
|
+
before(:all) do
|
20
|
+
@connection.should_receive(:process).and_return(File.open(File.dirname(__FILE__) + '/../fixtures/responses/show_tree_course.xml'))
|
21
|
+
@course = Course.find(1257981186, @connection)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should access its attributes from the returned xml' do
|
25
|
+
@course.Name.should eql('SI 539 001 W07')
|
26
|
+
@course.Handle.should eql('1257981186')
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should find its parent element' do
|
30
|
+
@course.parent.should be_an_instance_of(RTunesU::Section)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should be able to find its groups (tabs)' do
|
34
|
+
@course.Groups.should be_an_instance_of(Array)
|
35
|
+
@course.Groups[0].should be_an_instance_of(RTunesU::Group)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should be able to access it groups attributes' do
|
39
|
+
@course.Groups[0].Handle.should eql('1257981189')
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should be able to access it groups tracks' do
|
43
|
+
@course.Groups[0].Tracks.should be_an_instance_of(Array)
|
44
|
+
@course.Groups[0].Tracks[0].should be_an_instance_of(RTunesU::Track)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/spec/entity_spec.rb
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
|
4
|
+
# describe Entity do
|
5
|
+
# it 'finds itself in iTunes U'
|
6
|
+
# it 'rasies an error if it cannot be found in iTunes U'
|
7
|
+
#
|
8
|
+
# it "saves to iTunes U"
|
9
|
+
# it "appepts to saves if valid"
|
10
|
+
# it "it won't attempt to save (and rasies an error) if it's missing require attributes"
|
11
|
+
#
|
12
|
+
# it "creates if it didn't previously exist"
|
13
|
+
# it "updates if it previously existed"
|
14
|
+
#
|
15
|
+
# it "rasies an error if saving failed"
|
16
|
+
#
|
17
|
+
# it "deletes"
|
18
|
+
# it "raises an error if delting failed"
|
19
|
+
#
|
20
|
+
# it "converts to an xml string"
|
21
|
+
# it "creats from a ITunesU Response"
|
22
|
+
# end
|
23
|
+
describe Entity, 'attribute assignment' do
|
24
|
+
before do
|
25
|
+
@entity = Entity.new
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'assigns singular attributes to the edits hash as a string' do
|
29
|
+
@entity.Name = 'Eng211'
|
30
|
+
@entity.edits['Name'].should eql('Eng211')
|
31
|
+
@entity.Name.should eql('Eng211')
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'returns a default empty array for plural attributes' do
|
35
|
+
@entity.Groups.should eql([])
|
36
|
+
@entity.edits['Groups'].should eql([])
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'assigns plural attribute to the edits hash an array' do
|
40
|
+
@entity.Groups = [Group.new(:name => 'does not matter')]
|
41
|
+
@entity.Groups.size.should be(1)
|
42
|
+
@entity.edits['Groups'].size.should be(1)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'adds plural attributes with <<' do
|
46
|
+
@entity.Groups = [Group.new(:name => 'does not matter')]
|
47
|
+
@entity.Groups.size.should be(1)
|
48
|
+
@entity.Groups << Group.new(:name => 'another group')
|
49
|
+
@entity.edits['Groups'].size.should be(2)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe Entity, 'converting to XML' do
|
54
|
+
describe 'with nested elements' do
|
55
|
+
before do
|
56
|
+
@entity = Entity.new(:Name => 'Example')
|
57
|
+
@entity.Groups = [Group.new(:Name => 'example group 1'), Group.new(:Name => 'example group 2', :Description => 'Blah, blah, blah')]
|
58
|
+
@xml = @entity.to_xml
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should contain nested XML edits' do
|
62
|
+
(Hpricot.XML(@xml) / 'Entity/Group').size.should be(2)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'has nested elements that propely converted their singular attributes' do
|
66
|
+
(Hpricot.XML(@xml) / 'Entity/Group')[0].at('Name').innerHTML.should eql('example group 1')
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe Entity, 'loading from XML' do
|
73
|
+
before do
|
74
|
+
@source = File.read(File.dirname(__FILE__) + '/fixtures/responses/generic_entity_response.xml')
|
75
|
+
@entity = Entity.new(:handle => 789)
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'access attributes from XML source or from the edits hash' do
|
79
|
+
@entity.load_from_xml(@source)
|
80
|
+
@entity.Name.should eql('Example Entity Inside of A Section')
|
81
|
+
@entity.Name = 'new test name'
|
82
|
+
@entity.Name.should eql('new test name')
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'can reset its edits' do
|
86
|
+
@entity.load_from_xml(@source)
|
87
|
+
@entity.Name.should eql('Example Entity Inside of A Section')
|
88
|
+
@entity.Name = 'new test name'
|
89
|
+
@entity.Name.should eql('new test name')
|
90
|
+
@entity.reload
|
91
|
+
@entity.Name.should eql('Example Entity Inside of A Section')
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'should find its appropriate node in the XML based on node name and <Handle> element' do
|
95
|
+
@entity.load_from_xml(@source)
|
96
|
+
@entity.source_xml.name.should eql('Entity')
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'should raise an EntityNotFound error if the specific entity cannot be found' do
|
100
|
+
@entity.handle = 1
|
101
|
+
lambda { @entity.load_from_xml(@source) }.should raise_error(EntityNotFound)
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should still be able to access its parent XML node' do
|
105
|
+
@entity.load_from_xml(@source)
|
106
|
+
@entity.source_xml.parent.name.should eql('Section')
|
107
|
+
end
|
108
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ITunesUDocument>
|
3
|
+
<Version>1.1.1</Version>
|
4
|
+
<AddCourse>
|
5
|
+
<ParentHandle>123456789</ParentHandle>
|
6
|
+
<ParentPath>ExampleU/Humanities</ParentPath>
|
7
|
+
<TemplateHandle>987654321</TemplateHandle>
|
8
|
+
<Course>
|
9
|
+
<Name>Introduction to the Humanities</Name>
|
10
|
+
<ShortName>HUM 211</ShortName>
|
11
|
+
<Identifier>identifier value</Identifier>
|
12
|
+
<Instructor>Dr. Jesse Sielaff</Instructor>
|
13
|
+
<Description>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</Description>
|
14
|
+
<Group>
|
15
|
+
<Name>Lectures</Name>
|
16
|
+
<Handle></Handle>
|
17
|
+
<Permission>
|
18
|
+
<Credential>credential value</Credential>
|
19
|
+
<Access>access value</Access>
|
20
|
+
</Permission>
|
21
|
+
</Group>
|
22
|
+
<AllowSubscription>true</AllowSubscription>
|
23
|
+
<ThemeHandle>109234567</ThemeHandle>
|
24
|
+
</Course>
|
25
|
+
</AddCourse>
|
26
|
+
</ITunesUDocument>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ITunesUDocument>
|
3
|
+
<Version>1.1.1</Version>
|
4
|
+
<AddDivision>
|
5
|
+
<ParentHandle>parenthandle value</ParentHandle>
|
6
|
+
<ParentPath>parentpath value</ParentPath>
|
7
|
+
<Division>
|
8
|
+
<Name>name value</Name>
|
9
|
+
<ShortName>shortname value</ShortName>
|
10
|
+
<Identifier>identifier value</Identifier>
|
11
|
+
<AllowSubscription>allowsubscription value</AllowSubscription>
|
12
|
+
<Permission>
|
13
|
+
<Credential>credential value</Credential>
|
14
|
+
<Access>access value</Access>
|
15
|
+
</Permission>
|
16
|
+
<Section>
|
17
|
+
<Name>name value</Name>
|
18
|
+
<Handle>handle value</Handle>
|
19
|
+
<Course>
|
20
|
+
<Name>name value</Name>
|
21
|
+
</Course>
|
22
|
+
</Section>
|
23
|
+
<ThemeHandle>themehandle value</ThemeHandle>
|
24
|
+
</Division>
|
25
|
+
</AddDivision>
|
26
|
+
</ITunesUDocument>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ITunesUDocument>
|
3
|
+
<Version>1.1.1</Version>
|
4
|
+
<AddGroup>
|
5
|
+
<ParentHandle>parenthandle value</ParentHandle>
|
6
|
+
<ParentPath>parentpath value</ParentPath>
|
7
|
+
<Group>
|
8
|
+
<Name>name value</Name>
|
9
|
+
<Handle>handle value</Handle>
|
10
|
+
<Track>
|
11
|
+
<Name>name value</Name>
|
12
|
+
<Handle>handle value</Handle>
|
13
|
+
<Kind>kind value</Kind>
|
14
|
+
<DiscNumber>discnumber value</DiscNumber>
|
15
|
+
<DurationMilliseconds>durationmilliseconds value
|
16
|
+
</DurationMilliseconds>
|
17
|
+
<AlbumName>albumname value</AlbumName>
|
18
|
+
<ArtistName>artistname value</ArtistName>
|
19
|
+
<DownloadURL>downloadurl value</DownloadURL>
|
20
|
+
</Track>
|
21
|
+
<Permission>
|
22
|
+
<Credential>credential value</Credential>
|
23
|
+
<Access>access value</Access>
|
24
|
+
</Permission>
|
25
|
+
</Group>
|
26
|
+
</AddGroup>
|
27
|
+
</ITunesUDocument>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ITunesUDocument>
|
3
|
+
<Version>1.1.1</Version>
|
4
|
+
<AddPermission>
|
5
|
+
<ParentHandle>parenthandle value</ParentHandle>
|
6
|
+
<ParentPath>parentpath value</ParentPath>
|
7
|
+
<Permission>
|
8
|
+
<Credential>credential value</Credential>
|
9
|
+
<Access>access value</Access>
|
10
|
+
</Permission>
|
11
|
+
</AddPermission>
|
12
|
+
</ITunesUDocument>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ITunesUDocument>
|
3
|
+
<Version>1.1.1</Version>
|
4
|
+
<AddSection>
|
5
|
+
<ParentHandle>parenthandle value</ParentHandle>
|
6
|
+
<ParentPath>parentpath value</ParentPath>
|
7
|
+
<Section>
|
8
|
+
<Name>name value</Name>
|
9
|
+
<Handle>handle value</Handle>
|
10
|
+
<Course>
|
11
|
+
<Name>name value</Name>
|
12
|
+
<Group>
|
13
|
+
<Name>name value</Name>
|
14
|
+
<Handle>handle value</Handle>
|
15
|
+
<Track>
|
16
|
+
<Name>name value</Name>
|
17
|
+
<Handle>handle value</Handle>
|
18
|
+
<Kind>kind value</Kind>
|
19
|
+
<DiscNumber>discnumber value</DiscNumber>
|
20
|
+
<DurationMilliseconds>durationmilliseconds value
|
21
|
+
</DurationMilliseconds>
|
22
|
+
<AlbumName>albumname value</AlbumName>
|
23
|
+
<ArtistName>artistname value</ArtistName>
|
24
|
+
<DownloadURL>downloadurl value</DownloadURL>
|
25
|
+
</Track>
|
26
|
+
<Permission>
|
27
|
+
<Credential>credential value</Credential>
|
28
|
+
<Access>access value</Access>
|
29
|
+
</Permission>
|
30
|
+
</Group>
|
31
|
+
</Course>
|
32
|
+
</Section>
|
33
|
+
</AddSection>
|
34
|
+
</ITunesUDocument>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ITunesUDocument>
|
3
|
+
<Version>1.1.1</Version>
|
4
|
+
<AddTrack>
|
5
|
+
<ParentHandle>parenthandle value</ParentHandle>
|
6
|
+
<ParentPath>parentpath value</ParentPath>
|
7
|
+
<Track>
|
8
|
+
<Name>name value</Name>
|
9
|
+
<Handle>handle value</Handle>
|
10
|
+
<Kind>kind value</Kind>
|
11
|
+
<DiscNumber>discnumber value</DiscNumber>
|
12
|
+
<DurationMilliseconds>durationmilliseconds value
|
13
|
+
</DurationMilliseconds>
|
14
|
+
<AlbumName>albumname value</AlbumName>
|
15
|
+
<ArtistName>artistname value</ArtistName>
|
16
|
+
<DownloadURL>downloadurl value</DownloadURL>
|
17
|
+
</Track>
|
18
|
+
</AddTrack>
|
19
|
+
</ITunesUDocument>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ITunesUDocument>
|
3
|
+
<Version>1.1.1</Version>
|
4
|
+
<DeletePermission>
|
5
|
+
<ParentHandle>parenthandle value</ParentHandle>
|
6
|
+
<ParentPath>parentpath value</ParentPath>
|
7
|
+
<Credential>credential value</Credential>
|
8
|
+
</DeletePermission>
|
9
|
+
</ITunesUDocument>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ITunesUDocument>
|
3
|
+
<Version>1.1.1</Version>
|
4
|
+
<MergeCourse>
|
5
|
+
<CourseHandle>coursehandle value</CourseHandle>
|
6
|
+
<CoursePath>coursepath value</CoursePath>
|
7
|
+
<MergeByHandle>mergebyhandle value</MergeByHandle>
|
8
|
+
<Destructive>destructive value</Destructive>
|
9
|
+
<Course>
|
10
|
+
<Name>name value</Name>
|
11
|
+
<ShortName>shortname value</ShortName>
|
12
|
+
<Identifier>identifier value</Identifier>
|
13
|
+
<Instructor>instructor value</Instructor>
|
14
|
+
<Description>description value</Description>
|
15
|
+
<Group>
|
16
|
+
<Name>name value</Name>
|
17
|
+
<Handle>handle value</Handle>
|
18
|
+
<Track>
|
19
|
+
<Name>name value</Name>
|
20
|
+
<Handle>handle value</Handle>
|
21
|
+
<Kind>kind value</Kind>
|
22
|
+
<DiscNumber>discnumber value</DiscNumber>
|
23
|
+
<DurationMilliseconds>durationmilliseconds value
|
24
|
+
</DurationMilliseconds>
|
25
|
+
<AlbumName>albumname value</AlbumName>
|
26
|
+
<ArtistName>artistname value</ArtistName>
|
27
|
+
<DownloadURL>downloadurl value</DownloadURL>
|
28
|
+
</Track>
|
29
|
+
<Permission>
|
30
|
+
<Credential>credential value</Credential>
|
31
|
+
<Access>access value</Access>
|
32
|
+
</Permission>
|
33
|
+
</Group>
|
34
|
+
<AllowSubscription>allowsubscription value</AllowSubscription>
|
35
|
+
<ThemeHandle>themehandle value</ThemeHandle>
|
36
|
+
</Course>
|
37
|
+
</MergeCourse>
|
38
|
+
</ITunesUDocument>
|