vuzitruby 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/vuzitcl CHANGED
@@ -81,6 +81,10 @@ def help_command(args)
81
81
  print_usage_load
82
82
  when "delete"
83
83
  print_usage_delete
84
+ when "page"
85
+ print_usage_page
86
+ when "event"
87
+ print_usage_event
84
88
  when "upload"
85
89
  print_usage_upload
86
90
  when "search"
@@ -106,6 +110,113 @@ def load_command(args)
106
110
  puts "height: #{doc.page_height}"
107
111
  puts "size: #{doc.file_size}"
108
112
  puts "status: #{doc.status}"
113
+ puts "Download URL: #{Vuzit::Document.download_url(id, 'pdf')}"
114
+ rescue Vuzit::ClientException => ex
115
+ puts "Error occurred: #{ex.code}, #{ex.message}"
116
+ end
117
+ end
118
+
119
+ # Performs the event command.
120
+ def event_command(args)
121
+ return if !global_parameters_load(args)
122
+
123
+ id = args.pop
124
+
125
+ options = Hash.new
126
+ opts = OptionParser.new do |opts|
127
+ opts.on("-e", "--event EVENT", "") do |value|
128
+ options[:event] = value
129
+ end
130
+
131
+ opts.on("-c", "--custom CUSTOM", "") do |value|
132
+ options[:custom] = value
133
+ end
134
+
135
+ opts.on("-l", "--limit LIMIT", "") do |value|
136
+ options[:limit] = value
137
+ end
138
+
139
+ opts.on("-o", "--offset OFFSET", "") do |value|
140
+ options[:offset] = value
141
+ end
142
+ end
143
+
144
+ begin
145
+ opts.parse!(args)
146
+ rescue OptionParser::InvalidOption => e
147
+ e.recover(args)
148
+ end
149
+
150
+ begin
151
+ events = Vuzit::Event.find_all(id, options)
152
+
153
+ events.each do |event|
154
+ print "[#{event.requested_at.strftime('%Y-%m-%d %H:%M:%S')}] "
155
+
156
+ if event.event == "page_view"
157
+ print "#{event.duration}s - "
158
+ end
159
+ print "#{event.event}"
160
+
161
+ if event.page != -1
162
+ print ", p#{event.page}"
163
+ end
164
+
165
+ if !event.custom.nil?
166
+ print " (#{event.custom})"
167
+ end
168
+
169
+ if !event.referer.nil?
170
+ print " - #{event.referer[8, 7]}"
171
+ end
172
+ print " - #{event.remote_host}"
173
+ puts " - #{event.user_agent[0, 8]}"
174
+ end
175
+
176
+ puts ""
177
+ puts "#{events.length} events found"
178
+ rescue Vuzit::ClientException => ex
179
+ puts "Error occurred: #{ex.code}, #{ex.message}"
180
+ end
181
+ end
182
+
183
+ # Performs the page command.
184
+ def page_command(args)
185
+ id = args.pop
186
+ return if !global_parameters_load(args)
187
+
188
+ options = Hash.new
189
+ opts = OptionParser.new do |opts|
190
+ opts.on("-i", "--included [PAGES]", "") do |value|
191
+ options[:included_pages] = value
192
+ end
193
+
194
+ opts.on("-l", "--limit [LIMIT]", "") do |value|
195
+ options[:limit] = value
196
+ end
197
+
198
+ opts.on("-o", "--offset [OFFSET]", "") do |value|
199
+ options[:offset] = value
200
+ end
201
+ end
202
+
203
+ begin
204
+ opts.parse!(args)
205
+ rescue OptionParser::InvalidOption => e
206
+ e.recover(args)
207
+ end
208
+
209
+ begin
210
+ pages = Vuzit::Page.find_all(id, options)
211
+
212
+ pages.each do |page|
213
+ puts "Page: #{page.number}"
214
+ puts "#{page.text}"
215
+ puts ''
216
+ end
217
+
218
+ puts ""
219
+ puts "#{pages.length} pages found"
109
220
  rescue Vuzit::ClientException => ex
110
221
  puts "Error occurred: #{ex.code}, #{ex.message}"
111
222
  end
@@ -128,6 +239,10 @@ def search_command(args)
128
239
  opts.on("-o", "--offset [OFFSET]", "") do |value|
129
240
  options[:offset] = value
130
241
  end
242
+
243
+ opts.on("-O", "--output [OUTPUT]", "") do |value|
244
+ options[:output] = value
245
+ end
131
246
  end
132
247
 
133
248
  begin
@@ -141,16 +256,22 @@ def search_command(args)
141
256
 
142
257
  docs.each do |doc|
