vuzitruby 2.1.0 → 2.1.1
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 +11 -10
- data/lib/vuzitruby/event.rb +98 -0
- data/lib/vuzitruby/page.rb +70 -0
- data/lib/vuzitruby/service.rb +1 -1
- metadata +4 -2
data/bin/vuzitcl
CHANGED
@@ -349,10 +349,10 @@ def print_usage_event
|
|
349
349
|
puts "usage: event [OPTIONS] WEB_ID"
|
350
350
|
puts ""
|
351
351
|
puts "Valid options:"
|
352
|
-
puts " -e, --event
|
353
|
-
puts " -c, --custom
|
354
|
-
puts " -l, --limit
|
355
|
-
puts " -o, --offset
|
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
356
|
puts ""
|
357
357
|
print_usage_global
|
358
358
|
end
|
@@ -381,9 +381,9 @@ def print_usage_page
|
|
381
381
|
puts "usage: page [OPTIONS] WEB_ID"
|
382
382
|
puts ""
|
383
383
|
puts "Valid options:"
|
384
|
-
puts " -i, --included
|
385
|
-
puts " -l, --limit
|
386
|
-
puts " -o, --offset
|
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
387
|
puts ""
|
388
388
|
print_usage_global
|
389
389
|
end
|
@@ -394,9 +394,10 @@ def print_usage_search
|
|
394
394
|
puts "usage: search [OPTIONS]"
|
395
395
|
puts ""
|
396
396
|
puts "Valid options:"
|
397
|
-
puts " -q, --query
|
398
|
-
puts " -
|
399
|
-
puts " -
|
397
|
+
puts " -q, --query Query keywords"
|
398
|
+
puts " -o, --offset Offsets the results at this number"
|
399
|
+
puts " -l, --limit Limits the results to a number"
|
400
|
+
puts " -O, --output Output more document info including title and excerpt"
|
400
401
|
puts ""
|
401
402
|
print_usage_global
|
402
403
|
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
|
3
|
+
module Vuzit
|
4
|
+
|
5
|
+
# Class for loading document event analytics.
|
6
|
+
class Event < Base
|
7
|
+
attr_reader :web_id
|
8
|
+
attr_reader :event
|
9
|
+
attr_reader :remote_host
|
10
|
+
attr_reader :referer
|
11
|
+
attr_reader :user_agent
|
12
|
+
attr_reader :custom
|
13
|
+
attr_reader :requested_at
|
14
|
+
attr_reader :page
|
15
|
+
attr_reader :duration
|
16
|
+
|
17
|
+
# Constructor.
|
18
|
+
def initialize #:nodoc:
|
19
|
+
# Set the defaults
|
20
|
+
@web_id = @page = @duration = -1
|
21
|
+
@event = @remote_host = @referer = @user_agent = @custom = @requested_at = nil
|
22
|
+
end
|
23
|
+
|
24
|
+
# Performs a search to return all documents as defined by the options.
|
25
|
+
def self.find_all(id, options = {})
|
26
|
+
raise Vuzit::ClientException.new("id cannot be null") if id.nil?
|
27
|
+
raise ArgumentError, "Options must be a hash" unless options.kind_of? Hash
|
28
|
+
|
29
|
+
result = Array.new
|
30
|
+
params = post_parameters("show", options, id)
|
31
|
+
params[:web_id] = id
|
32
|
+
url = parameters_to_url("events.xml", params)
|
33
|
+
http = http_connection
|
34
|
+
|
35
|
+
request = Net::HTTP::Get.new(url, {'User-Agent' => Vuzit::Service.user_agent})
|
36
|
+
response = http.start { http.request(request) }
|
37
|
+
|
38
|
+
# TODO: Check if response.code.to_i != 200
|
39
|
+
|
40
|
+
begin
|
41
|
+
doc = REXML::Document.new(response.body)
|
42
|
+
rescue Exception => ex
|
43
|
+
raise Vuzit::ClientException.new("XML error: #{ex.message}")
|
44
|
+
end
|
45
|
+
|
46
|
+
if doc.root == nil
|
47
|
+
raise Vuzit::ClientException.new("No response from server");
|
48
|
+
end
|
49
|
+
|
50
|
+
code = doc.root.elements['code']
|
51
|
+
if code != nil
|
52
|
+
raise Vuzit::ClientException.new(doc.root.elements['msg'].text, code.text.to_i);
|
53
|
+
end
|
54
|
+
|
55
|
+
doc.root.elements.each("event") do |node|
|
56
|
+
result << xml_to_event(node)
|
57
|
+
end
|
58
|
+
|
59
|
+
return result
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
# Converts an XML object to an Event instance.
|
65
|
+
def self.xml_to_event(node)
|
66
|
+
result = Vuzit::Event.new
|
67
|
+
|
68
|
+
id = node_value(node, "web_id")
|
69
|
+
if id == nil
|
70
|
+
raise Vuzit::ClientException.new("Unknown error occurred: #{response_body}");
|
71
|
+
end
|
72
|
+
|
73
|
+
result.send(:set_web_id, id)
|
74
|
+
result.send(:set_event, node_value(node, 'event'))
|
75
|
+
result.send(:set_remote_host, node_value(node, 'remote_host'))
|
76
|
+
result.send(:set_referer, node_value(node, 'referer'))
|
77
|
+
result.send(:set_user_agent, node_value(node, 'user_agent'))
|
78
|
+
result.send(:set_custom, node_value(node, 'custom'))
|
79
|
+
result.send(:set_requested_at, node_value_int(node, 'requested_at'))
|
80
|
+
result.send(:set_page, node_value_int(node, 'page'))
|
81
|
+
result.send(:set_duration, node_value_int(node, 'duration'))
|
82
|
+
|
83
|
+
return result
|
84
|
+
end
|
85
|
+
|
86
|
+
# Private setter methods so that you can set the internal variables but
|
87
|
+
# not allow the setting of the public methods.
|
88
|
+
def set_web_id(value) @web_id = value; end
|
89
|
+
def set_event(value) @event = value; end
|
90
|
+
def set_remote_host(value) @remote_host = value; end
|
91
|
+
def set_referer(value) @referer = value; end
|
92
|
+
def set_user_agent(value) @user_agent = value; end
|
93
|
+
def set_custom(value) @custom = value; end
|
94
|
+
def set_requested_at(value) @requested_at = Time.at(value); end
|
95
|
+
def set_page(value) @page = value; end
|
96
|
+
def set_duration(value) @duration = value; end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
|
3
|
+
module Vuzit
|
4
|
+
|
5
|
+
# Class for loading the Vuzit pages API.
|
6
|
+
class Page < Base
|
7
|
+
attr_reader :number
|
8
|
+
attr_reader :text
|
9
|
+
|
10
|
+
# Constructor.
|
11
|
+
def initialize #:nodoc:
|
12
|
+
# Set the defaults
|
13
|
+
@number = -1
|
14
|
+
@text = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
# Performs a search to return all documents as defined by the options.
|
18
|
+
def self.find_all(id, options = {})
|
19
|
+
raise Vuzit::ClientException.new("id cannot be null") if id.nil?
|
20
|
+
raise ArgumentError, "Options must be a hash" unless options.kind_of? Hash
|
21
|
+
|
22
|
+
result = Array.new
|
23
|
+
params = post_parameters("index", options, id)
|
24
|
+
url = parameters_to_url("documents/#{id}/pages.xml", params)
|
25
|
+
http = http_connection
|
26
|
+
|
27
|
+
request = Net::HTTP::Get.new(url, {'User-Agent' => Vuzit::Service.user_agent})
|
28
|
+
response = http.start { http.request(request) }
|
29
|
+
|
30
|
+
# TODO: Check if response.code.to_i != 200
|
31
|
+
|
32
|
+
begin
|
33
|
+
doc = REXML::Document.new(response.body)
|
34
|
+
rescue Exception => ex
|
35
|
+
raise Vuzit::ClientException.new("XML error: #{ex.message}")
|
36
|
+
end
|
37
|
+
|
38
|
+
if doc.root == nil
|
39
|
+
raise Vuzit::ClientException.new("No response from server");
|
40
|
+
end
|
41
|
+
|
42
|
+
code = doc.root.elements['code']
|
43
|
+
if code != nil
|
44
|
+
raise Vuzit::ClientException.new(doc.root.elements['msg'].text, code.text.to_i); end
|
45
|
+
|
46
|
+
doc.root.elements.each("page") do |node|
|
47
|
+
result << xml_to_page(node)
|
48
|
+
end
|
49
|
+
|
50
|
+
return result
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
# Converts an XML object to a Page instance.
|
56
|
+
def self.xml_to_page(node)
|
57
|
+
result = Vuzit::Page.new
|
58
|
+
|
59
|
+
result.send(:set_number, node_value_int(node, 'number'))
|
60
|
+
result.send(:set_text, node_value(node, 'text'))
|
61
|
+
|
62
|
+
return result
|
63
|
+
end
|
64
|
+
|
65
|
+
# Private setter methods so that you can set the internal variables but
|
66
|
+
# not allow the setting of the public methods.
|
67
|
+
def set_number(value) @number = value; end
|
68
|
+
def set_text(value) @text = value; end
|
69
|
+
end
|
70
|
+
end
|
data/lib/vuzitruby/service.rb
CHANGED
@@ -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.1.
|
50
|
+
@@product_name = 'VuzitRuby Library 2.1.1'
|
51
51
|
@@user_agent = @@product_name
|
52
52
|
|
53
53
|
# TODO: For all of the set variables do not allow nil values
|
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.1.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brent Matzelle
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-04-
|
12
|
+
date: 2010-04-22 00:00:00 -04:00
|
13
13
|
default_executable: vuzitcl
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -29,6 +29,8 @@ files:
|
|
29
29
|
- lib/vuzitruby.rb
|
30
30
|
- lib/vuzitruby/base.rb
|
31
31
|
- lib/vuzitruby/document.rb
|
32
|
+
- lib/vuzitruby/event.rb
|
33
|
+
- lib/vuzitruby/page.rb
|
32
34
|
- lib/vuzitruby/client_exception.rb
|
33
35
|
- lib/vuzitruby/service.rb
|
34
36
|
has_rdoc: true
|