rtunesu 0.2.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. data/.gitignore +3 -0
  2. data/History.txt +0 -5
  3. data/README.txt +2 -2
  4. data/Rakefile +15 -2
  5. data/VERSION +1 -0
  6. data/lib/rtunesu/connection.rb +152 -54
  7. data/lib/rtunesu/document.rb +21 -26
  8. data/lib/rtunesu/entities/course.rb +4 -13
  9. data/lib/rtunesu/entities/division.rb +5 -12
  10. data/lib/rtunesu/entities/external_feed.rb +14 -0
  11. data/lib/rtunesu/entities/group.rb +5 -14
  12. data/lib/rtunesu/entities/permission.rb +1 -5
  13. data/lib/rtunesu/entities/section.rb +15 -11
  14. data/lib/rtunesu/entities/site.rb +6 -13
  15. data/lib/rtunesu/entities/template.rb +4 -0
  16. data/lib/rtunesu/entities/theme.rb +3 -15
  17. data/lib/rtunesu/entities/track.rb +12 -27
  18. data/lib/rtunesu/entity.rb +185 -74
  19. data/lib/rtunesu/log.rb +69 -0
  20. data/lib/rtunesu/subentities.rb +60 -0
  21. data/lib/rtunesu/user.rb +3 -1
  22. data/lib/rtunesu/version.rb +2 -2
  23. data/lib/rtunesu.rb +11 -6
  24. data/lib/show_tree.xml +7 -0
  25. data/spec/connection_spec.rb +6 -30
  26. data/spec/document_spec.rb +82 -8
  27. data/spec/entities/course_spec.rb +13 -40
  28. data/spec/entities/division_spec.rb +13 -3
  29. data/spec/entities/external_feed_spec.rb +21 -0
  30. data/spec/entities/group_spec.rb +14 -3
  31. data/spec/entities/permission_spec.rb +12 -3
  32. data/spec/entities/section_spec.rb +32 -3
  33. data/spec/entities/site_spec.rb +16 -3
  34. data/spec/entities/track_spec.rb +32 -3
  35. data/spec/entity_spec.rb +147 -86
  36. data/spec/fixtures/requests/create_course.xml +17 -0
  37. data/spec/fixtures/requests/create_division.xml +11 -0
  38. data/spec/fixtures/requests/create_group.xml +11 -0
  39. data/spec/fixtures/requests/create_section.xml +11 -0
  40. data/spec/fixtures/requests/delete_course.xml +8 -0
  41. data/spec/fixtures/requests/delete_group.xml +8 -0
  42. data/spec/fixtures/requests/delete_section.txt +8 -0
  43. data/spec/fixtures/requests/show_course.xml +8 -0
  44. data/spec/fixtures/requests/show_group.xml +8 -0
  45. data/spec/fixtures/requests/show_section.xml +8 -0
  46. data/spec/fixtures/requests/update_course.xml +10 -0
  47. data/spec/fixtures/requests/update_group.xml +9 -0
  48. data/spec/fixtures/requests/update_section.txt +10 -0
  49. data/spec/fixtures/responses/failure/create_course.xml +5 -0
  50. data/spec/fixtures/responses/failure/create_division.xml +5 -0
  51. data/spec/fixtures/responses/failure/create_group.xml +5 -0
  52. data/spec/fixtures/responses/failure/create_section.xml +5 -0
  53. data/spec/fixtures/responses/failure/delete_group.xml +5 -0
  54. data/spec/fixtures/responses/failure/show_course.xml +11 -0
  55. data/spec/fixtures/responses/failure/show_division.xml +11 -0
  56. data/spec/fixtures/responses/failure/show_group.xml +11 -0
  57. data/spec/fixtures/responses/failure/show_section.xml +11 -0
  58. data/spec/fixtures/responses/failure/show_site.xml +11 -0
  59. data/spec/fixtures/responses/failure/update_section.txt +5 -0
  60. data/spec/fixtures/responses/success/create_course.xml +5 -0
  61. data/spec/fixtures/responses/success/create_division.xml +5 -0
  62. data/spec/fixtures/responses/success/create_group.xml +5 -0
  63. data/spec/fixtures/responses/success/create_section.xml +5 -0
  64. data/spec/fixtures/responses/success/delete_course.xml +4 -0
  65. data/spec/fixtures/responses/success/delete_division.xml +4 -0
  66. data/spec/fixtures/responses/success/delete_group.xml +4 -0
  67. data/spec/fixtures/responses/success/delete_section.txt +4 -0
  68. data/spec/fixtures/responses/success/delete_section.xml +4 -0
  69. data/spec/fixtures/responses/success/show_course.xml +393 -0
  70. data/spec/fixtures/responses/success/show_division.xml +393 -0
  71. data/spec/fixtures/responses/success/show_group.xml +137 -0
  72. data/spec/fixtures/responses/success/show_section.xml +152 -0
  73. data/spec/fixtures/responses/success/show_site.xml +393 -0
  74. data/spec/fixtures/responses/success/update_course.xml +4 -0
  75. data/spec/fixtures/responses/success/update_division.xml +4 -0
  76. data/spec/fixtures/responses/success/update_group.xml +4 -0
  77. data/spec/fixtures/responses/success/update_section.txt +4 -0
  78. data/spec/fixtures/responses/success/update_section.xml +4 -0
  79. data/spec/fixtures/responses/success/update_site.xml +4 -0
  80. data/spec/spec_helper.rb +72 -7
  81. data/spec/token_generation_spec.rb +23 -0
  82. data/spec/user_spec.rb +3 -3
  83. metadata +81 -76
  84. data/Manifest.txt +0 -77
  85. data/config/hoe.rb +0 -76
  86. data/config/requirements.rb +0 -15
  87. data/lib/multipart.rb +0 -53
  88. data/spec/documents/add_spec.rb +0 -41
  89. data/spec/documents/delete_spec.rb +0 -30
  90. data/spec/documents/merge_spec.rb +0 -30
  91. data/spec/documents/show_tree_spec.rb +0 -16
  92. data/spec/fixtures/add_course.xml +0 -26
  93. data/spec/fixtures/add_division.xml +0 -26
  94. data/spec/fixtures/add_group.xml +0 -27
  95. data/spec/fixtures/add_permission.xml +0 -12
  96. data/spec/fixtures/add_section.xml +0 -34
  97. data/spec/fixtures/add_track.xml +0 -19
  98. data/spec/fixtures/delete_course.xml +0 -8
  99. data/spec/fixtures/delete_division.xml +0 -8
  100. data/spec/fixtures/delete_group.xml +0 -8
  101. data/spec/fixtures/delete_permission.xml +0 -9
  102. data/spec/fixtures/delete_section.xml +0 -8
  103. data/spec/fixtures/delete_track.xml +0 -7
  104. data/spec/fixtures/merge_course.xml +0 -38
  105. data/spec/fixtures/merge_division.xml +0 -47
  106. data/spec/fixtures/merge_group.xml +0 -29
  107. data/spec/fixtures/merge_permission.xml +0 -12
  108. data/spec/fixtures/merge_section.xml +0 -36
  109. data/spec/fixtures/merge_site.xml +0 -31
  110. data/spec/fixtures/merge_track.xml +0 -18
  111. data/spec/fixtures/requests/add_coures_request.xml +0 -0
  112. data/spec/fixtures/show_tree.xml +0 -273
  113. data/spec/fixtures/update_group.xml +0 -7
  114. data/tasks/deployment.rake +0 -34
  115. data/tasks/website.rake +0 -17
  116. data/website/index.html +0 -54
  117. data/website/index.txt +0 -7
  118. data/website/javascripts/rounded_corners_lite.inc.js +0 -285
  119. data/website/stylesheets/screen.css +0 -138
  120. 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(41, 'pietrekg', 'Trek', 'pietrekg@umich.edu')