143
258
  puts "LOADED: #{doc.id}"
144
- puts "title: #{doc.title}"
145
- puts "subject: #{doc.subject}"
146
- puts "pages: #{doc.page_count}"
147
- puts "width: #{doc.page_width}"
148
- puts "height: #{doc.page_height}"
149
- puts "size: #{doc.file_size}"
150
- puts "status: #{doc.status}"
151
- puts "excerpt: #{doc.excerpt}"
152
- puts ''
259
+
260
+ if doc.page_count != -1
261
+ puts "title: #{doc.title}"
262
+ puts "subject: #{doc.subject}"
263
+ puts "pages: #{doc.page_count}"
264
+ puts "width: #{doc.page_width}"
265
+ puts "height: #{doc.page_height}"
266
+ puts "size: #{doc.file_size}"
267
+ puts "status: #{doc.status}"
268
+ puts "excerpt: #{doc.excerpt}"
269
+ puts ''
270
+ end
153
271
  end
272
+
273
+ puts ""
274
+ puts "#{docs.length} documents found"
154
275
  rescue Vuzit::ClientException => ex
155
276
  puts "Error occurred: #{ex.code}, #{ex.message}"
156
277
  end
@@ -214,12 +335,28 @@ def print_usage_general
214
335
  puts "Available commands:"
215
336
  puts ""
216
337
  puts " delete"
338
+ puts " event"
217
339
  puts " load"
340
+ puts " page"
218
341
  puts " upload"
219
342
  puts " search"
220
343
  puts " help"
221
344
  end
222
345
 
346
+ # Prints the event options
347
+ def print_usage_event
348
+ puts "page: Loads document event analytics."
349
+ puts "usage: event [OPTIONS] WEB_ID"
350
+ puts ""
351
+ puts "Valid options:"
352
+ puts " -e, --event Event type to load"
353
+ puts " -c, --custom Custom value to load"
354
+ puts " -l, --limit Limits the number of results"
355
+ puts " -o, --offset Offset the results at this number"
356
+ puts ""
357
+ print_usage_global
358
+ end
359
+
223
360
  # Prints the global options
224
361
  def print_usage_global
225
362
  puts "Global Options:"
@@ -238,6 +375,19 @@ def print_usage_load
238
375
  print_usage_global
239
376
  end
240
377
 
378
+ # Prints the search options
379
+ def print_usage_page
380
+ puts "page: Loads page text for a document."
381
+ puts "usage: page [OPTIONS] WEB_ID"
382
+ puts ""
383
+ puts "Valid options:"
384
+ puts " -i, --included Set range of pages to load (e.g '5,10-19')"
385
+ puts " -l, --limit Limits the results to a number"
386
+ puts " -o, --offset Offsets the results at this number"
387
+ puts ""
388
+ print_usage_global
389
+ end
390
+
241
391
  # Prints the search options
242
392
  def print_usage_search
243
393
  puts "search: Searches for documents within Vuzit."
@@ -273,6 +423,10 @@ case command
273
423
  load_command(ARGV)
274
424
  when "delete"
275
425
  delete_command(ARGV)
426
+ when "event"
427
+ event_command(ARGV)
428
+ when "page"
429
+ page_command(ARGV)
276
430
  when "search"
277
431
  search_command(ARGV)
278
432
  when "upload"
@@ -68,17 +68,14 @@ module Vuzit
68
68
  end
69
69
 
70
70
  # Converts a set of parameters to a URL.
71
- def self.parameters_to_url(resource, params, id = nil, extension = 'xml')
71
+ def self.parameters_to_url(base_url, params)
72
72
  params = parameters_clean(params)
73
73
 
74
74
  # The Ruby HTTP library does not want the "http://domain.com" in the
75
75
  # URL as most other libraries do. If the service URL is provided
76
76
  # then less tolerant web servers like IIS will reject it.
77
77
  result = ''
78
- result << "/" << resource
79
-
80
- result << ("/" << id) if !id.nil?
81
- result << "." << extension << "?"
78
+ result << "/" << base_url << "?"
82
79
 
83
80
  params.each_pair do |key, value|
84
81
  result << (key.to_s << "=" << CGI.escape(value.to_s) << "&")
@@ -25,8 +25,10 @@ module Vuzit
25
25
  # Deletes a document by the ID. Returns true if it succeeded. It throws
26
26
  # a Vuzit::ClientException on failure. It returns _true_ on success.
27
27
  def self.destroy(id)
28
+ raise Vuzit::ClientException.new("id cannot be null") if id.nil?
29
+
28
30
  params = post_parameters("destroy", nil, id)
