pho 0.5 → 0.6

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 (80) hide show
  1. data/CHANGES +17 -0
  2. data/Rakefile +10 -2
  3. data/bin/talis_store +37 -92
  4. data/doc/rdoc/classes/Pho.html +11 -0
  5. data/doc/rdoc/classes/Pho/CommandLine.html +508 -0
  6. data/doc/rdoc/classes/Pho/DatatypeProperty.html +15 -15
  7. data/doc/rdoc/classes/Pho/Enrichment.html +1 -1
  8. data/doc/rdoc/classes/Pho/Enrichment/{ResourceEnricher.html → StoreEnricher.html} +158 -58
  9. data/doc/rdoc/classes/Pho/Etags.html +36 -36
  10. data/doc/rdoc/classes/Pho/Facet/Results.html +19 -19
  11. data/doc/rdoc/classes/Pho/Facet/Term.html +6 -6
  12. data/doc/rdoc/classes/Pho/FieldPredicateMap.html +94 -94
  13. data/doc/rdoc/classes/Pho/FieldWeighting.html +14 -14
  14. data/doc/rdoc/classes/Pho/FileManagement/AbstractFileManager.html +126 -91
  15. data/doc/rdoc/classes/Pho/FileManagement/FileManager.html +68 -62
  16. data/doc/rdoc/classes/Pho/FileManagement/RDFManager.html +22 -57
  17. data/doc/rdoc/classes/Pho/Job.html +68 -67
  18. data/doc/rdoc/classes/Pho/Jobs.html +62 -62
  19. data/doc/rdoc/classes/Pho/QueryProfile.html +64 -64
  20. data/doc/rdoc/classes/Pho/RDF.html +120 -0
  21. data/doc/rdoc/classes/Pho/RDF/Parser.html +277 -0
  22. data/doc/rdoc/classes/Pho/ResourceHash.html +1 -1
  23. data/doc/rdoc/classes/Pho/ResourceHash/Converter.html +48 -46
  24. data/doc/rdoc/classes/Pho/ResourceHash/SetAlgebra.html +15 -14
  25. data/doc/rdoc/classes/Pho/Snapshot.html +36 -36
  26. data/doc/rdoc/classes/Pho/Sparql.html +50 -0
  27. data/doc/rdoc/classes/Pho/Sparql/SparqlClient.html +147 -68
  28. data/doc/rdoc/classes/Pho/Sparql/SparqlHelper.html +195 -114
  29. data/doc/rdoc/classes/Pho/Status.html +26 -26
  30. data/doc/rdoc/classes/Pho/Store.html +271 -264
  31. data/doc/rdoc/classes/Pho/StoreSparqlClient.html +183 -0
  32. data/doc/rdoc/classes/Pho/Update.html +1 -0
  33. data/doc/rdoc/classes/Pho/Update/Changeset.html +69 -68
  34. data/doc/rdoc/classes/Pho/Update/ChangesetBuilder.html +24 -24
  35. data/doc/rdoc/classes/Pho/Update/Changesets.html +15 -14
  36. data/doc/rdoc/classes/Pho/Update/LiteralStatement.html +18 -18
  37. data/doc/rdoc/classes/Pho/Update/ResourceStatement.html +24 -24
  38. data/doc/rdoc/classes/Pho/Update/Statement.html +28 -27
  39. data/doc/rdoc/classes/String.html +1 -1
  40. data/doc/rdoc/created.rid +1 -1
  41. data/doc/rdoc/files/CHANGES.html +53 -1
  42. data/doc/rdoc/files/lib/pho/changeset_rb.html +1 -1
  43. data/doc/rdoc/files/lib/pho/command_line_rb.html +101 -0
  44. data/doc/rdoc/files/lib/pho/converter_rb.html +1 -1
  45. data/doc/rdoc/files/lib/pho/enrichment_rb.html +1 -1
  46. data/doc/rdoc/files/lib/pho/file_management_rb.html +1 -1
  47. data/doc/rdoc/files/lib/pho/file_manager_rb.html +1 -1
  48. data/doc/rdoc/files/lib/pho/rdf_collection_rb.html +1 -1
  49. data/doc/rdoc/files/lib/pho/rdf_rb.html +108 -0
  50. data/doc/rdoc/files/lib/pho/sparql_rb.html +1 -1
  51. data/doc/rdoc/files/lib/pho/store_rb.html +8 -1
  52. data/doc/rdoc/files/lib/pho_rb.html +4 -2
  53. data/doc/rdoc/fr_class_index.html +6 -1
  54. data/doc/rdoc/fr_file_index.html +2 -0
  55. data/doc/rdoc/fr_method_index.html +192 -172
  56. data/examples/calais/bio.txt +7 -0
  57. data/examples/calais/dump.rb +17 -0
  58. data/examples/calais/enlighten.rb +23 -0
  59. data/examples/calais/output.rdf +25 -0
  60. data/examples/sinatra/viewer.rb +20 -0
  61. data/lib/pho.rb +4 -1
  62. data/lib/pho/changeset.rb +17 -1
  63. data/lib/pho/command_line.rb +166 -0
  64. data/lib/pho/converter.rb +8 -3
  65. data/lib/pho/enrichment.rb +93 -28
  66. data/lib/pho/file_management.rb +32 -19
  67. data/lib/pho/file_manager.rb +22 -26
  68. data/lib/pho/rdf.rb +74 -0
  69. data/lib/pho/rdf_collection.rb +2 -17
  70. data/lib/pho/sparql.rb +150 -38
  71. data/lib/pho/store.rb +28 -2
  72. data/tests/tc_contentbox.rb +41 -0
  73. data/tests/tc_enrichment.rb +41 -4
  74. data/tests/tc_file_manager.rb +97 -7
  75. data/tests/tc_rdf_collection.rb +25 -13
  76. data/tests/tc_rdf_parser.rb +37 -0
  77. data/tests/tc_sparql.rb +72 -2
  78. data/tests/tc_sparql_helper.rb +16 -0
  79. data/tests/ts_pho.rb +2 -1
  80. metadata +20 -3