7
- @user.credentials = ["Administrator@urn:mace:itunesu.com:sites:example.edu"]
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('"Trek" <pietrekg@umich.edu> (pietrekg) [41]')
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.2.4
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: 2008-09-12 00:00:00 -04:00
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: "0.6"
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: multipart-post
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: "0.1"
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
- - config/hoe.rb
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/add_course.xml
121
- - spec/fixtures/add_division.xml
122
- - spec/fixtures/add_group.xml
123
- - spec/fixtures/add_permission.xml
124
- - spec/fixtures/add_section.xml
125
- - spec/fixtures/add_track.xml
126
- - spec/fixtures/delete_course.xml
127
- - spec/fixtures/delete_division.xml
128
- - spec/fixtures/delete_group.xml
129
- - spec/fixtures/delete_permission.xml
130
- - spec/fixtures/delete_section.xml
131
- - spec/fixtures/delete_track.xml
132
- - spec/fixtures/merge_course.xml
133
- - spec/fixtures/merge_division.xml
134
- - spec/fixtures/merge_group.xml
135
- - spec/fixtures/merge_permission.xml
136
- - spec/fixtures/merge_section.xml
137
- - spec/fixtures/merge_site.xml
138
- - spec/fixtures/merge_track.xml
139
- - spec/fixtures/requests/add_coures_request.xml
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/show_tree.xml
143
- - spec/fixtures/update_group.xml
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: http://rtunesu.rubyforge.org
148
+ homepage:
149
+ licenses: []
150
+
158
151
  post_install_message:
159
152
  rdoc_options:
160
- - --main
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: rtunesu
179
- rubygems_version: 1.2.0
170
+ rubyforge_project:
171
+ rubygems_version: 1.3.4
180
172
  signing_key:
181
- specification_version: 2
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 ""
@@ -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
@@ -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>