freeswitcher 0.4.6 → 0.4.7
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/MANIFEST +0 -1
- data/freeswitcher.gemspec +3 -3
- data/lib/fsr/listener/inbound.rb +21 -9
- data/lib/fsr/version.rb +1 -1
- data/spec/fsr/listener/inbound.rb +17 -9
- data/spec/fsr/listener/outbound.rb +1 -1
- metadata +2 -3
- data/tasks/spec.rake +0 -0
data/MANIFEST
CHANGED
data/freeswitcher.gemspec
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{freeswitcher}
|
|
5
|
-
s.version = "0.4.
|
|
5
|
+
s.version = "0.4.7"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Jayson Vaughn", "Michael Fellinger", "Kevin Berry", "TJ Vanderpoel"]
|
|
9
|
-
s.date = %q{2010-01-
|
|
9
|
+
s.date = %q{2010-01-19}
|
|
10
10
|
s.description = %q{=========================================================
|
|
11
11
|
FreeSWITCHeR
|
|
12
12
|
Copyright (c) 2009 The Rubyists (Jayson Vaughn, Tj Vanderpoel, Michael Fellinger, Kevin Berry)
|
|
@@ -132,7 +132,7 @@ Home page at http://code.rubyists.com/projects/fs
|
|
|
132
132
|
#rubyists on FreeNode
|
|
133
133
|
}
|
|
134
134
|
s.email = %q{FreeSWITCHeR@rubyists.com}
|
|
135
|
-
s.files = [".gitignore", "AUTHORS", "CHANGELOG", "License.txt", "MANIFEST", "NEWS", "README", "Rakefile", "examples/inbound_event_socket.rb", "examples/inbound_socket_events.rb", "examples/outbound_event_socket.rb", "freeswitcher.gemspec", "lib/fsr.rb", "lib/fsr/app.rb", "lib/fsr/app/answer.rb", "lib/fsr/app/bind_meta_app.rb", "lib/fsr/app/bridge.rb", "lib/fsr/app/conference.rb", "lib/fsr/app/execute_app.rb", "lib/fsr/app/fifo.rb", "lib/fsr/app/fs_break.rb", "lib/fsr/app/fs_sleep.rb", "lib/fsr/app/hangup.rb", "lib/fsr/app/limit.rb", "lib/fsr/app/log.rb", "lib/fsr/app/play_and_get_digits.rb", "lib/fsr/app/playback.rb", "lib/fsr/app/read.rb", "lib/fsr/app/set.rb", "lib/fsr/app/speak.rb", "lib/fsr/app/transfer.rb", "lib/fsr/app/uuid_dump.rb", "lib/fsr/app/uuid_getvar.rb", "lib/fsr/app/uuid_setvar.rb", "lib/fsr/cmd.rb", "lib/fsr/cmd/calls.rb", "lib/fsr/cmd/fsctl.rb", "lib/fsr/cmd/originate.rb", "lib/fsr/cmd/sofia.rb", "lib/fsr/cmd/sofia/profile.rb", "lib/fsr/cmd/sofia/status.rb", "lib/fsr/cmd/sofia_contact.rb", "lib/fsr/cmd/status.rb", "lib/fsr/cmd/uuid_dump.rb", "lib/fsr/command_socket.rb", "lib/fsr/database.rb", "lib/fsr/database/call_limit.rb", "lib/fsr/database/core.rb", "lib/fsr/database/sofia_reg_external.rb", "lib/fsr/database/sofia_reg_internal.rb", "lib/fsr/database/voicemail_default.rb", "lib/fsr/event_socket.rb", "lib/fsr/fake_socket.rb", "lib/fsr/listener.rb", "lib/fsr/listener/header_and_content_response.rb", "lib/fsr/listener/inbound.rb", "lib/fsr/listener/inbound/event.rb", "lib/fsr/listener/mock.rb", "lib/fsr/listener/outbound.rb", "lib/fsr/model/call.rb", "lib/fsr/version.rb", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/copyright.rake", "tasks/gem.rake", "tasks/gem_installer.rake", "tasks/install_dependencies.rake", "tasks/manifest.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/
|
|
135
|
+
s.files = [".gitignore", "AUTHORS", "CHANGELOG", "License.txt", "MANIFEST", "NEWS", "README", "Rakefile", "examples/inbound_event_socket.rb", "examples/inbound_socket_events.rb", "examples/outbound_event_socket.rb", "freeswitcher.gemspec", "lib/fsr.rb", "lib/fsr/app.rb", "lib/fsr/app/answer.rb", "lib/fsr/app/bind_meta_app.rb", "lib/fsr/app/bridge.rb", "lib/fsr/app/conference.rb", "lib/fsr/app/execute_app.rb", "lib/fsr/app/fifo.rb", "lib/fsr/app/fs_break.rb", "lib/fsr/app/fs_sleep.rb", "lib/fsr/app/hangup.rb", "lib/fsr/app/limit.rb", "lib/fsr/app/log.rb", "lib/fsr/app/play_and_get_digits.rb", "lib/fsr/app/playback.rb", "lib/fsr/app/read.rb", "lib/fsr/app/set.rb", "lib/fsr/app/speak.rb", "lib/fsr/app/transfer.rb", "lib/fsr/app/uuid_dump.rb", "lib/fsr/app/uuid_getvar.rb", "lib/fsr/app/uuid_setvar.rb", "lib/fsr/cmd.rb", "lib/fsr/cmd/calls.rb", "lib/fsr/cmd/fsctl.rb", "lib/fsr/cmd/originate.rb", "lib/fsr/cmd/sofia.rb", "lib/fsr/cmd/sofia/profile.rb", "lib/fsr/cmd/sofia/status.rb", "lib/fsr/cmd/sofia_contact.rb", "lib/fsr/cmd/status.rb", "lib/fsr/cmd/uuid_dump.rb", "lib/fsr/command_socket.rb", "lib/fsr/database.rb", "lib/fsr/database/call_limit.rb", "lib/fsr/database/core.rb", "lib/fsr/database/sofia_reg_external.rb", "lib/fsr/database/sofia_reg_internal.rb", "lib/fsr/database/voicemail_default.rb", "lib/fsr/event_socket.rb", "lib/fsr/fake_socket.rb", "lib/fsr/listener.rb", "lib/fsr/listener/header_and_content_response.rb", "lib/fsr/listener/inbound.rb", "lib/fsr/listener/inbound/event.rb", "lib/fsr/listener/mock.rb", "lib/fsr/listener/outbound.rb", "lib/fsr/model/call.rb", "lib/fsr/version.rb", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/copyright.rake", "tasks/gem.rake", "tasks/gem_installer.rake", "tasks/install_dependencies.rake", "tasks/manifest.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/yard.rake", "spec/helper.rb", "spec/fsr_listener_helper.rb", "spec/fsr/app.rb", "spec/fsr/app/answer.rb", "spec/fsr/app/bind_meta_app.rb", "spec/fsr/app/bridge.rb", "spec/fsr/app/conference.rb", "spec/fsr/app/execute_app.rb", "spec/fsr/app/fifo.rb", "spec/fsr/app/fs_break.rb", "spec/fsr/app/fs_sleep.rb", "spec/fsr/app/hangup.rb", "spec/fsr/app/limit.rb", "spec/fsr/app/log.rb", "spec/fsr/app/play_and_get_digits.rb", "spec/fsr/app/playback.rb", "spec/fsr/app/set.rb", "spec/fsr/app/transfer.rb", "spec/fsr/cmd.rb", "spec/fsr/cmd/calls.rb", "spec/fsr/cmd/originate.rb", "spec/fsr/cmd/sofia.rb", "spec/fsr/cmd/sofia/profile.rb", "spec/fsr/cmd/uuid_dump.rb", "spec/fsr/listener.rb", "spec/fsr/listener/header_and_content_response.rb", "spec/fsr/listener/inbound.rb", "spec/fsr/listener/outbound.rb", "spec/fsr/loading.rb"]
|
|
136
136
|
s.homepage = %q{http://code.rubyists.com/projects/fs}
|
|
137
137
|
s.post_install_message = %q{=========================================================
|
|
138
138
|
FreeSWITCHeR
|
data/lib/fsr/listener/inbound.rb
CHANGED
|
@@ -6,7 +6,7 @@ require 'fsr/listener/header_and_content_response.rb'
|
|
|
6
6
|
module FSR
|
|
7
7
|
module Listener
|
|
8
8
|
class Inbound < EventMachine::Protocols::HeaderAndContentProtocol
|
|
9
|
-
attr_reader :auth, :hooks, :
|
|
9
|
+
attr_reader :auth, :hooks, :server, :port
|
|
10
10
|
|
|
11
11
|
HOOKS = {}
|
|
12
12
|
|
|
@@ -47,12 +47,20 @@ module FSR
|
|
|
47
47
|
def authorize_and_register_for_events
|
|
48
48
|
FSR::Log.info "Connection established. Authorizing..."
|
|
49
49
|
say("auth #{@auth}")
|
|
50
|
-
|
|
50
|
+
add_class_hooks
|
|
51
|
+
before_session
|
|
51
52
|
end
|
|
52
53
|
|
|
53
54
|
def before_session
|
|
54
55
|
end
|
|
55
56
|
|
|
57
|
+
def add_class_hooks
|
|
58
|
+
HOOKS.each do |(key, value)|
|
|
59
|
+
add_event(key, &value)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
private :before_session, :add_class_hooks
|
|
63
|
+
|
|
56
64
|
# receive_request is the callback method when data is recieved from the socket
|
|
57
65
|
#
|
|
58
66
|
# param header headers from standard Header and Content protocol
|
|
@@ -60,13 +68,19 @@ module FSR
|
|
|
60
68
|
def receive_request(header, content)
|
|
61
69
|
hash_header = headers_2_hash(header)
|
|
62
70
|
hash_content = headers_2_hash(content)
|
|
63
|
-
|
|
71
|
+
event = HeaderAndContentResponse.new({:headers => hash_header, :content => hash_content})
|
|
64
72
|
event_name = event.content[:event_name].to_s.strip
|
|
65
73
|
unless event_name.empty?
|
|
66
|
-
|
|
67
|
-
|
|
74
|
+
if hook = @hooks[event_name.to_sym]
|
|
75
|
+
case hook.arity
|
|
76
|
+
when 1
|
|
77
|
+
@hooks[event_name.to_sym].call(event)
|
|
78
|
+
when 2
|
|
79
|
+
@hooks[event_name.to_sym].call(self, event)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
68
82
|
end
|
|
69
|
-
on_event
|
|
83
|
+
on_event(event)
|
|
70
84
|
end
|
|
71
85
|
|
|
72
86
|
# say encapsulates #send_data for the user
|
|
@@ -87,7 +101,7 @@ module FSR
|
|
|
87
101
|
#
|
|
88
102
|
# param event The triggered event object
|
|
89
103
|
# return event The triggered event object
|
|
90
|
-
def on_event
|
|
104
|
+
def on_event(event)
|
|
91
105
|
event
|
|
92
106
|
end
|
|
93
107
|
|
|
@@ -121,8 +135,6 @@ module FSR
|
|
|
121
135
|
@hooks.delete(event)
|
|
122
136
|
end
|
|
123
137
|
|
|
124
|
-
|
|
125
|
-
|
|
126
138
|
end
|
|
127
139
|
|
|
128
140
|
end
|
data/lib/fsr/version.rb
CHANGED
|
@@ -3,22 +3,27 @@ require 'lib/fsr'
|
|
|
3
3
|
require "fsr/listener"
|
|
4
4
|
require "fsr/listener/inbound"
|
|
5
5
|
require "em-spec/bacon"
|
|
6
|
+
EM.spec_backend = EventMachine::Spec::Bacon
|
|
6
7
|
|
|
7
8
|
# Bare class to use for testing
|
|
8
9
|
class InboundListener < FSR::Listener::Inbound
|
|
9
|
-
attr_accessor :
|
|
10
|
+
attr_accessor :custom_event
|
|
10
11
|
|
|
11
12
|
# Stub error? out
|
|
12
13
|
def error?
|
|
13
14
|
false
|
|
14
15
|
end
|
|
15
16
|
|
|
17
|
+
def before_session
|
|
18
|
+
add_event(:CUSTOM) { |e| @custom_event = e }
|
|
19
|
+
end
|
|
20
|
+
|
|
16
21
|
def initialize(*args)
|
|
17
22
|
super(*args)
|
|
18
23
|
@test_event = nil
|
|
19
24
|
end
|
|
20
25
|
|
|
21
|
-
def on_event
|
|
26
|
+
def on_event(event)
|
|
22
27
|
recvd_event << event
|
|
23
28
|
end
|
|
24
29
|
|
|
@@ -28,8 +33,9 @@ class InboundListener < FSR::Listener::Inbound
|
|
|
28
33
|
end
|
|
29
34
|
|
|
30
35
|
class InboundListener2 < InboundListener
|
|
36
|
+
attr_accessor :test_event
|
|
31
37
|
def before_session
|
|
32
|
-
add_event(:TEST_EVENT) {
|
|
38
|
+
add_event(:TEST_EVENT) { |e| @test_event = e}
|
|
33
39
|
end
|
|
34
40
|
end
|
|
35
41
|
|
|
@@ -59,17 +65,19 @@ EM.describe InboundListener do
|
|
|
59
65
|
end
|
|
60
66
|
|
|
61
67
|
should "be able to add custom event hooks in the pre_session" do
|
|
68
|
+
@listener.receive_data("Content-Length: 22\n\nEvent-Name: CUSTOM\n\n")
|
|
69
|
+
@listener.custom_event.should.equal @listener.recvd_event.first
|
|
62
70
|
@listener2.receive_data("Content-Length: 22\n\nEvent-Name: TEST_EVENT\n\n")
|
|
63
|
-
@listener2.
|
|
71
|
+
@listener2.test_event.content[:event_name].should.equal "TEST_EVENT"
|
|
64
72
|
done
|
|
65
73
|
end
|
|
66
74
|
|
|
67
75
|
should "be able to add custom event hooks" do
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
FSL::Inbound.add_event_hook(:HANGUP_EVENT) { |instance, event| instance.test_event = event }
|
|
77
|
+
listener = InboundListener2.new(1234, {:auth => 'SecretPassword'})
|
|
78
|
+
listener.test_event.should.equal nil
|
|
79
|
+
listener.receive_data("Content-Length: 24\n\nEvent-Name: HANGUP_EVENT\n\n")
|
|
80
|
+
listener.test_event.content[:event_name].should.equal "HANGUP_EVENT"
|
|
73
81
|
done
|
|
74
82
|
end
|
|
75
83
|
|
|
@@ -4,7 +4,7 @@ require "fsr/listener"
|
|
|
4
4
|
require "fsr/listener/inbound"
|
|
5
5
|
require "fsr/listener/outbound"
|
|
6
6
|
require "em-spec/bacon"
|
|
7
|
-
|
|
7
|
+
EM.spec_backend = EventMachine::Spec::Bacon
|
|
8
8
|
# Bare class to use for testing
|
|
9
9
|
class MyListener < FSR::Listener::Outbound
|
|
10
10
|
attr_accessor :recvd_reply, :state_machine_test, :state_machine_test2
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: freeswitcher
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jayson Vaughn
|
|
@@ -12,7 +12,7 @@ autorequire:
|
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
14
|
|
|
15
|
-
date: 2010-01-
|
|
15
|
+
date: 2010-01-19 00:00:00 -06:00
|
|
16
16
|
default_executable:
|
|
17
17
|
dependencies:
|
|
18
18
|
- !ruby/object:Gem::Dependency
|
|
@@ -230,7 +230,6 @@ files:
|
|
|
230
230
|
- tasks/release.rake
|
|
231
231
|
- tasks/reversion.rake
|
|
232
232
|
- tasks/setup.rake
|
|
233
|
-
- tasks/spec.rake
|
|
234
233
|
- tasks/yard.rake
|
|
235
234
|
- spec/helper.rb
|
|
236
235
|
- spec/fsr_listener_helper.rb
|
data/tasks/spec.rake
DELETED
|
File without changes
|