sword2ruby 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +30 -0
  4. data/LICENCE +35 -0
  5. data/README.md +43 -0
  6. data/Rakefile +53 -0
  7. data/doc/Atom/Collection.html +837 -0
  8. data/doc/Atom/Element.html +197 -0
  9. data/doc/Atom/Entry.html +1795 -0
  10. data/doc/Atom/Feed.html +297 -0
  11. data/doc/Atom/Service.html +363 -0
  12. data/doc/Atom.html +158 -0
  13. data/doc/Gemfile.html +125 -0
  14. data/doc/Object.html +165 -0
  15. data/doc/REXML/Element.html +493 -0
  16. data/doc/REXML.html +158 -0
  17. data/doc/Rakefile.html +123 -0
  18. data/doc/Sword2Ruby/Atom.html +169 -0
  19. data/doc/Sword2Ruby/AutoDiscover.html +327 -0
  20. data/doc/Sword2Ruby/Connection.html +274 -0
  21. data/doc/Sword2Ruby/DepositReceipt.html +331 -0
  22. data/doc/Sword2Ruby/Exception.html +168 -0
  23. data/doc/Sword2Ruby/SwordAccept.html +169 -0
  24. data/doc/Sword2Ruby/SwordStatementOAIORE.html +277 -0
  25. data/doc/Sword2Ruby/User.html +272 -0
  26. data/doc/Sword2Ruby/Utility.html +1101 -0
  27. data/doc/Sword2Ruby.html +213 -0
  28. data/doc/created.rid +29 -0
  29. data/doc/images/add.png +0 -0
  30. data/doc/images/brick.png +0 -0
  31. data/doc/images/brick_link.png +0 -0
  32. data/doc/images/bug.png +0 -0
  33. data/doc/images/bullet_black.png +0 -0
  34. data/doc/images/bullet_toggle_minus.png +0 -0
  35. data/doc/images/bullet_toggle_plus.png +0 -0
  36. data/doc/images/date.png +0 -0
  37. data/doc/images/delete.png +0 -0
  38. data/doc/images/find.png +0 -0
  39. data/doc/images/loadingAnimation.gif +0 -0
  40. data/doc/images/macFFBgHack.png +0 -0
  41. data/doc/images/package.png +0 -0
  42. data/doc/images/page_green.png +0 -0
  43. data/doc/images/page_white_text.png +0 -0
  44. data/doc/images/page_white_width.png +0 -0
  45. data/doc/images/plugin.png +0 -0
  46. data/doc/images/ruby.png +0 -0
  47. data/doc/images/tag_blue.png +0 -0
  48. data/doc/images/tag_green.png +0 -0
  49. data/doc/images/transparent.png +0 -0
  50. data/doc/images/wrench.png +0 -0
  51. data/doc/images/wrench_orange.png +0 -0
  52. data/doc/images/zoom.png +0 -0
  53. data/doc/index.html +118 -0
  54. data/doc/js/darkfish.js +153 -0
  55. data/doc/js/jquery.js +18 -0
  56. data/doc/js/navigation.js +142 -0
  57. data/doc/js/search.js +94 -0
  58. data/doc/js/search_index.js +1 -0
  59. data/doc/js/searcher.js +228 -0
  60. data/doc/rdoc.css +543 -0
  61. data/doc/spec/fixtures/example_txt.html +125 -0
  62. data/doc/table_of_contents.html +267 -0
  63. data/lib/sword2ruby/auto_discover.rb +71 -0
  64. data/lib/sword2ruby/collection.rb +261 -0
  65. data/lib/sword2ruby/connection.rb +37 -0
  66. data/lib/sword2ruby/constant.rb +35 -0
  67. data/lib/sword2ruby/deposit_receipt.rb +52 -0
  68. data/lib/sword2ruby/element.rb +12 -0
  69. data/lib/sword2ruby/entry.rb +602 -0
  70. data/lib/sword2ruby/exception.rb +7 -0
  71. data/lib/sword2ruby/feed.rb +34 -0
  72. data/lib/sword2ruby/rexml_element.rb +79 -0
  73. data/lib/sword2ruby/service.rb +79 -0
  74. data/lib/sword2ruby/sword_accept.rb +10 -0
  75. data/lib/sword2ruby/sword_statement_oai_ore.rb +38 -0
  76. data/lib/sword2ruby/user.rb +25 -0
  77. data/lib/sword2ruby/utility.rb +232 -0
  78. data/lib/sword2ruby/version.rb +4 -0
  79. data/lib/sword2ruby.rb +32 -0
  80. data/spec/auto_discover_spec.rb +30 -0
  81. data/spec/collection_spec.rb +33 -0
  82. data/spec/connection_spec.rb +21 -0
  83. data/spec/end_to_end_spec.rb +235 -0
  84. data/spec/fixtures/example.txt +3 -0
  85. data/spec/fixtures/snowflake.png +0 -0
  86. data/spec/fixtures/zip-test.zip +0 -0
  87. data/spec/service_spec.rb +38 -0
  88. data/spec/statement_spec.rb +53 -0
  89. data/spec/test_constants.rb +32 -0
  90. data/sword2ruby.gemspec +42 -0
  91. data/sword2ruby.tmproj +27 -0
  92. metadata +197 -0