data/CHANGES CHANGED
@@ -1,5 +1,22 @@
1
1
  Brief notes on significant changes and additions in each release
2
2
 
3
+ == Version 0.6
4
+
5
+ * Refactored talis_store command extracting code into Pho::CommandLine
6
+ * Tweaked talis_store command, so attempt to store .nt file will trigger conversion into RDF/XML before submitting to Platform
7
+ * Added Pho::RDF module for general rdf utilities. Initially has method to convert ntriples into rdf/xml and to store that in the platform
8
+ * At suggestion of @chrislowis added rescue around redland dependent requires.
9
+ * talis_store command-line now supports "upload" option for storing individual files or directories
10
+ * Added support for directory traversal to RDFManager and FileManager classes
11
+ * Fixed bug in counting files being managed in RDFManager
12
+ * Fixed file naming bug in AbstractFileManager, when path contains file extension
13
+ * Added support for block to StoreEnricher.merge and StoreEnricher.infer
14
+ * Renamed ResourceEnricher to StoreEnricher
15
+ * Reimplemented ResourceEnricher.enrich method to support both a callback and a block
16
+ * Added StoreSparqlClient to extend default client, and rewrite describe_uri queries as describe service calls
17
+ * Added SparqlClient.describe_uri and SparqlHelper.describe_uri methods for generating different forms
18
+ of Bounded Description for a resource
19
+
3
20
  == Version 0.5
4
21
 
5
22
  NOTE: Released 0.4.1 version of the gem at this point to support earlier versions of
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rake/testtask'
5
5
  require 'rake/clean'
6
6
 
7
7
  NAME = "pho"
8
- VER = "0.5"
8
+ VER = "0.6"
9
9
 
10
10
  RDOC_OPTS = ['--quiet', '--title', 'Pho (Talis Platform Client) Reference', '--main', 'README']
11
11
 
@@ -51,17 +51,25 @@ Rake::RDocTask.new do |rdoc|
51
51
 
52
52
  end
53
53
 
54
+ desc "Publish rdoc output to rubyforge"
55
+ task "publish-docs" => ["rdoc"] do
56
+ rubyforge_path = "/var/www/gforge-projects/#{NAME}/"
57
+ sh "scp -r doc/* " +
58
+ "#{ENV["RUBYFORGE_USER"]}@rubyforge.org:#{rubyforge_path}",
59
+ :verbose => true
60
+ end
54
61
 
55
62
  Rake::TestTask.new do |test|
56
63
  test.test_files = FileList['tests/tc_*.rb']
57
64
  end
58
65
 
66
+ desc "Install from a locally built copy of the gem"
59
67
  task :install do
60
68
  sh %{rake package}