29
- url = parameters_to_url("documents", params, id)
31
+ url = parameters_to_url("documents/#{id}.xml", params)
30
32
  http = http_connection
31
33
 
32
34
  request = Net::HTTP::Delete.new(url, {'User-Agent' => Vuzit::Service.user_agent})
@@ -56,16 +58,20 @@ module Vuzit
56
58
 
57
59
  # Returns a download URL.
58
60
  def self.download_url(id, file_extension)
61
+ raise Vuzit::ClientException.new("id cannot be null") if id.nil?
62
+
59
63
  params = post_parameters("show", nil, id)
60
- return parameters_to_url("documents", params, id, file_extension)
64
+ return Vuzit::Service.service_url +
65
+ parameters_to_url("documents/#{id}.#{file_extension}", params)
61
66
  end
62
67
 
63
68
  # Finds a document by the ID. It throws a Vuzit::ClientException on failure.
64
69
  def self.find(id, options = {})
65
70
  raise ArgumentError, "Options must be a hash" unless options.kind_of? Hash
71
+ raise Vuzit::ClientException.new("id cannot be null") if id.nil?
66
72
 
67
73
  params = post_parameters("show", options, id)
68
- url = parameters_to_url("documents", params, id)
74
+ url = parameters_to_url("documents/#{id}.xml", params)
69
75
  http = http_connection
70
76
 
71
77
  request = Net::HTTP::Get.new(url, {'User-Agent' => Vuzit::Service.user_agent})
@@ -103,9 +109,8 @@ module Vuzit
103
109
  raise ArgumentError, "Options must be a hash" unless options.kind_of? Hash
104
110
 
105
111
  result = Array.new
106
- options[:output] = "summary"
107
112
  params = post_parameters("index", options)
108
- url = parameters_to_url("documents", params)
113
+ url = parameters_to_url("documents.xml", params)
109
114
  http = http_connection
110
115
 
111
116
  request = Net::HTTP::Get.new(url, {'User-Agent' => Vuzit::Service.user_agent})
@@ -193,7 +198,12 @@ module Vuzit
193
198
  def self.xml_to_document(node)
194
199
  result = Vuzit::Document.new
195
200
 
196
- result.send(:set_id, node_value(node, 'web_id'))
201
+ id = node_value(node, "web_id")
202
+ if id == nil
203
+ raise Vuzit::ClientException.new("Unknown error occurred: #{response_body}");
204
+ end
205
+
206
+ result.send(:set_id, id)
197
207
  result.send(:set_title, node_value(node, 'title'))
198
208
  result.send(:set_subject, node_value(node, 'subject'))
199
209
  result.send(:set_page_count, node_value_int(node, 'page_count'))
@@ -47,7 +47,7 @@ module Vuzit
47
47
  @@public_key = nil
48
48
  @@private_key = nil
49
49
  @@service_url = 'http://vuzit.com'
50
- @@product_name = 'VuzitRuby Library 2.0.0'
50
+ @@product_name = 'VuzitRuby Library 2.1.0'
51
51
  @@user_agent = @@product_name
52
52
 
53
53
  # TODO: For all of the set variables do not allow nil values
data/lib/vuzitruby.rb CHANGED
@@ -4,7 +4,9 @@ $:.unshift(File.dirname(__FILE__))
4
4
  require 'rubygems'
5
5
 
6
6
  require 'vuzitruby/base'
7
+ require 'vuzitruby/event'
7
8
  require 'vuzitruby/service'
8
9
  require 'vuzitruby/document'
10
+ require 'vuzitruby/page'
9
11
  require 'vuzitruby/client_exception'
10
12
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vuzitruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brent Matzelle
@@ -9,14 +9,13 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-08 00:00:00 -05:00
12
+ date: 2010-04-20 00:00:00 -04:00
13
13
  default_executable: vuzitcl
14
14
  dependencies: []
15
15
 
16
16
  description: |-
17
- This is a library for the Vuzit Web Services API. For
18
- more information on the platform, visit
19
- http://vuzit.com/developer
17
+ Code library that allows developers to directly access
18
+ the Vuzit Document Viewer Web Service API through Ruby.
20
19
  email: support@vuzit.com
21
20
  executables:
22
21
  - vuzitcl
@@ -33,7 +32,7 @@ files:
33
32
  - lib/vuzitruby/client_exception.rb
34
33
  - lib/vuzitruby/service.rb
35
34
  has_rdoc: true
36
- homepage: http://vuzit.com/
35
+ homepage: http://wiki.github.com/vuzit/vuzitruby/
37
36
  licenses: []
38
37
 
39
38
  post_install_message: