pho 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
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>