rtunesu 0.2.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/History.txt +0 -5
- data/README.txt +2 -2
- data/Rakefile +15 -2
- data/VERSION +1 -0
- data/lib/rtunesu/connection.rb +152 -54
- data/lib/rtunesu/document.rb +21 -26
- data/lib/rtunesu/entities/course.rb +4 -13
- data/lib/rtunesu/entities/division.rb +5 -12
- data/lib/rtunesu/entities/external_feed.rb +14 -0
- data/lib/rtunesu/entities/group.rb +5 -14
- data/lib/rtunesu/entities/permission.rb +1 -5
- data/lib/rtunesu/entities/section.rb +15 -11
- data/lib/rtunesu/entities/site.rb +6 -13
- data/lib/rtunesu/entities/template.rb +4 -0
- data/lib/rtunesu/entities/theme.rb +3 -15
- data/lib/rtunesu/entities/track.rb +12 -27
- data/lib/rtunesu/entity.rb +185 -74
- data/lib/rtunesu/log.rb +69 -0
- data/lib/rtunesu/subentities.rb +60 -0
- data/lib/rtunesu/user.rb +3 -1
- data/lib/rtunesu/version.rb +2 -2
- data/lib/rtunesu.rb +11 -6
- data/lib/show_tree.xml +7 -0
- data/spec/connection_spec.rb +6 -30
- data/spec/document_spec.rb +82 -8
- data/spec/entities/course_spec.rb +13 -40
- data/spec/entities/division_spec.rb +13 -3
- data/spec/entities/external_feed_spec.rb +21 -0
- data/spec/entities/group_spec.rb +14 -3
- data/spec/entities/permission_spec.rb +12 -3
- data/spec/entities/section_spec.rb +32 -3
- data/spec/entities/site_spec.rb +16 -3
- data/spec/entities/track_spec.rb +32 -3
- data/spec/entity_spec.rb +147 -86
- data/spec/fixtures/requests/create_course.xml +17 -0
- data/spec/fixtures/requests/create_division.xml +11 -0
- data/spec/fixtures/requests/create_group.xml +11 -0
- data/spec/fixtures/requests/create_section.xml +11 -0
- data/spec/fixtures/requests/delete_course.xml +8 -0
- data/spec/fixtures/requests/delete_group.xml +8 -0
- data/spec/fixtures/requests/delete_section.txt +8 -0
- data/spec/fixtures/requests/show_course.xml +8 -0
- data/spec/fixtures/requests/show_group.xml +8 -0
- data/spec/fixtures/requests/show_section.xml +8 -0
- data/spec/fixtures/requests/update_course.xml +10 -0
- data/spec/fixtures/requests/update_group.xml +9 -0
- data/spec/fixtures/requests/update_section.txt +10 -0
- data/spec/fixtures/responses/failure/create_course.xml +5 -0
- data/spec/fixtures/responses/failure/create_division.xml +5 -0
- data/spec/fixtures/responses/failure/create_group.xml +5 -0
- data/spec/fixtures/responses/failure/create_section.xml +5 -0
- data/spec/fixtures/responses/failure/delete_group.xml +5 -0
- data/spec/fixtures/responses/failure/show_course.xml +11 -0
- data/spec/fixtures/responses/failure/show_division.xml +11 -0
- data/spec/fixtures/responses/failure/show_group.xml +11 -0
- data/spec/fixtures/responses/failure/show_section.xml +11 -0
- data/spec/fixtures/responses/failure/show_site.xml +11 -0
- data/spec/fixtures/responses/failure/update_section.txt +5 -0
- data/spec/fixtures/responses/success/create_course.xml +5 -0
- data/spec/fixtures/responses/success/create_division.xml +5 -0
- data/spec/fixtures/responses/success/create_group.xml +5 -0
- data/spec/fixtures/responses/success/create_section.xml +5 -0
- data/spec/fixtures/responses/success/delete_course.xml +4 -0
- data/spec/fixtures/responses/success/delete_division.xml +4 -0
- data/spec/fixtures/responses/success/delete_group.xml +4 -0
- data/spec/fixtures/responses/success/delete_section.txt +4 -0
- data/spec/fixtures/responses/success/delete_section.xml +4 -0
- data/spec/fixtures/responses/success/show_course.xml +393 -0
- data/spec/fixtures/responses/success/show_division.xml +393 -0
- data/spec/fixtures/responses/success/show_group.xml +137 -0
- data/spec/fixtures/responses/success/show_section.xml +152 -0
- data/spec/fixtures/responses/success/show_site.xml +393 -0
- data/spec/fixtures/responses/success/update_course.xml +4 -0
- data/spec/fixtures/responses/success/update_division.xml +4 -0
- data/spec/fixtures/responses/success/update_group.xml +4 -0
- data/spec/fixtures/responses/success/update_section.txt +4 -0
- data/spec/fixtures/responses/success/update_section.xml +4 -0
- data/spec/fixtures/responses/success/update_site.xml +4 -0
- data/spec/spec_helper.rb +72 -7
- data/spec/token_generation_spec.rb +23 -0
- data/spec/user_spec.rb +3 -3
- metadata +81 -76
- data/Manifest.txt +0 -77
- data/config/hoe.rb +0 -76
- data/config/requirements.rb +0 -15
- data/lib/multipart.rb +0 -53
- data/spec/documents/add_spec.rb +0 -41
- data/spec/documents/delete_spec.rb +0 -30
- data/spec/documents/merge_spec.rb +0 -30
- data/spec/documents/show_tree_spec.rb +0 -16
- data/spec/fixtures/add_course.xml +0 -26
- data/spec/fixtures/add_division.xml +0 -26
- data/spec/fixtures/add_group.xml +0 -27
- data/spec/fixtures/add_permission.xml +0 -12
- data/spec/fixtures/add_section.xml +0 -34
- data/spec/fixtures/add_track.xml +0 -19
- data/spec/fixtures/delete_course.xml +0 -8
- data/spec/fixtures/delete_division.xml +0 -8
- data/spec/fixtures/delete_group.xml +0 -8
- data/spec/fixtures/delete_permission.xml +0 -9
- data/spec/fixtures/delete_section.xml +0 -8
- data/spec/fixtures/delete_track.xml +0 -7
- data/spec/fixtures/merge_course.xml +0 -38
- data/spec/fixtures/merge_division.xml +0 -47
- data/spec/fixtures/merge_group.xml +0 -29
- data/spec/fixtures/merge_permission.xml +0 -12
- data/spec/fixtures/merge_section.xml +0 -36
- data/spec/fixtures/merge_site.xml +0 -31
- data/spec/fixtures/merge_track.xml +0 -18
- data/spec/fixtures/requests/add_coures_request.xml +0 -0
- data/spec/fixtures/show_tree.xml +0 -273
- data/spec/fixtures/update_group.xml +0 -7
- data/tasks/deployment.rake +0 -34
- data/tasks/website.rake +0 -17
- data/website/index.html +0 -54
- data/website/index.txt +0 -7
- data/website/javascripts/rounded_corners_lite.inc.js +0 -285
- data/website/stylesheets/screen.css +0 -138
- data/website/template.html.erb +0 -48
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
+
include RTunesU
|
3
|
+
|
4
|
+
# Testing data provided by Apple:
|
5
|
+
# http://deimos.apple.com/rsrc/doc/iTunesUAdministratorsGuide/AdministeringSiteAccess/chapter_7_section_11.html
|
6
|
+
|
7
|
+
describe "token generation" do
|
8
|
+
VALID_TOKEN_STRING = 'credentials=Administrator%40urn%3Amace%3Aitunesu.com%3Asites%3Aexample.edu&identity=%22Jane+Doe%22+%3Cjanedoe%40example.edu%3E+%28jdoe%29+%5B42%5D&time=1147136717&signature=597c304e90fb62067c7e3fa57fe824e77997dd8aa96649366c5fc59104074744'
|
9
|
+
|
10
|
+
before(:each) do
|
11
|
+
now = Time.new
|
12
|
+
Time.stub!(:now).and_return(now)
|
13
|
+
now.stub!(:to_i).and_return(1147136717)
|
14
|
+
|
15
|
+
user = RTunesU::User.new(42, 'jdoe', 'Jane Doe','janedoe@example.edu')
|
16
|
+
user.credentials = ['Administrator@urn:mace:itunesu.com:sites:example.edu']
|
17
|
+
@connection = Connection.new(:user => user, :shared_secret => 'STRINGOFTHIRTYTWOLETTERSORDIGITS')
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should generate a valid token string" do
|
21
|
+
@connection.generate_authorization_token.should == VALID_TOKEN_STRING
|
22
|
+
end
|
23
|
+
end
|
data/spec/user_spec.rb
CHANGED
@@ -3,12 +3,12 @@ include RTunesU
|
|
3
3
|
|
4
4
|
describe User do
|
5
5
|
before do
|
6
|
-
@user = User.new(
|
7
|
-
@user.credentials = [
|
6
|
+
@user = User.new(42, 'jdoe', 'Jane Doe', 'jdoe@example.edu')
|
7
|
+
@user.credentials = ['Administrator@urn:mace:itunesu.com:sites:example.edu']
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'should convert to a properly formatted identity string' do
|
11
|
-
@user.to_identity_string.should eql('"
|
11
|
+
@user.to_identity_string.should eql('"Jane Doe" <jdoe@example.edu> (jdoe) [42]')
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'should convert to a properly formatted credential string' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rtunesu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Trek Glowacki
|
@@ -9,19 +9,9 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-10-26 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: ruby-hmac
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.3.1
|
24
|
-
version:
|
25
15
|
- !ruby/object:Gem::Dependency
|
26
16
|
name: hpricot
|
27
17
|
type: :runtime
|
@@ -30,7 +20,7 @@ dependencies:
|
|
30
20
|
requirements:
|
31
21
|
- - ">="
|
32
22
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
23
|
+
version: 0.6.164
|
34
24
|
version:
|
35
25
|
- !ruby/object:Gem::Dependency
|
36
26
|
name: builder
|
@@ -43,61 +33,49 @@ dependencies:
|
|
43
33
|
version: "2.0"
|
44
34
|
version:
|
45
35
|
- !ruby/object:Gem::Dependency
|
46
|
-
name:
|
36
|
+
name: ruby-hmac
|
47
37
|
type: :runtime
|
48
38
|
version_requirement:
|
49
39
|
version_requirements: !ruby/object:Gem::Requirement
|
50
40
|
requirements:
|
51
41
|
- - ">="
|
52
42
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: hoe
|
57
|
-
type: :development
|
58
|
-
version_requirement:
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - ">="
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: 1.7.0
|
43
|
+
version: 0.3.1
|
64
44
|
version:
|
65
45
|
description: A library for using Apple's iTunes U Webservices API
|
66
|
-
email:
|
67
|
-
- trek.glowacki@gmail.com
|
46
|
+
email: pietrekg@umich.edu
|
68
47
|
executables: []
|
69
48
|
|
70
49
|
extensions: []
|
71
50
|
|
72
51
|
extra_rdoc_files:
|
73
|
-
- History.txt
|
74
|
-
- License.txt
|
75
|
-
- Manifest.txt
|
76
52
|
- README.txt
|
77
|
-
- website/index.txt
|
78
53
|
files:
|
54
|
+
- .gitignore
|
79
55
|
- History.txt
|
80
56
|
- License.txt
|
81
|
-
- Manifest.txt
|
82
57
|
- README.txt
|
83
58
|
- Rakefile
|
84
|
-
-
|
85
|
-
- config/requirements.rb
|
86
|
-
- lib/multipart.rb
|
59
|
+
- VERSION
|
87
60
|
- lib/rtunesu.rb
|
88
61
|
- lib/rtunesu/connection.rb
|
89
62
|
- lib/rtunesu/document.rb
|
90
63
|
- lib/rtunesu/entities/course.rb
|
91
64
|
- lib/rtunesu/entities/division.rb
|
65
|
+
- lib/rtunesu/entities/external_feed.rb
|
92
66
|
- lib/rtunesu/entities/group.rb
|
93
67
|
- lib/rtunesu/entities/permission.rb
|
94
68
|
- lib/rtunesu/entities/section.rb
|
95
69
|
- lib/rtunesu/entities/site.rb
|
70
|
+
- lib/rtunesu/entities/template.rb
|
96
71
|
- lib/rtunesu/entities/theme.rb
|
97
72
|
- lib/rtunesu/entities/track.rb
|
98
73
|
- lib/rtunesu/entity.rb
|
74
|
+
- lib/rtunesu/log.rb
|
75
|
+
- lib/rtunesu/subentities.rb
|
99
76
|
- lib/rtunesu/user.rb
|
100
77
|
- lib/rtunesu/version.rb
|
78
|
+
- lib/show_tree.xml
|
101
79
|
- script/console
|
102
80
|
- script/destroy
|
103
81
|
- script/generate
|
@@ -105,60 +83,74 @@ files:
|
|
105
83
|
- setup.rb
|
106
84
|
- spec/connection_spec.rb
|
107
85
|
- spec/document_spec.rb
|
108
|
-
- spec/documents/add_spec.rb
|
109
|
-
- spec/documents/delete_spec.rb
|
110
|
-
- spec/documents/merge_spec.rb
|
111
|
-
- spec/documents/show_tree_spec.rb
|
112
86
|
- spec/entities/course_spec.rb
|
113
87
|
- spec/entities/division_spec.rb
|
88
|
+
- spec/entities/external_feed_spec.rb
|
114
89
|
- spec/entities/group_spec.rb
|
115
90
|
- spec/entities/permission_spec.rb
|
116
91
|
- spec/entities/section_spec.rb
|
117
92
|
- spec/entities/site_spec.rb
|
118
93
|
- spec/entities/track_spec.rb
|
119
94
|
- spec/entity_spec.rb
|
120
|
-
- spec/fixtures/
|
121
|
-
- spec/fixtures/
|
122
|
-
- spec/fixtures/
|
123
|
-
- spec/fixtures/
|
124
|
-
- spec/fixtures/
|
125
|
-
- spec/fixtures/
|
126
|
-
- spec/fixtures/
|
127
|
-
- spec/fixtures/
|
128
|
-
- spec/fixtures/
|
129
|
-
- spec/fixtures/
|
130
|
-
- spec/fixtures/
|
131
|
-
- spec/fixtures/
|
132
|
-
- spec/fixtures/
|
133
|
-
- spec/fixtures/
|
134
|
-
- spec/fixtures/
|
135
|
-
- spec/fixtures/
|
136
|
-
- spec/fixtures/
|
137
|
-
- spec/fixtures/
|
138
|
-
- spec/fixtures/
|
139
|
-
- spec/fixtures/
|
95
|
+
- spec/fixtures/requests/create_course.xml
|
96
|
+
- spec/fixtures/requests/create_division.xml
|
97
|
+
- spec/fixtures/requests/create_group.xml
|
98
|
+
- spec/fixtures/requests/create_section.xml
|
99
|
+
- spec/fixtures/requests/delete_course.xml
|
100
|
+
- spec/fixtures/requests/delete_group.xml
|
101
|
+
- spec/fixtures/requests/delete_section.txt
|
102
|
+
- spec/fixtures/requests/show_course.xml
|
103
|
+
- spec/fixtures/requests/show_group.xml
|
104
|
+
- spec/fixtures/requests/show_section.xml
|
105
|
+
- spec/fixtures/requests/update_course.xml
|
106
|
+
- spec/fixtures/requests/update_group.xml
|
107
|
+
- spec/fixtures/requests/update_section.txt
|
108
|
+
- spec/fixtures/responses/failure/create_course.xml
|
109
|
+
- spec/fixtures/responses/failure/create_division.xml
|
110
|
+
- spec/fixtures/responses/failure/create_group.xml
|
111
|
+
- spec/fixtures/responses/failure/create_section.xml
|
112
|
+
- spec/fixtures/responses/failure/delete_group.xml
|
113
|
+
- spec/fixtures/responses/failure/show_course.xml
|
114
|
+
- spec/fixtures/responses/failure/show_division.xml
|
115
|
+
- spec/fixtures/responses/failure/show_group.xml
|
116
|
+
- spec/fixtures/responses/failure/show_section.xml
|
117
|
+
- spec/fixtures/responses/failure/show_site.xml
|
118
|
+
- spec/fixtures/responses/failure/update_section.txt
|
140
119
|
- spec/fixtures/responses/generic_entity_response.xml
|
141
120
|
- spec/fixtures/responses/show_tree_course.xml
|
142
|
-
- spec/fixtures/
|
143
|
-
- spec/fixtures/
|
121
|
+
- spec/fixtures/responses/success/create_course.xml
|
122
|
+
- spec/fixtures/responses/success/create_division.xml
|
123
|
+
- spec/fixtures/responses/success/create_group.xml
|
124
|
+
- spec/fixtures/responses/success/create_section.xml
|
125
|
+
- spec/fixtures/responses/success/delete_course.xml
|
126
|
+
- spec/fixtures/responses/success/delete_division.xml
|
127
|
+
- spec/fixtures/responses/success/delete_group.xml
|
128
|
+
- spec/fixtures/responses/success/delete_section.txt
|
129
|
+
- spec/fixtures/responses/success/delete_section.xml
|
130
|
+
- spec/fixtures/responses/success/show_course.xml
|
131
|
+
- spec/fixtures/responses/success/show_division.xml
|
132
|
+
- spec/fixtures/responses/success/show_group.xml
|
133
|
+
- spec/fixtures/responses/success/show_section.xml
|
134
|
+
- spec/fixtures/responses/success/show_site.xml
|
135
|
+
- spec/fixtures/responses/success/update_course.xml
|
136
|
+
- spec/fixtures/responses/success/update_division.xml
|
137
|
+
- spec/fixtures/responses/success/update_group.xml
|
138
|
+
- spec/fixtures/responses/success/update_section.txt
|
139
|
+
- spec/fixtures/responses/success/update_section.xml
|
140
|
+
- spec/fixtures/responses/success/update_site.xml
|
144
141
|
- spec/spec.opts
|
145
142
|
- spec/spec_helper.rb
|
143
|
+
- spec/token_generation_spec.rb
|
146
144
|
- spec/user_spec.rb
|
147
|
-
- tasks/deployment.rake
|
148
145
|
- tasks/environment.rake
|
149
146
|
- tasks/rspec.rake
|
150
|
-
- tasks/website.rake
|
151
|
-
- website/index.html
|
152
|
-
- website/index.txt
|
153
|
-
- website/javascripts/rounded_corners_lite.inc.js
|
154
|
-
- website/stylesheets/screen.css
|
155
|
-
- website/template.html.erb
|
156
147
|
has_rdoc: true
|
157
|
-
homepage:
|
148
|
+
homepage:
|
149
|
+
licenses: []
|
150
|
+
|
158
151
|
post_install_message:
|
159
152
|
rdoc_options:
|
160
|
-
- --
|
161
|
-
- README.txt
|
153
|
+
- --charset=UTF-8
|
162
154
|
require_paths:
|
163
155
|
- lib
|
164
156
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -175,10 +167,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
175
167
|
version:
|
176
168
|
requirements: []
|
177
169
|
|
178
|
-
rubyforge_project:
|
179
|
-
rubygems_version: 1.
|
170
|
+
rubyforge_project:
|
171
|
+
rubygems_version: 1.3.4
|
180
172
|
signing_key:
|
181
|
-
specification_version:
|
173
|
+
specification_version: 3
|
182
174
|
summary: A library for using Apple's iTunes U Webservices API
|
183
|
-
test_files:
|
184
|
-
|
175
|
+
test_files:
|
176
|
+
- spec/connection_spec.rb
|
177
|
+
- spec/document_spec.rb
|
178
|
+
- spec/entities/course_spec.rb
|
179
|
+
- spec/entities/division_spec.rb
|
180
|
+
- spec/entities/external_feed_spec.rb
|
181
|
+
- spec/entities/group_spec.rb
|
182
|
+
- spec/entities/permission_spec.rb
|
183
|
+
- spec/entities/section_spec.rb
|
184
|
+
- spec/entities/site_spec.rb
|
185
|
+
- spec/entities/track_spec.rb
|
186
|
+
- spec/entity_spec.rb
|
187
|
+
- spec/spec_helper.rb
|
188
|
+
- spec/token_generation_spec.rb
|
189
|
+
- spec/user_spec.rb
|
data/Manifest.txt
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
History.txt
|
2
|
-
License.txt
|
3
|
-
Manifest.txt
|
4
|
-
README.txt
|
5
|
-
Rakefile
|
6
|
-
config/hoe.rb
|
7
|
-
config/requirements.rb
|
8
|
-
lib/multipart.rb
|
9
|
-
lib/rtunesu.rb
|
10
|
-
lib/rtunesu/connection.rb
|
11
|
-
lib/rtunesu/document.rb
|
12
|
-
lib/rtunesu/entities/course.rb
|
13
|
-
lib/rtunesu/entities/division.rb
|
14
|
-
lib/rtunesu/entities/group.rb
|
15
|
-
lib/rtunesu/entities/permission.rb
|
16
|
-
lib/rtunesu/entities/section.rb
|
17
|
-
lib/rtunesu/entities/site.rb
|
18
|
-
lib/rtunesu/entities/theme.rb
|
19
|
-
lib/rtunesu/entities/track.rb
|
20
|
-
lib/rtunesu/entity.rb
|
21
|
-
lib/rtunesu/user.rb
|
22
|
-
lib/rtunesu/version.rb
|
23
|
-
script/console
|
24
|
-
script/destroy
|
25
|
-
script/generate
|
26
|
-
script/txt2html
|
27
|
-
setup.rb
|
28
|
-
spec/connection_spec.rb
|
29
|
-
spec/document_spec.rb
|
30
|
-
spec/documents/add_spec.rb
|
31
|
-
spec/documents/delete_spec.rb
|
32
|
-
spec/documents/merge_spec.rb
|
33
|
-
spec/documents/show_tree_spec.rb
|
34
|
-
spec/entities/course_spec.rb
|
35
|
-
spec/entities/division_spec.rb
|
36
|
-
spec/entities/group_spec.rb
|
37
|
-
spec/entities/permission_spec.rb
|
38
|
-
spec/entities/section_spec.rb
|
39
|
-
spec/entities/site_spec.rb
|
40
|
-
spec/entities/track_spec.rb
|
41
|
-
spec/entity_spec.rb
|
42
|
-
spec/fixtures/add_course.xml
|
43
|
-
spec/fixtures/add_division.xml
|
44
|
-
spec/fixtures/add_group.xml
|
45
|
-
spec/fixtures/add_permission.xml
|
46
|
-
spec/fixtures/add_section.xml
|
47
|
-
spec/fixtures/add_track.xml
|
48
|
-
spec/fixtures/delete_course.xml
|
49
|
-
spec/fixtures/delete_division.xml
|
50
|
-
spec/fixtures/delete_group.xml
|
51
|
-
spec/fixtures/delete_permission.xml
|
52
|
-
spec/fixtures/delete_section.xml
|
53
|
-
spec/fixtures/delete_track.xml
|
54
|
-
spec/fixtures/merge_course.xml
|
55
|
-
spec/fixtures/merge_division.xml
|
56
|
-
spec/fixtures/merge_group.xml
|
57
|
-
spec/fixtures/merge_permission.xml
|
58
|
-
spec/fixtures/merge_section.xml
|
59
|
-
spec/fixtures/merge_site.xml
|
60
|
-
spec/fixtures/merge_track.xml
|
61
|
-
spec/fixtures/requests/add_coures_request.xml
|
62
|
-
spec/fixtures/responses/generic_entity_response.xml
|
63
|
-
spec/fixtures/responses/show_tree_course.xml
|
64
|
-
spec/fixtures/show_tree.xml
|
65
|
-
spec/fixtures/update_group.xml
|
66
|
-
spec/spec.opts
|
67
|
-
spec/spec_helper.rb
|
68
|
-
spec/user_spec.rb
|
69
|
-
tasks/deployment.rake
|
70
|
-
tasks/environment.rake
|
71
|
-
tasks/rspec.rake
|
72
|
-
tasks/website.rake
|
73
|
-
website/index.html
|
74
|
-
website/index.txt
|
75
|
-
website/javascripts/rounded_corners_lite.inc.js
|
76
|
-
website/stylesheets/screen.css
|
77
|
-
website/template.html.erb
|
data/config/hoe.rb
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
require 'rtunesu/version'
|
2
|
-
|
3
|
-
AUTHOR = 'Trek Glowacki'
|
4
|
-
EMAIL = "trek.glowacki@gmail.com"
|
5
|
-
DESCRIPTION = "A library for using Apple's iTunes U Webservices API"
|
6
|
-
GEM_NAME = 'rtunesu'
|
7
|
-
RUBYFORGE_PROJECT = 'rtunesu'
|
8
|
-
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
9
|
-
DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
|
10
|
-
EXTRA_DEPENDENCIES = [
|
11
|
-
['ruby-hmac', '>= 0.3.1'],
|
12
|
-
['hpricot', '>= 0.6'],
|
13
|
-
['builder', '>= 2.0'],
|
14
|
-
['multipart-post', '>= 0.1']
|
15
|
-
]
|
16
|
-
|
17
|
-
@config_file = "~/.rubyforge/user-config.yml"
|
18
|
-
@config = nil
|
19
|
-
RUBYFORGE_USERNAME = "unknown"
|
20
|
-
def rubyforge_username
|
21
|
-
unless @config
|
22
|
-
begin
|
23
|
-
@config = YAML.load(File.read(File.expand_path(@config_file)))
|
24
|
-
rescue
|
25
|
-
puts <<-EOS
|
26
|
-
ERROR: No rubyforge config file found: #{@config_file}
|
27
|
-
Run 'rubyforge setup' to prepare your env for access to Rubyforge
|
28
|
-
- See http://newgem.rubyforge.org/rubyforge.html for more details
|
29
|
-
EOS
|
30
|
-
exit
|
31
|
-
end
|
32
|
-
end
|
33
|
-
RUBYFORGE_USERNAME.replace @config["username"]
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
REV = nil
|
38
|
-
# UNCOMMENT IF REQUIRED:
|
39
|
-
# REV = YAML.load(`svn info`)['Revision']
|
40
|
-
VERS = RTunesU::VERSION::STRING + (REV ? ".#{REV}" : "")
|
41
|
-
RDOC_OPTS = ['--quiet', '--title', 'rtunesu documentation',
|
42
|
-
"--opname", "index.html",
|
43
|
-
"--line-numbers",
|
44
|
-
"--main", "README",
|
45
|
-
"--inline-source"]
|
46
|
-
|
47
|
-
class Hoe
|
48
|
-
def extra_deps
|
49
|
-
@extra_deps.reject! { |x| Array(x).first == 'hoe' }
|
50
|
-
@extra_deps
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# Generate all the Rake tasks
|
55
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
56
|
-
$hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
57
|
-
p.developer(AUTHOR, EMAIL)
|
58
|
-
p.description = DESCRIPTION
|
59
|
-
p.summary = DESCRIPTION
|
60
|
-
p.url = HOMEPATH
|
61
|
-
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
62
|
-
p.test_globs = ["test/**/test_*.rb"]
|
63
|
-
p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
|
64
|
-
|
65
|
-
# == Optional
|
66
|
-
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
67
|
-
p.extra_deps = EXTRA_DEPENDENCIES
|
68
|
-
|
69
|
-
#p.spec_extras = {} # A hash of extra values to set in the gemspec.
|
70
|
-
end
|
71
|
-
|
72
|
-
CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
|
73
|
-
PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
|
74
|
-
$hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
|
75
|
-
$hoe.rsync_args = '-av --delete --ignore-errors'
|
76
|
-
# $hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
|
data/config/requirements.rb
DELETED
@@ -1,15 +0,0 @@
|
|
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]))
|
data/lib/multipart.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'net/https'
|
2
|
-
require "rubygems"
|
3
|
-
require "mime/types"
|
4
|
-
require "base64"
|
5
|
-
require 'cgi'
|
6
|
-
|
7
|
-
# Add multipart/form-data support to net/http
|
8
|
-
# From http://pivots.pivotallabs.com/users/damon/blog/articles/227-standup-04-27-07-testing-file-uploads
|
9
|
-
#
|
10
|
-
# == Usage
|
11
|
-
# File.open(File.expand_path('script/test.png'), 'r') do |file|
|
12
|
-
# http = Net::HTTP.new('localhost', 3000)
|
13
|
-
# begin
|
14
|
-
# http.start do |http|
|
15
|
-
# request = Net::HTTP::Post.new('/your/url/here')
|
16
|
-
# request.basic_auth 'lonely_user', 'really_long_password'
|
17
|
-
# request.multipart_params = {:file => file, :title => 'test.png'}
|
18
|
-
# response = http.request(request)
|
19
|
-
# response.value
|
20
|
-
# puts response.body
|
21
|
-
# end
|
22
|
-
# rescue Net::HTTPServerException => e
|
23
|
-
# p e
|
24
|
-
# end
|
25
|
-
# end
|
26
|
-
class Net::HTTP::Post
|
27
|
-
def multipart_params=(param_hash={})
|
28
|
-
boundary_token = [Array.new(8) {rand(256)}].join
|
29
|
-
self.content_type = "multipart/form-data; boundary=#{boundary_token}"
|
30
|
-
boundary_marker = "--#{boundary_token}\r\n"
|
31
|
-
self.body = param_hash.map { |param_name, param_value|
|
32
|
-
boundary_marker + case param_value
|
33
|
-
when File: file_to_multipart(param_name, param_value)
|
34
|
-
when String: text_to_multipart(param_name, param_value)
|
35
|
-
else ''
|
36
|
-
end
|
37
|
-
}.join('') + "--#{boundary_token}--\r\n"
|
38
|
-
end
|
39
|
-
|
40
|
-
protected
|
41
|
-
def file_to_multipart(key,file)
|
42
|
-
filename = File.basename(file.path)
|
43
|
-
mime_types = MIME::Types.of(filename)
|
44
|
-
mime_type = mime_types.empty? ? "application/octet-stream" : mime_types.first.content_type
|
45
|
-
part = %Q{Content-Disposition: form-data; name="#{key}"; filename="#{filename}"\r\n}
|
46
|
-
part += "Content-Transfer-Encoding: binary\r\n"
|
47
|
-
part += "Content-Type: #{mime_type}\r\n\r\n#{file.read}\r\n"
|
48
|
-
end
|
49
|
-
|
50
|
-
def text_to_multipart(key,value)
|
51
|
-
"Content-Disposition: form-data; name=\"#{key}\"\r\n\r\n#{value}\r\n"
|
52
|
-
end
|
53
|
-
end
|
data/spec/documents/add_spec.rb
DELETED
@@ -1,41 +0,0 @@
|
|
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
|
@@ -1,30 +0,0 @@
|
|
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
|
@@ -1,30 +0,0 @@
|
|
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
|
@@ -1,16 +0,0 @@
|
|
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
|
@@ -1,26 +0,0 @@
|
|
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>
|