rubyfox-client 0.2.0-java → 0.3.0-java
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/README.rdoc +1 -1
- data/examples/simple.rb +1 -1
- data/lib/rubyfox/client.rb +1 -1
- data/lib/rubyfox/client/event.rb +24 -2
- data/lib/rubyfox/client/java.rb +1 -1
- data/lib/rubyfox/client/recorder.rb +81 -0
- data/lib/rubyfox/client/request.rb +21 -0
- data/lib/rubyfox/client/transport.rb +8 -3
- data/lib/rubyfox/client/version.rb +1 -1
- metadata +4 -3
- data/lib/rubyfox/client/requests.rb +0 -23
data/README.rdoc
CHANGED
data/examples/simple.rb
CHANGED
data/lib/rubyfox/client.rb
CHANGED
data/lib/rubyfox/client/event.rb
CHANGED
@@ -5,6 +5,8 @@ module Rubyfox
|
|
5
5
|
Event = Java::SFSEvent
|
6
6
|
|
7
7
|
class Event
|
8
|
+
self.__persistent__ = true
|
9
|
+
|
8
10
|
def self.types(&block)
|
9
11
|
constants
|
10
12
|
end
|
@@ -13,13 +15,33 @@ module Rubyfox
|
|
13
15
|
const_get(name.to_s.upcase)
|
14
16
|
end
|
15
17
|
|
16
|
-
def
|
17
|
-
|
18
|
+
def params
|
19
|
+
@params ||= EventParams.new(arguments)
|
18
20
|
end
|
19
21
|
|
20
22
|
def inspect
|
21
23
|
"#{super}: #{type}(#{arguments.inspect})"
|
22
24
|
end
|
23
25
|
end
|
26
|
+
|
27
|
+
class EventParams
|
28
|
+
include Enumerable
|
29
|
+
|
30
|
+
def initialize(hash)
|
31
|
+
@hash = hash
|
32
|
+
end
|
33
|
+
|
34
|
+
def [](key)
|
35
|
+
@hash[key.to_s]
|
36
|
+
end
|
37
|
+
|
38
|
+
def each(&block)
|
39
|
+
@hash.each(&block)
|
40
|
+
end
|
41
|
+
|
42
|
+
def inspect
|
43
|
+
@hash.inspect
|
44
|
+
end
|
45
|
+
end
|
24
46
|
end
|
25
47
|
end
|
data/lib/rubyfox/client/java.rb
CHANGED
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'timeout'
|
2
|
+
require 'rubyfox/client/event'
|
3
|
+
|
4
|
+
module Rubyfox
|
5
|
+
module Client
|
6
|
+
# Records all incoming and outgoing events, requests and extension requests
|
7
|
+
# for test purposes.
|
8
|
+
#
|
9
|
+
# == Example
|
10
|
+
#
|
11
|
+
# client = Rubyfox::Client.new
|
12
|
+
# recorder = Rubyfox::Rubyfox::Recorder.new(client)
|
13
|
+
#
|
14
|
+
# client.connect
|
15
|
+
# client.send :login, "username", "password", "zone"
|
16
|
+
# client.disconnect
|
17
|
+
#
|
18
|
+
# assert_equal 1, recorder.events(:connection).size
|
19
|
+
# assert_equal 1, recorder.events(:login).size
|
20
|
+
# assert_equal 1, recorder.extensions("Me.User").size
|
21
|
+
# assert_equal 1, recorder.events(:connection_lost).size
|
22
|
+
class Recorder
|
23
|
+
include Timeout
|
24
|
+
|
25
|
+
def initialize(client)
|
26
|
+
@client = client
|
27
|
+
@events = Hash.new { |hash, type| hash[type] = [] }
|
28
|
+
@extensions = Hash.new { |hash, command| hash[command] = [] }
|
29
|
+
@connection_lost = false
|
30
|
+
install_callbacks
|
31
|
+
end
|
32
|
+
|
33
|
+
def events(name)
|
34
|
+
type = Event[name]
|
35
|
+
@events[type]
|
36
|
+
end
|
37
|
+
|
38
|
+
def extensions(command)
|
39
|
+
@extensions[command]
|
40
|
+
end
|
41
|
+
|
42
|
+
def verify(options={}, &block)
|
43
|
+
@client.connect
|
44
|
+
wait = options[:timeout] || 1
|
45
|
+
timeout wait do
|
46
|
+
while not @connection_lost
|
47
|
+
sleep 0.1
|
48
|
+
end
|
49
|
+
end
|
50
|
+
rescue Timeout::Error
|
51
|
+
# ignore
|
52
|
+
ensure
|
53
|
+
yield
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def install_callbacks
|
59
|
+
@client.on_event(:any) do |event|
|
60
|
+
record_event(event)
|
61
|
+
end
|
62
|
+
|
63
|
+
@client.on_extension(:any) do |extension|
|
64
|
+
record_extension(extension)
|
65
|
+
end
|
66
|
+
|
67
|
+
@client.on_event(:connection_lost) do |event|
|
68
|
+
@connection_lost = true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def record_event(event)
|
73
|
+
@events[event.type] << event
|
74
|
+
end
|
75
|
+
|
76
|
+
def record_extension(extension)
|
77
|
+
@extensions[extension.command] << extension
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
require 'rubyfox/client/java'
|
3
|
+
|
4
|
+
module Rubyfox
|
5
|
+
module Client
|
6
|
+
Request = Java::Request
|
7
|
+
|
8
|
+
module Request
|
9
|
+
def self.[](name)
|
10
|
+
case name
|
11
|
+
when Request::BaseRequest
|
12
|
+
name
|
13
|
+
else
|
14
|
+
name = name.to_s.camelcase
|
15
|
+
name += "Request" unless name.end_with?("Request")
|
16
|
+
Request.__send__(name)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rubyfox/client/java'
|
2
2
|
require 'rubyfox/client/config'
|
3
|
-
require 'rubyfox/client/
|
3
|
+
require 'rubyfox/client/request'
|
4
4
|
require 'rubyfox/client/event_handler'
|
5
5
|
require 'rubyfox/client/extension_handler'
|
6
6
|
|
@@ -22,6 +22,11 @@ module Rubyfox
|
|
22
22
|
@event_handler.register
|
23
23
|
@extension_handler.register
|
24
24
|
@smartfox.connect(@config.host, @config.port)
|
25
|
+
sleep 0.1
|
26
|
+
end
|
27
|
+
|
28
|
+
def connected?
|
29
|
+
@smartfox.connected?
|
25
30
|
end
|
26
31
|
|
27
32
|
def disconnect
|
@@ -35,8 +40,8 @@ module Rubyfox
|
|
35
40
|
Java::System.exit(ret)
|
36
41
|
end
|
37
42
|
|
38
|
-
def send(
|
39
|
-
request =
|
43
|
+
def send(command, *args)
|
44
|
+
request = Request[command].new(*args)
|
40
45
|
@smartfox.send(request)
|
41
46
|
end
|
42
47
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rubyfox-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.3.0
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- Peter Suschlik
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-12-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -104,7 +104,8 @@ files:
|
|
104
104
|
- lib/rubyfox/client/event_handler.rb
|
105
105
|
- lib/rubyfox/client/extension_handler.rb
|
106
106
|
- lib/rubyfox/client/java.rb
|
107
|
-
- lib/rubyfox/client/
|
107
|
+
- lib/rubyfox/client/recorder.rb
|
108
|
+
- lib/rubyfox/client/request.rb
|
108
109
|
- lib/rubyfox/client/transport.rb
|
109
110
|
- lib/rubyfox/client/vendor/SFS2X_API_Java.jar
|
110
111
|
- lib/rubyfox/client/vendor/jdom.jar
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'active_support/core_ext/string/inflections'
|
2
|
-
require 'rubyfox/client/java'
|
3
|
-
|
4
|
-
module Rubyfox
|
5
|
-
module Client
|
6
|
-
Requests = Java::Requests
|
7
|
-
|
8
|
-
module Requests
|
9
|
-
def self.[](*args)
|
10
|
-
arg = args.shift
|
11
|
-
case arg
|
12
|
-
when Java::Requests::BaseRequest
|
13
|
-
arg
|
14
|
-
else
|
15
|
-
name = arg.to_s.camelcase
|
16
|
-
name += "Request" unless name.end_with?("Request")
|
17
|
-
request_klass = Requests.__send__(name)
|
18
|
-
request_klass.new(*args)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|