61
69
  sh %{sudo gem install pkg/#{NAME}-#{VER}}
62
70
  end
63
71
 
64
-
72
+ desc "Uninstall the gem"
65
73
  task :uninstall => [:clean] do
66
74
  sh %{sudo gem uninstall #{NAME}}
67
75
  end
@@ -75,7 +75,7 @@ MODE
75
75
  Show read-write status of the store
76
76
 
77
77
  store
78
- Upload some RDF data to the Platform. Can either specify a local file, or a URL
78
+ Upload some RDF data to the metabox in a Platform store. Can either specify a local file, or a URL
79
79
  When a url is specified, then the data is retrieved and then submitted to the Platform
80
80
  Can also be used to store an entire directory of RDF/XML using the --dir option.
81
81
 
@@ -84,7 +84,19 @@ MODE
84
84
  #{ PROGRAM } store -u user -p pass -s my-dev1 -f /tmp/data.rdf
85
85
  #{ PROGRAM } store -u user -p pass -s my-dev1 -r http://www.example.net/data/somedata.rdf
86
86
  #{ PROGRAM } store -u user -p pass -s my-dev1 -d ~/data
87
-
87
+
88
+ upload
89
+ Upload some files to the contentbox in a Platform store. Can either specify a local file, or
90
+ an entire directory of files using the --dir option. Directories can be traversed using the
91
+ --traverse option.
92
+
93
+ example :
94
+
95
+ #{ PROGRAM } upload -u user -p pass -s my-dev1 -f /tmp/file.txt
96
+ #{ PROGRAM } upload -u user -p pass -s my-dev1 -d ~/files
97
+ #{ PROGRAM } upload -u user -p pass -s my-dev1 --traverse -d ~/files
98
+ #{ PROGRAM } upload -u user -p pass -s my-dev1 --traverse -d ~/files --base assets
99
+
88
100
  OPTIONS
89
101
 
90
102
  --help , -h
@@ -101,7 +113,10 @@ OPTIONS
101
113
  specify a file name, e.g. data to upload
102
114
  --dir
103
115
  specify a directory, e.g. containing data to upload or location to place data.
104
-
116
+ --traverse
117
+ recursively store files or RDF
118
+ --base
119
+ base path for uploading files to content box
105
120
  EOL
106
121
 
107
122
  mode = ARGV.shift
@@ -113,7 +128,9 @@ opts = GetoptLong::new(
113
128
  [ "--store" , "-s" , GetoptLong::REQUIRED_ARGUMENT ],
114
129
  [ "--url" , "-r" , GetoptLong::REQUIRED_ARGUMENT ],
115
130
  [ "--file" , "-f" , GetoptLong::REQUIRED_ARGUMENT ],
116
- [ "--dir" , "-d" , GetoptLong::REQUIRED_ARGUMENT ]
131
+ [ "--dir" , "-d" , GetoptLong::REQUIRED_ARGUMENT ],
132
+ [ "--traverse" , "-t" , GetoptLong::NO_ARGUMENT ],
133
+ [ "--base" , "-b" , GetoptLong::REQUIRED_ARGUMENT ]
117
134
  ).enum_for.inject({}) { |h, (k, v)| h.update k.delete('-') => v }
118
135
 
119
136
  mode = "help" if opts["--help"]
@@ -141,115 +158,43 @@ else
141
158
  end
142
159
 
143
160
  store = Pho::Store.new(storename, opts["username"], opts["password"])
161
+ cmds = Pho::CommandLine.new(store, opts)
144
162
 
145
163
  #begin
146
164
 
147
165
  case mode
148
166
  when "status"
149
- status = Pho::Status.read_from_store(store)
150
- puts "Store Status:\nReadable: #{status.readable?}\nWritable: #{status.writeable?}"
167
+ cmds.status()
151
168
  when "backup"
152
- puts "Submitting Snapshot Job"
153
- resp = Pho::Jobs.submit_snapshot(store, "Reindex", Time.now)
154
- puts "Monitoring Job"
155
- job = Pho::Jobs.wait_for_submitted(resp, store) do |job, message, time|
156
- puts "#{time} #{message}"
157
- end
158
- puts "Job Completed"
159
- snapshot = Pho::Snapshot.read_from_store(store)
160
- puts "Retrieving #{snapshot.url}"
161
- dir = opts["dir"] || Dir.tmpdir
162
- snapshot.backup(store, dir)
163
- puts "Download complete. MD5 OK."
169
+ cmds.backup()
164
170
  when "snapshot"
165
- puts "Submitting Snapshot Job"
166
- resp = Pho::Jobs.submit_snapshot(store, "Reindex", Time.now)
167
- puts "Monitoring Job"
168
- job = Pho::Jobs.wait_for_submitted(resp, store) do |job, message, time|
169
- puts "#{time} #{message}"
170
- end
171
- puts "Snapshot Completed"
171
+ cmds.snapshot()
172
172
  when "reindex"
173
- puts "Submitting Reindex Job"
174
- resp = Pho::Jobs.submit_reindex(store, "Reindex", Time.now)
175
- if resp.status == 201
176
- puts "Monitoring Reindex Job: #{resp.header["Location"].first}"
177
- end
178
- job = Pho::Jobs.wait_for_submitted(resp, store) do |job, message, time|
179
- puts "#{time} #{message}"
180
- end
181
- puts "Reindex Completed"
173
+ cmds.reindex()
182
174
  when "reset"
183
- puts "Resetting Store"
184
- resp = Pho::Jobs.submit_reset(store, "Reset", Time.now)
185
- puts "Monitoring Reset Job:"
186
- job = Pho::Jobs.wait_for_submitted(resp, store) do |job, message, time|
187
- puts "#{time} #{message}"
188
- end
189
- puts "Reset Completed"
175
+ cmds.reset()
190
176
  when "restore"
191
- url = opts["url"]
192
- if url == nil
193
- puts "Restore from latest snapshot"
194
- snapshot = Pho::Snapshot.read_from_store(store)
195
- url = snapshot.url
196
- end
197
- puts "Restoring from #{url}"
198
- resp = Pho::Jobs.submit_restore(store, url, "Reset", Time.now)
199
- job = Pho::Jobs.wait_for_submitted(resp, store) do |job, message, time|
200
- puts "#{time} #{message}"
201
- end
202
- puts "Restore Completed"
177
+ cmds.restore()
203
178
  when "store"
204
- resp = nil
205
- if opts["url"]
206
- puts "Storing remote data: #{opts["url"]}"
207
- resp = store.store_url( opts["url"] )
208
- elsif opts["file"]
209
- puts "Storing local file: #{opts["file"]}"
210
- resp = store.store_file( File.new( opts["file"] ) )
211
- elsif opts["dir"]
212
- puts "Storing contents of directory: #{opts["dir"]}"
213
- collection = Pho::RDFCollection.new(store, opts["dir"])
214
- collection.store()
215
- puts collection.summary()
216
- else
179
+ if opts["file"] == nil && opts["dir"] == nil && opts["url"] == nil
217
180
  abort USAGE
218
- end
219
-
220
- if resp != nil
221
- if resp.status == 204
222
- puts "Complete"
223
- else
224
- puts "Error: #{resp.status} #{resp.reason}"
225
- puts resp.content
226
- end
227
181
  end
228
-
182
+ cmds.store()
183
+ when "upload"
184
+ if opts["file"] == nil && opts["dir"] == nil && opts["url"] == nil
185
+ abort USAGE
186
+ end
187
+ cmds.upload()
229
188
  when "describe"
230
189
  if opts["url"] == nil
231
190
  abort USAGE
232
191
  end
233
- resp = store.describe( opts["url"] )
234
- if resp.status == 200
235
- puts resp.content
236
- else
237
- puts "Error: #{resp.status} #{resp.reason}"
238
- puts resp.content
239
- end
192
+ cmds.describe()
240
193
  when "sparql"
241
194
  if opts["file"] == nil
242
195
  abort USAGE
243
196
  end
244
- query = File.new( opts["file"] ).read()
245
- resp = store.sparql(query)
246
- if resp.status == 200
247
- puts resp.content
248
- else
249
- puts "Error: #{resp.status} #{resp.reason}"
250
- puts resp.content
251
- end
252
-
197
+ cmds.sparql()
253
198
  else
254
199
  abort USAGE
255
200
  end
@@ -62,6 +62,10 @@
62
62
  <a href="../files/lib/pho/changeset_builder_rb.html">
63
63
  lib/pho/changeset_builder.rb
64
64
  </a>
65
+ <br />
66
+ <a href="../files/lib/pho/rdf_rb.html">
67
+ lib/pho/rdf.rb
68
+ </a>
65
69
  <br />
66
70
  <a href="../files/lib/pho/file_manager_rb.html">
67
71
  lib/pho/file_manager.rb
@@ -74,6 +78,10 @@
74
78
  <a href="../files/lib/pho/enrichment_rb.html">
75
79
  lib/pho/enrichment.rb
76
80
  </a>
81
+ <br />
82
+ <a href="../files/lib/pho/command_line_rb.html">
83
+ lib/pho/command_line.rb
84
+ </a>
77
85
  <br />
78
86
  <a href="../files/lib/pho/status_rb.html">
79
87
  lib/pho/status.rb
@@ -164,10 +172,12 @@ TODO put together proper test suite for this
164
172
  Module <a href="Pho/Enrichment.html" class="link">Pho::Enrichment</a><br />
165
173
  Module <a href="Pho/Facet.html" class="link">Pho::Facet</a><br />
166
174
  Module <a href="Pho/FileManagement.html" class="link">Pho::FileManagement</a><br />
175
+ Module <a href="Pho/RDF.html" class="link">Pho::RDF</a><br />
167
176
  Module <a href="Pho/ResourceHash.html" class="link">Pho::ResourceHash</a><br />
168
177
  Module <a href="Pho/Sparql.html" class="link">Pho::Sparql</a><br />
169
178
  Module <a href="Pho/Update.html" class="link">Pho::Update</a><br />
170
179
  Class <a href="Pho/Analyzers.html" class="link">Pho::Analyzers</a><br />
180
+ Class <a href="Pho/CommandLine.html" class="link">Pho::CommandLine</a><br />
171
181
  Class <a href="Pho/DatatypeProperty.html" class="link">Pho::DatatypeProperty</a><br />
172
182
  Class <a href="Pho/Etags.html" class="link">Pho::Etags</a><br />
173
183
  Class <a href="Pho/FieldPredicateMap.html" class="link">Pho::FieldPredicateMap</a><br />
@@ -181,6 +191,7 @@ Class <a href="Pho/RDFCollection.html" class="link">Pho::RDFCollection</a><br />
181
191
  Class <a href="Pho/Snapshot.html" class="link">Pho::Snapshot</a><br />
182
192
  Class <a href="Pho/Status.html" class="link">Pho::Status</a><br />
183
193
  Class <a href="Pho/Store.html" class="link">Pho::Store</a><br />
194
+ Class <a href="Pho/StoreSparqlClient.html" class="link">Pho::StoreSparqlClient</a><br />
184
195
 
185
196
  </div>
186
197
 
@@ -0,0 +1,508 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Pho::CommandLine</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Pho::CommandLine</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/pho/command_line_rb.html">
59
+ lib/pho/command_line.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ Class that implements the command-line behaviour
84
+ </p>
85
+
86
+ </div>
87
+
88
+
89
+ </div>
90
+
91
+ <div id="method-list">
92
+ <h3 class="section-bar">Methods</h3>
93
+
94
+ <div class="name-list">
95
+ <a href="#M000109">backup</a>&nbsp;&nbsp;
96
+ <a href="#M000114">describe</a>&nbsp;&nbsp;
97
+ <a href="#M000107">new</a>&nbsp;&nbsp;
98
+ <a href="#M000111">reindex</a>&nbsp;&nbsp;
99
+ <a href="#M000112">reset</a>&nbsp;&nbsp;
100
+ <a href="#M000113">restore</a>&nbsp;&nbsp;
101
+ <a href="#M000110">snapshot</a>&nbsp;&nbsp;
102
+ <a href="#M000115">sparql</a>&nbsp;&nbsp;
103
+ <a href="#M000108">status</a>&nbsp;&nbsp;
104
+ <a href="#M000116">store</a>&nbsp;&nbsp;
105
+ <a href="#M000117">upload</a>&nbsp;&nbsp;
106
+ </div>
107
+ </div>
108
+
109
+ </div>
110
+
111
+
112
+ <!-- if includes -->
113
+
114
+ <div id="section">
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+ <!-- if method_list -->
124
+ <div id="methods">
125
+ <h3 class="section-bar">Public Class methods</h3>
126
+
127
+ <div id="method-M000107" class="method-detail">
128
+ <a name="M000107"></a>
129
+
130
+ <div class="method-heading">
131
+ <a href="#M000107" class="method-signature">
132
+ <span class="method-name">new</span><span class="method-args">(store, opts)</span>
133
+ </a>
134
+ </div>
135
+
136
+ <div class="method-description">
137
+ <p><a class="source-toggle" href="#"
138
+ onclick="toggleCode('M000107-source');return false;">[Source]</a></p>
139
+ <div class="method-source-code" id="M000107-source">
140
+ <pre>
141
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 6</span>
142
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">store</span>, <span class="ruby-identifier">opts</span>)
143
+ <span class="ruby-ivar">@store</span> = <span class="ruby-identifier">store</span>
144
+ <span class="ruby-ivar">@opts</span> = <span class="ruby-identifier">opts</span>
145
+ <span class="ruby-keyword kw">end</span>
146
+ </pre>
147
+ </div>
148
+ </div>
149
+ </div>
150
+
151
+ <h3 class="section-bar">Public Instance methods</h3>
152
+
153
+ <div id="method-M000109" class="method-detail">
154
+ <a name="M000109"></a>
155
+
156
+ <div class="method-heading">
157
+ <a href="#M000109" class="method-signature">
158
+ <span class="method-name">backup</span><span class="method-args">()</span>
159
+ </a>
160
+ </div>
161
+
162
+ <div class="method-description">
163
+ <p><a class="source-toggle" href="#"
164
+ onclick="toggleCode('M000109-source');return false;">[Source]</a></p>
165
+ <div class="method-source-code" id="M000109-source">
166
+ <pre>
167
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 16</span>
168
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backup</span>()
169
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Submitting Snapshot Job&quot;</span>
170
+ <span class="ruby-identifier">resp</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">submit_snapshot</span>(<span class="ruby-ivar">@store</span>, <span class="ruby-value str">&quot;Reindex&quot;</span>, <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
171
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Monitoring Job&quot;</span>
172
+ <span class="ruby-identifier">job</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">wait_for_submitted</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-ivar">@store</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">job</span>, <span class="ruby-identifier">message</span>, <span class="ruby-identifier">time</span><span class="ruby-operator">|</span>
173
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{time} #{message}&quot;</span>
174
+ <span class="ruby-keyword kw">end</span>
175
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Job Completed&quot;</span>
176
+ <span class="ruby-identifier">snapshot</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Snapshot</span>.<span class="ruby-identifier">read_from_store</span>(<span class="ruby-ivar">@store</span>)
177
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Retrieving #{snapshot.url}&quot;</span>
178
+ <span class="ruby-identifier">dir</span> = <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;dir&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">tmpdir</span>
179
+ <span class="ruby-identifier">snapshot</span>.<span class="ruby-identifier">backup</span>(<span class="ruby-ivar">@store</span>, <span class="ruby-identifier">dir</span>)
180
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Download complete. MD5 OK.&quot;</span>
181
+ <span class="ruby-keyword kw">end</span>
182
+ </pre>
183
+ </div>
184
+ </div>
185
+ </div>
186
+
187
+ <div id="method-M000114" class="method-detail">
188
+ <a name="M000114"></a>
189
+
190
+ <div class="method-heading">
191
+ <a href="#M000114" class="method-signature">
192
+ <span class="method-name">describe</span><span class="method-args">()</span>
193
+ </a>
194
+ </div>
195
+
196
+ <div class="method-description">
197
+ <p><a class="source-toggle" href="#"
198
+ onclick="toggleCode('M000114-source');return false;">[Source]</a></p>
199
+ <div class="method-source-code" id="M000114-source">
200
+ <pre>
201
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 78</span>
202
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">describe</span>()
203
+ <span class="ruby-identifier">resp</span> = <span class="ruby-ivar">@store</span>.<span class="ruby-identifier">describe</span>( <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;url&quot;</span>] )
204
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
205
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">content</span>
206
+ <span class="ruby-keyword kw">else</span>
207
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Error: #{resp.status} #{resp.reason}&quot;</span>
208
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">content</span>
209
+ <span class="ruby-keyword kw">end</span>
210
+ <span class="ruby-keyword kw">end</span>
211
+ </pre>
212
+ </div>
213
+ </div>
214
+ </div>
215
+
216
+ <div id="method-M000111" class="method-detail">
217
+ <a name="M000111"></a>
218
+
219
+ <div class="method-heading">
220
+ <a href="#M000111" class="method-signature">
221
+ <span class="method-name">reindex</span><span class="method-args">()</span>
222
+ </a>
223
+ </div>
224
+
225
+ <div class="method-description">
226
+ <p><a class="source-toggle" href="#"
227
+ onclick="toggleCode('M000111-source');return false;">[Source]</a></p>
228
+ <div class="method-source-code" id="M000111-source">
229
+ <pre>
230
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 41</span>
231
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reindex</span>()
232
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Submitting Reindex Job&quot;</span>
233
+ <span class="ruby-identifier">resp</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">submit_reindex</span>(<span class="ruby-ivar">@store</span>, <span class="ruby-value str">&quot;Reindex&quot;</span>, <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
234
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">201</span>
235
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Monitoring Reindex Job: #{resp.header[&quot;Location&quot;].first}&quot;</span>
236
+ <span class="ruby-keyword kw">end</span>
237
+ <span class="ruby-identifier">job</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">wait_for_submitted</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-ivar">@store</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">job</span>, <span class="ruby-identifier">message</span>, <span class="ruby-identifier">time</span><span class="ruby-operator">|</span>
238
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{time} #{message}&quot;</span>
239
+ <span class="ruby-keyword kw">end</span>
240
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Reindex Completed&quot;</span>
241
+ <span class="ruby-keyword kw">end</span>
242
+ </pre>
243
+ </div>
244
+ </div>
245
+ </div>
246
+
247
+ <div id="method-M000112" class="method-detail">
248
+ <a name="M000112"></a>
249
+
250
+ <div class="method-heading">
251
+ <a href="#M000112" class="method-signature">
252
+ <span class="method-name">reset</span><span class="method-args">()</span>
253
+ </a>
254
+ </div>
255
+
256
+ <div class="method-description">
257
+ <p><a class="source-toggle" href="#"
258
+ onclick="toggleCode('M000112-source');return false;">[Source]</a></p>
259
+ <div class="method-source-code" id="M000112-source">
260
+ <pre>
261
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 53</span>
262
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>()
263
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Resetting Store&quot;</span>
264
+ <span class="ruby-identifier">resp</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">submit_reset</span>(<span class="ruby-ivar">@store</span>, <span class="ruby-value str">&quot;Reset&quot;</span>, <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
265
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Monitoring Reset Job:&quot;</span>
266
+ <span class="ruby-identifier">job</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">wait_for_submitted</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-ivar">@store</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">job</span>, <span class="ruby-identifier">message</span>, <span class="ruby-identifier">time</span><span class="ruby-operator">|</span>
267
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{time} #{message}&quot;</span>
268
+ <span class="ruby-keyword kw">end</span>
269
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Reset Completed&quot;</span>
270
+ <span class="ruby-keyword kw">end</span>
271
+ </pre>
272
+ </div>
273
+ </div>
274
+ </div>
275
+
276
+ <div id="method-M000113" class="method-detail">
277
+ <a name="M000113"></a>
278
+
279
+ <div class="method-heading">
280
+ <a href="#M000113" class="method-signature">
281
+ <span class="method-name">restore</span><span class="method-args">()</span>
282
+ </a>
283
+ </div>
284
+
285
+ <div class="method-description">
286
+ <p><a class="source-toggle" href="#"
287
+ onclick="toggleCode('M000113-source');return false;">[Source]</a></p>
288
+ <div class="method-source-code" id="M000113-source">
289
+ <pre>
290
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 63</span>
291
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restore</span>()
292
+ <span class="ruby-identifier">url</span> = <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;url&quot;</span>]
293
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">url</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>
294
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Restore from latest snapshot&quot;</span>
295
+ <span class="ruby-identifier">snapshot</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Snapshot</span>.<span class="ruby-identifier">read_from_store</span>(<span class="ruby-ivar">@store</span>)
296
+ <span class="ruby-identifier">url</span> = <span class="ruby-identifier">snapshot</span>.<span class="ruby-identifier">url</span>
297
+ <span class="ruby-keyword kw">end</span>
298
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Restoring from #{url}&quot;</span>
299
+ <span class="ruby-identifier">resp</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">submit_restore</span>(<span class="ruby-ivar">@store</span>, <span class="ruby-identifier">url</span>, <span class="ruby-value str">&quot;Reset&quot;</span>, <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
300
+ <span class="ruby-identifier">job</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">wait_for_submitted</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-ivar">@store</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">job</span>, <span class="ruby-identifier">message</span>, <span class="ruby-identifier">time</span><span class="ruby-operator">|</span>
301
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{time} #{message}&quot;</span>
302
+ <span class="ruby-keyword kw">end</span>
303
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Restore Completed&quot;</span>
304
+ <span class="ruby-keyword kw">end</span>
305
+ </pre>
306
+ </div>
307
+ </div>
308
+ </div>
309
+
310
+ <div id="method-M000110" class="method-detail">
311
+ <a name="M000110"></a>
312
+
313
+ <div class="method-heading">
314
+ <a href="#M000110" class="method-signature">
315
+ <span class="method-name">snapshot</span><span class="method-args">()</span>
316
+ </a>
317
+ </div>
318
+
319
+ <div class="method-description">
320
+ <p><a class="source-toggle" href="#"
321
+ onclick="toggleCode('M000110-source');return false;">[Source]</a></p>
322
+ <div class="method-source-code" id="M000110-source">
323
+ <pre>
324
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 31</span>
325
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">snapshot</span>()
326
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Submitting Snapshot Job&quot;</span>
327
+ <span class="ruby-identifier">resp</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">submit_snapshot</span>(<span class="ruby-ivar">@store</span>, <span class="ruby-value str">&quot;Reindex&quot;</span>, <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>)
328
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Monitoring Job&quot;</span>
329
+ <span class="ruby-identifier">job</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Jobs</span>.<span class="ruby-identifier">wait_for_submitted</span>(<span class="ruby-identifier">resp</span>, <span class="ruby-ivar">@store</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">job</span>, <span class="ruby-identifier">message</span>, <span class="ruby-identifier">time</span><span class="ruby-operator">|</span>
330
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{time} #{message}&quot;</span>
331
+ <span class="ruby-keyword kw">end</span>
332
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Snapshot Completed&quot;</span>
333
+ <span class="ruby-keyword kw">end</span>
334
+ </pre>
335
+ </div>
336
+ </div>
337
+ </div>
338
+
339
+ <div id="method-M000115" class="method-detail">
340
+ <a name="M000115"></a>
341
+
342
+ <div class="method-heading">
343
+ <a href="#M000115" class="method-signature">
344
+ <span class="method-name">sparql</span><span class="method-args">()</span>
345
+ </a>
346
+ </div>
347
+
348
+ <div class="method-description">
349
+ <p><a class="source-toggle" href="#"
350
+ onclick="toggleCode('M000115-source');return false;">[Source]</a></p>
351
+ <div class="method-source-code" id="M000115-source">
352
+ <pre>
353
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 88</span>
354
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sparql</span>()
355
+ <span class="ruby-identifier">query</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>( <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;file&quot;</span>] ).<span class="ruby-identifier">read</span>()
356
+ <span class="ruby-identifier">resp</span> = <span class="ruby-ivar">@store</span>.<span class="ruby-identifier">sparql</span>(<span class="ruby-identifier">query</span>)
357
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">200</span>
358
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">content</span>
359
+ <span class="ruby-keyword kw">else</span>
360
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Error: #{resp.status} #{resp.reason}&quot;</span>
361
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">content</span>
362
+ <span class="ruby-keyword kw">end</span>
363
+ <span class="ruby-keyword kw">end</span>
364
+ </pre>
365
+ </div>
366
+ </div>
367
+ </div>
368
+
369
+ <div id="method-M000108" class="method-detail">
370
+ <a name="M000108"></a>
371
+
372
+ <div class="method-heading">
373
+ <a href="#M000108" class="method-signature">
374
+ <span class="method-name">status</span><span class="method-args">()</span>
375
+ </a>
376
+ </div>
377
+
378
+ <div class="method-description">
379
+ <p><a class="source-toggle" href="#"
380
+ onclick="toggleCode('M000108-source');return false;">[Source]</a></p>
381
+ <div class="method-source-code" id="M000108-source">
382
+ <pre>
383
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 11</span>
384
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">status</span>()
385
+ <span class="ruby-identifier">status</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">Status</span>.<span class="ruby-identifier">read_from_store</span>(<span class="ruby-ivar">@store</span>)
386
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Store Status:\nReadable: #{status.readable?}\nWritable: #{status.writeable?}&quot;</span>
387
+ <span class="ruby-keyword kw">end</span>
388
+ </pre>
389
+ </div>
390
+ </div>
391
+ </div>
392
+
393
+ <div id="method-M000116" class="method-detail">
394
+ <a name="M000116"></a>
395
+
396
+ <div class="method-heading">
397
+ <a href="#M000116" class="method-signature">
398
+ <span class="method-name">store</span><span class="method-args">()</span>
399
+ </a>
400
+ </div>
401
+
402
+ <div class="method-description">
403
+ <p><a class="source-toggle" href="#"
404
+ onclick="toggleCode('M000116-source');return false;">[Source]</a></p>
405
+ <div class="method-source-code" id="M000116-source">
406
+ <pre>
407
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 99</span>
408
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">store</span>()
409
+ <span class="ruby-identifier">resp</span> = <span class="ruby-keyword kw">nil</span>
410
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;url&quot;</span>]
411
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Storing remote data: #{@opts[&quot;url&quot;]}&quot;</span>
412
+ <span class="ruby-identifier">resp</span> = <span class="ruby-ivar">@store</span>.<span class="ruby-identifier">store_url</span>( <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;url&quot;</span>] )
413
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;file&quot;</span>]
414
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Storing local file: #{@opts[&quot;file&quot;]}&quot;</span>
415
+ <span class="ruby-identifier">f</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>( <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;file&quot;</span>] )
416
+ <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">extname</span>(<span class="ruby-identifier">f</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;.nt&quot;</span>
417
+ <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">RDF</span><span class="ruby-operator">::</span><span class="ruby-constant">Parser</span>.<span class="ruby-identifier">store_ntriples</span>(<span class="ruby-identifier">f</span>, <span class="ruby-ivar">@store</span>)
418
+ <span class="ruby-keyword kw">else</span>
419
+ <span class="ruby-identifier">resp</span> = <span class="ruby-ivar">@store</span>.<span class="ruby-identifier">store_file</span>( <span class="ruby-identifier">f</span> )
420
+ <span class="ruby-keyword kw">end</span>
421
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;dir&quot;</span>]
422
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Storing contents of directory: #{@opts[&quot;dir&quot;]}&quot;</span>
423
+ <span class="ruby-identifier">collection</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">RDFCollection</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@store</span>, <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;dir&quot;</span>])
424
+ <span class="ruby-identifier">collection</span>.<span class="ruby-identifier">store</span>()
425
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">collection</span>.<span class="ruby-identifier">summary</span>()
426
+ <span class="ruby-keyword kw">else</span>
427
+ <span class="ruby-comment cmt">#noop</span>
428
+ <span class="ruby-keyword kw">end</span>
429
+
430
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span> <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>
431
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">204</span>
432
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Complete&quot;</span>
433
+ <span class="ruby-keyword kw">else</span>
434
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Error: #{resp.status} #{resp.reason}&quot;</span>
435
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">content</span>
436
+ <span class="ruby-keyword kw">end</span>
437
+ <span class="ruby-keyword kw">end</span>
438
+ <span class="ruby-keyword kw">end</span>
439
+ </pre>
440
+ </div>
441
+ </div>
442
+ </div>
443
+
444
+ <div id="method-M000117" class="method-detail">
445
+ <a name="M000117"></a>
446
+
447
+ <div class="method-heading">
448
+ <a href="#M000117" class="method-signature">
449
+ <span class="method-name">upload</span><span class="method-args">()</span>
450
+ </a>
451
+ </div>
452
+
453
+ <div class="method-description">
454
+ <p><a class="source-toggle" href="#"
455
+ onclick="toggleCode('M000117-source');return false;">[Source]</a></p>
456
+ <div class="method-source-code" id="M000117-source">
457
+ <pre>
458
+ <span class="ruby-comment cmt"># File lib/pho/command_line.rb, line 131</span>
459
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">upload</span>()
460
+ <span class="ruby-identifier">resp</span> = <span class="ruby-keyword kw">nil</span>
461
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;file&quot;</span>]
462
+ <span class="ruby-identifier">f</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>( <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;file&quot;</span>] )
463
+ <span class="ruby-identifier">uri</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>( <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;file&quot;</span>] )
464
+ <span class="ruby-identifier">uri</span> = <span class="ruby-node">&quot;#{opts[&quot;base&quot;]}/#{uri}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;base&quot;</span>]
465
+ <span class="ruby-identifier">mime</span> = <span class="ruby-constant">MIME</span><span class="ruby-operator">::</span><span class="ruby-constant">Types</span>.<span class="ruby-identifier">type_for</span>( <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;file&quot;</span>] )[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_s</span>
466
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Uploading file: #{ @opts[&quot;file&quot;] } to /items/#{ uri } as #{mime}&quot;</span>
467
+ <span class="ruby-identifier">resp</span> = <span class="ruby-ivar">@store</span>.<span class="ruby-identifier">upload_item</span>( <span class="ruby-identifier">f</span> , <span class="ruby-identifier">mime</span> , <span class="ruby-identifier">uri</span> )
468
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;dir&quot;</span>]
469
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Uploading contents of directory: #{@opts[&quot;dir&quot;]}&quot;</span>
470
+ <span class="ruby-identifier">collection</span> = <span class="ruby-constant">Pho</span><span class="ruby-operator">::</span><span class="ruby-constant">FileManagement</span><span class="ruby-operator">::</span><span class="ruby-constant">FileManager</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@store</span>, <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;dir&quot;</span>], <span class="ruby-ivar">@opts</span>[<span class="ruby-value str">&quot;base&quot;</span>])
471
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">opts</span>[<span class="ruby-value str">&quot;traverse&quot;</span>]
472
+ <span class="ruby-identifier">collection</span>.<span class="ruby-identifier">store</span>(<span class="ruby-identifier">:traverse</span>)
473
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">collection</span>.<span class="ruby-identifier">summary</span>(<span class="ruby-identifier">:traverse</span>)
474
+ <span class="ruby-keyword kw">else</span>
475
+ <span class="ruby-identifier">collection</span>.<span class="ruby-identifier">store</span>()
476
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">collection</span>.<span class="ruby-identifier">summary</span>()
477
+ <span class="ruby-keyword kw">end</span>
478
+ <span class="ruby-keyword kw">else</span>
479
+ <span class="ruby-comment cmt">#noop</span>
480
+ <span class="ruby-keyword kw">end</span>
481
+
482
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span> <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">nil</span>
483
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">204</span>
484
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Complete&quot;</span>
485
+ <span class="ruby-keyword kw">else</span>
486
+ <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Error: #{resp.status} #{resp.reason}&quot;</span>
487
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">resp</span>.<span class="ruby-identifier">content</span>
488
+ <span class="ruby-keyword kw">end</span>
489
+ <span class="ruby-keyword kw">end</span>
490
+ <span class="ruby-keyword kw">end</span>
491
+ </pre>
492
+ </div>
493
+ </div>
494
+ </div>
495
+
496
+
497
+ </div>
498
+
499
+
500
+ </div>
501
+
502
+
503
+ <div id="validator-badges">
504
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
505
+ </div>
506
+
507
+ </body>
508
+ </html>