@@ -0,0 +1,837 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>class Atom::Collection - RDoc Documentation</title>
8
+
9
+ <link type="text/css" media="screen" href="../rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "../";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="../js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="../js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="../js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="../js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="../js/darkfish.js"></script>
21
+
22
+
23
+ <body id="top" class="class">
24
+ <nav id="metadata">
25
+ <nav id="home-section" class="section">
26
+ <h3 class="section-header">
27
+ <a href="../index.html">Home</a>
28
+ <a href="../table_of_contents.html#classes">Classes</a>
29
+ <a href="../table_of_contents.html#methods">Methods</a>
30
+ </h3>
31
+ </nav>
32
+
33
+
34
+ <nav id="search-section" class="section project-section" class="initially-hidden">
35
+ <form action="#" method="get" accept-charset="utf-8">
36
+ <h3 class="section-header">
37
+ <input type="text" name="search" placeholder="Search" id="search-field"
38
+ title="Type to search, Up and Down to navigate, Enter to load">
39
+ </h3>
40
+ </form>
41
+
42
+ <ul id="search-results" class="initially-hidden"></ul>
43
+ </nav>
44
+
45
+
46
+ <div id="file-metadata">
47
+ <nav id="file-list-section" class="section">
48
+ <h3 class="section-header">Defined In</h3>
49
+ <ul>
50
+ <li>lib/sword2ruby/collection.rb
51
+ </ul>
52
+ </nav>
53
+
54
+
55
+ </div>
56
+
57
+ <div id="class-metadata">
58
+
59
+ <nav id="parent-class-section" class="section">
60
+ <h3 class="section-header">Parent</h3>
61
+
62
+ <p class="link"><a href="Element.html">Atom::Element</a>
63
+
64
+ </nav>
65
+
66
+
67
+ <!-- Method Quickref -->
68
+ <nav id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+
71
+ <ul class="link-list">
72
+
73
+ <li><a href="#method-i-app_accept">#app_accept</a>
74
+
75
+ <li><a href="#method-i-app_accept_alternate_multipart_related">#app_accept_alternate_multipart_related</a>
76
+
77
+ <li><a href="#method-i-collection_uri">#collection_uri</a>
78
+
79
+ <li><a href="#method-i-post-21">#post!</a>
80
+
81
+ <li><a href="#method-i-post_media-21">#post_media!</a>
82
+
83
+ <li><a href="#method-i-post_multipart-21">#post_multipart!</a>
84
+
85
+ <li><a href="#method-i-sword_accept_packagings">#sword_accept_packagings</a>
86
+
87
+ <li><a href="#method-i-sword_collection_policy">#sword_collection_policy</a>
88
+
89
+ <li><a href="#method-i-sword_mediation">#sword_mediation</a>
90
+
91
+ <li><a href="#method-i-sword_services">#sword_services</a>
92
+
93
+ <li><a href="#method-i-sword_treatment">#sword_treatment</a>
94
+
95
+ </ul>
96
+ </nav>
97
+
98
+ </div>
99
+
100
+ <div id="project-metadata">
101
+ <nav id="fileindex-section" class="section project-section">
102
+ <h3 class="section-header">Pages</h3>
103
+
104
+ <ul>
105
+
106
+ <li class="file"><a href="../Gemfile.html">Gemfile</a>
107
+
108
+ <li class="file"><a href="../Rakefile.html">Rakefile</a>
109
+
110
+ <li class="file"><a href="../spec/fixtures/example_txt.html">example</a>
111
+
112
+ </ul>
113
+ </nav>
114
+
115
+ <nav id="classindex-section" class="section project-section">
116
+ <h3 class="section-header">Class and Module Index</h3>
117
+
118
+ <ul class="link-list">
119
+
120
+ <li><a href="../Sword2Ruby.html">Sword2Ruby</a>
121
+
122
+ <li><a href="../Sword2Ruby/Atom.html">Sword2Ruby::Atom</a>
123
+
124
+ <li><a href="../Sword2Ruby/AutoDiscover.html">Sword2Ruby::AutoDiscover</a>
125
+
126
+ <li><a href="../Sword2Ruby/Connection.html">Sword2Ruby::Connection</a>
127
+
128
+ <li><a href="../Sword2Ruby/DepositReceipt.html">Sword2Ruby::DepositReceipt</a>
129
+
130
+ <li><a href="../Sword2Ruby/Exception.html">Sword2Ruby::Exception</a>
131
+
132
+ <li><a href="../Sword2Ruby/SwordAccept.html">Sword2Ruby::SwordAccept</a>
133
+
134
+ <li><a href="../Sword2Ruby/SwordStatementOAIORE.html">Sword2Ruby::SwordStatementOAIORE</a>
135
+
136
+ <li><a href="../Sword2Ruby/User.html">Sword2Ruby::User</a>
137
+
138
+ <li><a href="../Sword2Ruby/Utility.html">Sword2Ruby::Utility</a>
139
+
140
+ <li><a href="../Atom.html">Atom</a>
141
+
142
+ <li><a href="../Atom/Collection.html">Atom::Collection</a>
143
+
144
+ <li><a href="../Atom/Element.html">Atom::Element</a>
145
+
146
+ <li><a href="../Atom/Entry.html">Atom::Entry</a>
147
+
148
+ <li><a href="../Atom/Feed.html">Atom::Feed</a>
149
+
150
+ <li><a href="../Atom/Service.html">Atom::Service</a>
151
+
152
+ <li><a href="../REXML.html">REXML</a>
153
+
154
+ <li><a href="../REXML/Element.html">REXML::Element</a>
155
+
156
+ <li><a href="../Object.html">Object</a>
157
+
158
+ </ul>
159
+ </nav>
160
+
161
+ </div>
162
+ </nav>
163
+
164
+ <div id="documentation">
165
+ <h1 class="class">class Atom::Collection</h1>
166
+
167
+ <div id="description" class="description">
168
+
169
+ <p>Extensions to the <a
170
+ href="https://github.com/bct/atom-tools/wiki">atom-tools</a> <a
171
+ href="Collection.html">Atom::Collection</a> class to support Sword2
172
+ operations. These methods are additive to those supplied by the atom-tools
173
+ gem.</p>
174
+
175
+ <p>Please see the <a
176
+ href="http://rdoc.info/github/bct/atom-tools/master/frames">atom-tools
177
+ documentation</a> for a complete list of attributes and methods.</p>
178
+
179
+ </div><!-- description -->
180
+
181
+
182
+
183
+
184
+ <section id="5Buntitled-5D" class="documentation-section">
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+ <!-- Methods -->
194
+
195
+ <section id="public-instance-5Buntitled-5D-method-details" class="method-section section">
196
+ <h3 class="section-header">Public Instance Methods</h3>
197
+
198
+
199
+ <div id="method-i-app_accept" class="method-detail ">
200
+
201
+ <div class="method-heading">
202
+ <span class="method-name">app_accept</span><span
203
+ class="method-args">()</span>
204
+ <span class="method-click-advice">click to toggle source</span>
205
+ </div>
206
+
207
+
208
+ <div class="method-description">
209
+
210
+ <p>This method returns the string value of the &lt;<a
211
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_retreivingservicedocument">app:accept></a>
212
+ tag, or nil if it not defined in the service document.</p>
213
+
214
+
215
+
216
+ <div class="method-source-code" id="app_accept-source">
217
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 56</span>
218
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">app_accept</span>
219
+ <span class="ruby-identifier">sword_accepts</span>.<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">alternate</span>.<span class="ruby-identifier">nil?</span> }
220
+ <span class="ruby-keyword">end</span></pre>
221
+ </div><!-- app_accept-source -->
222
+
223
+ </div>
224
+
225
+
226
+
227
+
228
+ </div><!-- app_accept-method -->
229
+
230
+
231
+ <div id="method-i-app_accept_alternate_multipart_related" class="method-detail ">
232
+
233
+ <div class="method-heading">
234
+ <span class="method-name">app_accept_alternate_multipart_related</span><span
235
+ class="method-args">()</span>
236
+ <span class="method-click-advice">click to toggle source</span>
237
+ </div>
238
+
239
+
240
+ <div class="method-description">
241
+
242
+ <p>This method returns the string value of the &lt;app:accept <a
243
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_retreivingservicedocument">alternate=“multipart-related”></a>
244
+ tag, or nil if it not defined in the service document.</p>
245
+
246
+
247
+
248
+ <div class="method-source-code" id="app_accept_alternate_multipart_related-source">
249
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 62</span>
250
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">app_accept_alternate_multipart_related</span>
251
+ <span class="ruby-identifier">sword_accepts</span>.<span class="ruby-identifier">find</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">alternate</span> <span class="ruby-operator">==</span> <span class="ruby-string">&quot;multipart-related&quot;</span> }
252
+ <span class="ruby-keyword">end</span></pre>
253
+ </div><!-- app_accept_alternate_multipart_related-source -->
254
+
255
+ </div>
256
+
257
+
258
+
259
+
260
+ </div><!-- app_accept_alternate_multipart_related-method -->
261
+
262
+
263
+ <div id="method-i-collection_uri" class="method-detail ">
264
+
265
+ <div class="method-heading">
266
+ <span class="method-name">collection_uri</span><span
267
+ class="method-args">()</span>
268
+ <span class="method-click-advice">click to toggle source</span>
269
+ </div>
270
+
271
+
272
+ <div class="method-description">
273
+
274
+ <p>This method returns the URI string from the @href attribute of the <a
275
+ href="Collection.html">Collection</a>, or nil if it is not defined.</p>
276
+
277
+
278
+
279
+ <div class="method-source-code" id="collection_uri-source">
280
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 20</span>
281
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">collection_uri</span>
282
+ <span class="ruby-ivar">@href</span>
283
+ <span class="ruby-keyword">end</span></pre>
284
+ </div><!-- collection_uri-source -->
285
+
286
+ </div>
287
+
288
+
289
+
290
+
291
+ </div><!-- collection_uri-method -->
292
+
293
+
294
+ <div id="method-i-post-21" class="method-detail ">
295
+
296
+ <div class="method-heading">
297
+ <span class="method-name">post!</span><span
298
+ class="method-args">(params = {})</span>
299
+ <span class="method-click-advice">click to toggle source</span>
300
+ </div>
301
+
302
+
303
+ <div class="method-description">
304
+
305
+ <p>This method creates a new entry in the collection by posting an <a
306
+ href="../Atom.html">Atom</a> entry to the collection URI. The method will
307
+ return a <a
308
+ href="../Sword2Ruby/DepositReceipt.html">Sword2Ruby::DepositReceipt</a>
309
+ object, or raise a <a
310
+ href="../Sword2Ruby/Exception.html">Sword2Ruby::Exception</a> in the case
311
+ of an error.</p>
312
+
313
+ <h3 id="method-i-post-21-label-Parameters+%28passed+as+a+hash+collection%29">Parameters (passed as a hash collection)</h3>
314
+ <dl class="rdoc-list note-list"><dt>:entry
315
+ <dd>
316
+ <p>an <a href="Entry.html">Atom::Entry</a> to be added to the collection</p>
317
+ </dd><dt>:slug
318
+ <dd>
319
+ <p>(optional) string value indicating the suggested identifier of the new
320
+ entry</p>
321
+ </dd><dt>:<a href="Collection.html#method-i-collection_uri">#collection_uri</a>
322
+ <dd>
323
+ <p>(optional) the collection URI to post to. If not supplied, this will
324
+ default to the current collection’s URI as specified in the @href
325
+ attribute.</p>
326
+ </dd><dt>:in_progress
327
+ <dd>
328
+ <p>(optional) boolean value indicating whether the new entry will be completed
329
+ at a later date</p>
330
+ </dd><dt>:on_behalf_of
331
+ <dd>
332
+ <p>(optional) string value indicating username on whos behalf the submission
333
+ is being performed</p>
334
+ </dd><dt>:connection
335
+ <dd>
336
+ <p>(optional) <a
337
+ href="../Sword2Ruby/Connection.html">Sword2Ruby::Connection</a> object used
338
+ to perform the operation. If not supplied, the existing collection’s
339
+ connection will be used.</p>
340
+ </dd></dl>
341
+
342
+ <p>Note that you should call <strong>&lt;collection&gt;.feed.updated!</strong>
343
+ followed by <strong>&lt;collection&gt;.feed.update!</strong> after making
344
+ updates to a collection.</p>
345
+
346
+ <p>For more information, see the Sword2 specification: <a
347
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_creatingresource_entry">section
348
+ 6.3.3. “Creating a Resource with an Atom Entry”</a>.</p>
349
+
350
+
351
+
352
+ <div class="method-source-code" id="post-21-source">
353
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 81</span>
354
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">post!</span>(<span class="ruby-identifier">params</span> = {})
355
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">'params'</span>, <span class="ruby-identifier">params</span>, <span class="ruby-constant">Hash</span>)
356
+ <span class="ruby-identifier">defaults</span> = {
357
+ <span class="ruby-value">:entry</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
358
+ <span class="ruby-value">:slug</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
359
+ <span class="ruby-value">:collection_uri</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">collection_uri</span>,
360
+ <span class="ruby-value">:in_progress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
361
+ <span class="ruby-value">:on_behalf_of</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
362
+ <span class="ruby-value">:connection</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@http</span>
363
+ }
364
+ <span class="ruby-identifier">options</span> = <span class="ruby-identifier">defaults</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">params</span>)
365
+
366
+ <span class="ruby-comment">#Validate parameters</span>
367
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':entry'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:entry</span>], <span class="ruby-operator">::</span><span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">Entry</span>)
368
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':slug'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>], <span class="ruby-constant">String</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>]
369
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':collection_uri'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:collection_uri</span>], <span class="ruby-constant">String</span>)
370
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':on_behalf_of'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>], <span class="ruby-constant">String</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>]
371
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':connection'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>], <span class="ruby-constant">Sword2Ruby</span><span class="ruby-operator">::</span><span class="ruby-constant">Connection</span>)
372
+
373
+ <span class="ruby-identifier">headers</span> = {<span class="ruby-string">&quot;Content-Type&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">&quot;application/atom+xml;type=entry&quot;</span> }
374
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;Slug&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>]
375
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;In-Progress&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword">if</span> (<span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">false</span>)
376
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;On-Behalf-Of&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>]
377
+
378
+ <span class="ruby-identifier">response</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>].<span class="ruby-identifier">post</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:collection_uri</span>], <span class="ruby-identifier">options</span>[<span class="ruby-value">:entry</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">headers</span>)
379
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPSuccess</span>
380
+ <span class="ruby-keyword">return</span> <span class="ruby-constant">DepositReceipt</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">response</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>])
381
+ <span class="ruby-keyword">else</span>
382
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Sword2Ruby</span><span class="ruby-operator">::</span><span class="ruby-constant">Exception</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Failed to do post!(#{options[:collection_uri]}): server returned code #{response.code} #{response.message}&quot;</span>)
383
+ <span class="ruby-keyword">end</span>
384
+ <span class="ruby-keyword">end</span></pre>
385
+ </div><!-- post-21-source -->
386
+
387
+ </div>
388
+
389
+
390
+
391
+
392
+ </div><!-- post-21-method -->
393
+
394
+
395
+ <div id="method-i-post_media-21" class="method-detail ">
396
+
397
+ <div class="method-heading">
398
+ <span class="method-name">post_media!</span><span
399
+ class="method-args">(params = {})</span>
400
+ <span class="method-click-advice">click to toggle source</span>
401
+ </div>
402
+
403
+
404
+ <div class="method-description">
405
+
406
+ <p>This method creates a new entry in the collection by posting a file to the
407
+ collection URI. An MD5-digest will be calculated automatically from the
408
+ file and sent to the server with the request. The method will return a <a
409
+ href="../Sword2Ruby/DepositReceipt.html">Sword2Ruby::DepositReceipt</a>
410
+ object, or raise a <a
411
+ href="../Sword2Ruby/Exception.html">Sword2Ruby::Exception</a> in the case
412
+ of an error.</p>
413
+
414
+ <h3 id="method-i-post_media-21-label-Parameters+%28passed+as+a+hash+collection%29">Parameters (passed as a hash collection)</h3>
415
+ <dl class="rdoc-list note-list"><dt>:filepath
416
+ <dd>
417
+ <p>a filepath string indicating the file to be posted. The file must be
418
+ readable by the process.</p>
419
+ </dd><dt>:content_type
420
+ <dd>
421
+ <p>the mime content-type string of the file, e.g. “application/zip” or
422
+ “text/plain”</p>
423
+ </dd><dt>:packaging
424
+ <dd>
425
+ <p>(optional) the Sword packaging string of the file, e.g. “<a
426
+ href="http://purl.org/net/sword/package/METSDSpaceSIP">purl.org/net/sword/package/METSDSpaceSIP</a>”</p>
427
+ </dd><dt>:slug
428
+ <dd>
429
+ <p>(optional) the suggested identifier of the new entry</p>
430
+ </dd><dt>:<a href="Collection.html#method-i-collection_uri">#collection_uri</a>
431
+ <dd>
432
+ <p>(optional) the collection URI to post to. If not supplied, this will
433
+ default to the current collection’s URI as specified in the @href
434
+ attribute.</p>
435
+ </dd><dt>:in_progress
436
+ <dd>
437
+ <p>(optional) boolean value indicating whether the new entry will be completed
438
+ at a later date</p>
439
+ </dd><dt>:on_behalf_of
440
+ <dd>
441
+ <p>(optional) username on whos behalf the submission is being performed</p>
442
+ </dd><dt>:connection
443
+ <dd>
444
+ <p>(optional) <a
445
+ href="../Sword2Ruby/Connection.html">Sword2Ruby::Connection</a> object used
446
+ to perform the operation. If not supplied, the existing collection’s
447
+ connection will be used.</p>
448
+ </dd></dl>
449
+
450
+ <p>Note that you should call <strong>&lt;collection&gt;.feed.updated!</strong>
451
+ followed by <strong>&lt;collection&gt;.feed.update!</strong> after making
452
+ updates to a collection.</p>
453
+
454
+ <p>For more information, see the Sword2 specification: <a
455
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_creatingresource_binary">section
456
+ 6.3.1. “Creating a Resource with a Binary File Deposit”</a>.</p>
457
+
458
+
459
+
460
+ <div class="method-source-code" id="post_media-21-source">
461
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 129</span>
462
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">post_media!</span>(<span class="ruby-identifier">params</span> = {})
463
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">'params'</span>, <span class="ruby-identifier">params</span>, <span class="ruby-constant">Hash</span>)
464
+ <span class="ruby-identifier">defaults</span> = {
465
+ <span class="ruby-value">:filepath</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
466
+ <span class="ruby-value">:content_type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
467
+ <span class="ruby-value">:packaging</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
468
+ <span class="ruby-value">:slug</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
469
+ <span class="ruby-value">:collection_uri</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">collection_uri</span>,
470
+ <span class="ruby-value">:in_progress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
471
+ <span class="ruby-value">:on_behalf_of</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
472
+ <span class="ruby-value">:connection</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@http</span>
473
+ }
474
+ <span class="ruby-identifier">options</span> = <span class="ruby-identifier">defaults</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">params</span>)
475
+
476
+ <span class="ruby-comment">#Validate parameters</span>
477
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':filepath'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:filepath</span>], <span class="ruby-constant">String</span>)
478
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':content_type'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:content_type</span>], <span class="ruby-constant">String</span>)
479
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':packaging'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:packaging</span>], <span class="ruby-constant">String</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:packaging</span>]
480
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':slug'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>], <span class="ruby-constant">String</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>]
481
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':collection_uri'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:collection_uri</span>], <span class="ruby-constant">String</span>)
482
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':on_behalf_of'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>], <span class="ruby-constant">String</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>]
483
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':connection'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>], <span class="ruby-constant">Sword2Ruby</span><span class="ruby-operator">::</span><span class="ruby-constant">Connection</span>)
484
+
485
+ <span class="ruby-identifier">filename</span>, <span class="ruby-identifier">md5</span>, <span class="ruby-identifier">data</span> = <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">read_file</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:filepath</span>])
486
+
487
+ <span class="ruby-identifier">headers</span> = {<span class="ruby-string">&quot;Content-Type&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:content_type</span>]}
488
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;Content-Disposition&quot;</span>] = <span class="ruby-node">&quot;attachment; filename=#{filename}&quot;</span>
489
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;Content-MD5&quot;</span>] = <span class="ruby-identifier">md5</span>
490
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;Packaging&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:packaging</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:packaging</span>]
491
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;Slug&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>]
492
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;In-Progress&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword">if</span> (<span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">false</span>)
493
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;On-Behalf-Of&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>]
494
+
495
+ <span class="ruby-identifier">response</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>].<span class="ruby-identifier">post</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:collection_uri</span>], <span class="ruby-identifier">data</span>, <span class="ruby-identifier">headers</span>)
496
+
497
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPSuccess</span>
498
+ <span class="ruby-keyword">return</span> <span class="ruby-constant">DepositReceipt</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">response</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>])
499
+ <span class="ruby-keyword">else</span>
500
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Sword2Ruby</span><span class="ruby-operator">::</span><span class="ruby-constant">Exception</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Failed to do post_media!(#{options[:collection_uri]}): server returned #{response.code} #{response.message}&quot;</span>)
501
+ <span class="ruby-keyword">end</span>
502
+ <span class="ruby-keyword">end</span></pre>
503
+ </div><!-- post_media-21-source -->
504
+
505
+ </div>
506
+
507
+
508
+
509
+
510
+ </div><!-- post_media-21-method -->
511
+
512
+
513
+ <div id="method-i-post_multipart-21" class="method-detail ">
514
+
515
+ <div class="method-heading">
516
+ <span class="method-name">post_multipart!</span><span
517
+ class="method-args">(params = {})</span>
518
+ <span class="method-click-advice">click to toggle source</span>
519
+ </div>
520
+
521
+
522
+ <div class="method-description">
523
+
524
+ <p>This method creates a new entry in the collection by posting a file and
525
+ atom-entry to the collection URI. An MD5-digest will be calculated
526
+ automatically from the file and sent to the server with the request. The
527
+ method will return a <a
528
+ href="../Sword2Ruby/DepositReceipt.html">Sword2Ruby::DepositReceipt</a>
529
+ object, or raise a <a
530
+ href="../Sword2Ruby/Exception.html">Sword2Ruby::Exception</a> in the case
531
+ of an error.</p>
532
+
533
+ <h3 id="method-i-post_multipart-21-label-Parameters+%28passed+as+a+hash+collection%29">Parameters (passed as a hash collection)</h3>
534
+ <dl class="rdoc-list note-list"><dt>:entry
535
+ <dd>
536
+ <p>an <a href="Entry.html">Atom::Entry</a> to be added to the collection</p>
537
+ </dd><dt>:filepath
538
+ <dd>
539
+ <p>a filepath string indicating the file to be posted. The file must be
540
+ readable by the process.</p>
541
+ </dd><dt>:content_type
542
+ <dd>
543
+ <p>the mime content-type string of the file, e.g. “application/zip” or
544
+ “text/plain”</p>
545
+ </dd><dt>:packaging
546
+ <dd>
547
+ <p>(optional) the Sword packaging string of the file, e.g. “<a
548
+ href="http://purl.org/net/sword/package/METSDSpaceSIP">purl.org/net/sword/package/METSDSpaceSIP</a>”</p>
549
+ </dd><dt>:slug
550
+ <dd>
551
+ <p>(optional) the suggested identifier of the new entry</p>
552
+ </dd><dt>:<a href="Collection.html#method-i-collection_uri">#collection_uri</a>
553
+ <dd>
554
+ <p>(optional) the collection URI to post to. If not supplied, this will
555
+ default to the current collection’s URI as specified in the @href
556
+ attribute.</p>
557
+ </dd><dt>:in_progress
558
+ <dd>
559
+ <p>(optional) boolean value indicating whether the new entry will be completed
560
+ at a later date</p>
561
+ </dd><dt>:on_behalf_of
562
+ <dd>
563
+ <p>(optional) username on whos behalf the submission is being performed</p>
564
+ </dd><dt>:connection
565
+ <dd>
566
+ <p>(optional) <a
567
+ href="../Sword2Ruby/Connection.html">Sword2Ruby::Connection</a> object used
568
+ to perform the operation. If not supplied, the existing collection’s
569
+ connection will be used.</p>
570
+ </dd></dl>
571
+
572
+ <p>Note that you should call <strong>&lt;collection&gt;.feed.updated!</strong>
573
+ followed by <strong>&lt;collection&gt;.feed.update!</strong> after making
574
+ updates to a collection.</p>
575
+
576
+ <p>For more information, see the Sword2 specification: <a
577
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_creatingresource_multipart">section
578
+ 6.3.2. “Creating a Resource with a Multipart Deposit”</a>.</p>
579
+
580
+
581
+
582
+ <div class="method-source-code" id="post_multipart-21-source">
583
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 188</span>
584
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">post_multipart!</span>(<span class="ruby-identifier">params</span> = {})
585
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">'params'</span>, <span class="ruby-identifier">params</span>, <span class="ruby-constant">Hash</span>)
586
+ <span class="ruby-identifier">defaults</span> = {
587
+ <span class="ruby-value">:entry</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
588
+ <span class="ruby-value">:filepath</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
589
+ <span class="ruby-value">:content_type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
590
+ <span class="ruby-value">:packaging</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
591
+ <span class="ruby-value">:slug</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
592
+ <span class="ruby-value">:collection_uri</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">collection_uri</span>,
593
+ <span class="ruby-value">:in_progress</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
594
+ <span class="ruby-value">:on_behalf_of</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword">nil</span>,
595
+ <span class="ruby-value">:connection</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@http</span>
596
+ }
597
+ <span class="ruby-identifier">options</span> = <span class="ruby-identifier">defaults</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">params</span>)
598
+
599
+ <span class="ruby-comment">#Validate parameters</span>
600
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':entry'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:entry</span>], <span class="ruby-operator">::</span><span class="ruby-constant">Atom</span><span class="ruby-operator">::</span><span class="ruby-constant">Entry</span>)
601
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':filepath'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:filepath</span>], <span class="ruby-constant">String</span>)
602
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':content_type'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:content_type</span>], <span class="ruby-constant">String</span>)
603
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':packaging'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:packaging</span>], <span class="ruby-constant">String</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:packaging</span>]
604
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">'slug'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>], <span class="ruby-constant">String</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>]
605
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':collection_uri'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:collection_uri</span>], <span class="ruby-constant">String</span>)
606
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':on_behalf_of'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>], <span class="ruby-constant">String</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>]
607
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">check_argument_class</span>(<span class="ruby-string">':connection'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>], <span class="ruby-constant">Sword2Ruby</span><span class="ruby-operator">::</span><span class="ruby-constant">Connection</span>)
608
+
609
+ <span class="ruby-identifier">tmp</span> = <span class="ruby-string">&quot;&quot;</span>
610
+ <span class="ruby-identifier">boundary</span> = <span class="ruby-string">&quot;========&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">to_i</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">&quot;==&quot;</span>
611
+ <span class="ruby-identifier">filename</span>, <span class="ruby-identifier">md5</span>, <span class="ruby-identifier">data</span> = <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">read_file</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:filepath</span>])
612
+
613
+ <span class="ruby-identifier">headers</span> = {<span class="ruby-string">&quot;Content-Type&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-string">'multipart/related; boundary=&quot;'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">boundary</span> <span class="ruby-operator">+</span> <span class="ruby-string">'&quot;; type=&quot;application/atom+xml&quot;'</span>}
614
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;Slug&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:slug</span>]
615
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;In-Progress&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword">if</span> (<span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:in_progress</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">false</span>)
616
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;On-Behalf-Of&quot;</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>] <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:on_behalf_of</span>]
617
+ <span class="ruby-identifier">headers</span>[<span class="ruby-string">&quot;MIME-Version&quot;</span>] = <span class="ruby-string">&quot;1.0&quot;</span>
618
+
619
+
620
+ <span class="ruby-comment"># write boundary identifer to temp</span>
621
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;--#{boundary}\r\n&quot;</span>
622
+
623
+ <span class="ruby-comment"># write entry relevant headers to temp</span>
624
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;Content-Type: application/atom+xml; charset=\&quot;utf-8\&quot;\r\n&quot;</span>
625
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;Content-Disposition: attachment; name=atom\r\n&quot;</span>
626
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;MIME-Version: 1.0\r\n\r\n&quot;</span>
627
+
628
+ <span class="ruby-comment"># write entry to temp</span>
629
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:entry</span>].<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">&quot;\r\n&quot;</span>
630
+
631
+ <span class="ruby-comment"># write boundary identifier to temp</span>
632
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;--#{boundary}\r\n&quot;</span>
633
+
634
+ <span class="ruby-comment"># write media part relevant headers to temp </span>
635
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Content-Type: #{options[:content_type]}\r\n&quot;</span>
636
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Content-Disposition: attachment; name=payload; filename=#{filename}\r\n&quot;</span>
637
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Content-MD5: #{md5}\r\n&quot;</span>
638
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Packaging: #{options[:packaging]}\r\n&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:packaging</span>]
639
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-string">&quot;MIME-Version: 1.0\r\n\r\n&quot;</span>
640
+
641
+ <span class="ruby-comment"># write the file base64 encoded to temp</span>
642
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Base64</span>.<span class="ruby-identifier">encode64</span>(<span class="ruby-identifier">data</span>)
643
+
644
+ <span class="ruby-comment"># write boundary identifier to temp</span>
645
+ <span class="ruby-identifier">tmp</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;--#{boundary}--\r\n&quot;</span> <span class="ruby-comment">#The last two dashes (--) are important!</span>
646
+
647
+ <span class="ruby-identifier">response</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>].<span class="ruby-identifier">post</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:collection_uri</span>], <span class="ruby-identifier">tmp</span>, <span class="ruby-identifier">headers</span>)
648
+
649
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPSuccess</span>
650
+ <span class="ruby-keyword">return</span> <span class="ruby-constant">DepositReceipt</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">response</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value">:connection</span>])
651
+ <span class="ruby-keyword">else</span>
652
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Sword2Ruby</span><span class="ruby-operator">::</span><span class="ruby-constant">Exception</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Failed to do post_multipart!(#{options[:collection_uri]}): server returned #{response.code} #{response.message}&quot;</span>)
653
+ <span class="ruby-keyword">end</span>
654
+ <span class="ruby-keyword">end</span></pre>
655
+ </div><!-- post_multipart-21-source -->
656
+
657
+ </div>
658
+
659
+
660
+
661
+
662
+ </div><!-- post_multipart-21-method -->
663
+
664
+
665
+ <div id="method-i-sword_accept_packagings" class="method-detail ">
666
+
667
+ <div class="method-heading">
668
+ <span class="method-name">sword_accept_packagings</span><span
669
+ class="method-args">()</span>
670
+ <span class="method-click-advice">click to toggle source</span>
671
+ </div>
672
+
673
+
674
+ <div class="method-description">
675
+
676
+ <p>This method returns an array of the string values of the &lt;<a
677
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_retreivingservicedocument">sword:acceptPackaging></a>
678
+ tags, or an empty array [ ] if none are defined in the service document.</p>
679
+
680
+
681
+
682
+ <div class="method-source-code" id="sword_accept_packagings-source">
683
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 44</span>
684
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">sword_accept_packagings</span>
685
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">find_elements_text</span>(<span class="ruby-identifier">extensions</span>, <span class="ruby-string">&quot;sword:acceptPackaging&quot;</span>)
686
+ <span class="ruby-keyword">end</span></pre>
687
+ </div><!-- sword_accept_packagings-source -->
688
+
689
+ </div>
690
+
691
+
692
+
693
+
694
+ </div><!-- sword_accept_packagings-method -->
695
+
696
+
697
+ <div id="method-i-sword_collection_policy" class="method-detail ">
698
+
699
+ <div class="method-heading">
700
+ <span class="method-name">sword_collection_policy</span><span
701
+ class="method-args">()</span>
702
+ <span class="method-click-advice">click to toggle source</span>
703
+ </div>
704
+
705
+
706
+ <div class="method-description">
707
+
708
+ <p>This method returns the string value of the &lt;<a
709
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_retreivingservicedocument">sword:collectionPolicy></a>,
710
+ or nil if it is not defined in the service document.</p>
711
+
712
+
713
+
714
+ <div class="method-source-code" id="sword_collection_policy-source">
715
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 26</span>
716
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">sword_collection_policy</span>
717
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">find_element_text</span>(<span class="ruby-identifier">extensions</span>, <span class="ruby-string">&quot;sword:collectionPolicy&quot;</span>)
718
+ <span class="ruby-keyword">end</span></pre>
719
+ </div><!-- sword_collection_policy-source -->
720
+
721
+ </div>
722
+
723
+
724
+
725
+
726
+ </div><!-- sword_collection_policy-method -->
727
+
728
+
729
+ <div id="method-i-sword_mediation" class="method-detail ">
730
+
731
+ <div class="method-heading">
732
+ <span class="method-name">sword_mediation</span><span
733
+ class="method-args">()</span>
734
+ <span class="method-click-advice">click to toggle source</span>
735
+ </div>
736
+
737
+
738
+ <div class="method-description">
739
+
740
+ <p>This method returns the boolean value of the &lt;<a
741
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_retreivingservicedocument">sword:mediation></a>
742
+ tag, or false if it is not defined in the service document.</p>
743
+
744
+
745
+
746
+ <div class="method-source-code" id="sword_mediation-source">
747
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 32</span>
748
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">sword_mediation</span>
749
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">find_element_boolean</span>(<span class="ruby-identifier">extensions</span>, <span class="ruby-string">&quot;sword:mediation&quot;</span>) <span class="ruby-operator">||</span> <span class="ruby-keyword">false</span>
750
+ <span class="ruby-keyword">end</span></pre>
751
+ </div><!-- sword_mediation-source -->
752
+
753
+ </div>
754
+
755
+
756
+
757
+
758
+ </div><!-- sword_mediation-method -->
759
+
760
+
761
+ <div id="method-i-sword_services" class="method-detail ">
762
+
763
+ <div class="method-heading">
764
+ <span class="method-name">sword_services</span><span
765
+ class="method-args">()</span>
766
+ <span class="method-click-advice">click to toggle source</span>
767
+ </div>
768
+
769
+
770
+ <div class="method-description">
771
+
772
+ <p>This method returns an array of the string values of the &lt;<a
773
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_retreivingservicedocument">sword:service></a>
774
+ tags, or an empty array [ ] if none are defined in the service document.</p>
775
+
776
+
777
+
778
+ <div class="method-source-code" id="sword_services-source">
779
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 50</span>
780
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">sword_services</span>
781
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">find_elements_text</span>(<span class="ruby-identifier">extensions</span>, <span class="ruby-string">&quot;sword:service&quot;</span>)
782
+ <span class="ruby-keyword">end</span></pre>
783
+ </div><!-- sword_services-source -->
784
+
785
+ </div>
786
+
787
+
788
+
789
+
790
+ </div><!-- sword_services-method -->
791
+
792
+
793
+ <div id="method-i-sword_treatment" class="method-detail ">
794
+
795
+ <div class="method-heading">
796
+ <span class="method-name">sword_treatment</span><span
797
+ class="method-args">()</span>
798
+ <span class="method-click-advice">click to toggle source</span>
799
+ </div>
800
+
801
+
802
+ <div class="method-description">
803
+
804
+ <p>This method returns the string value of the &lt;<a
805
+ href="http://sword-app.svn.sourceforge.net/viewvc/sword-app/spec/tags/sword-2.0/SWORDProfile.html?revision=377#protocoloperations_retreivingservicedocument">sword:treatment></a>
806
+ tag, or nil if it is not defined in the service document.</p>
807
+
808
+
809
+
810
+ <div class="method-source-code" id="sword_treatment-source">
811
+ <pre><span class="ruby-comment"># File lib/sword2ruby/collection.rb, line 38</span>
812
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">sword_treatment</span>
813
+ <span class="ruby-constant">Utility</span>.<span class="ruby-identifier">find_element_text</span>(<span class="ruby-identifier">extensions</span>, <span class="ruby-string">&quot;sword:treatment&quot;</span>)
814
+ <span class="ruby-keyword">end</span></pre>
815
+ </div><!-- sword_treatment-source -->
816
+
817
+ </div>
818
+
819
+
820
+
821
+
822
+ </div><!-- sword_treatment-method -->
823
+
824
+
825
+ </section><!-- public-instance-method-details -->
826
+
827
+ </section><!-- 5Buntitled-5D -->
828
+
829
+ </div><!-- documentation -->
830
+
831
+
832
+ <footer id="validator-badges">
833
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
834
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
835
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
836
+ </footer>
837
+