siriproxypm-honey 0.0.2
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/Gemfile +4 -0
- data/Rakefile +1 -0
- data/lib/siriproxypm-honey.rb +154 -0
- data/siriproxypm-honey.gemspec +22 -0
- metadata +60 -0
data/Gemfile
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
require 'cora'
|
|
2
|
+
require 'siriproxy/plugin_manager'
|
|
3
|
+
require 'socket'
|
|
4
|
+
requrie
|
|
5
|
+
|
|
6
|
+
class SiriProxy::PluginManager::Honey < SiriProxy::PluginManager::ClientStateCache
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
###############################################
|
|
10
|
+
#plugins
|
|
11
|
+
###############################################
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_plugin_list
|
|
16
|
+
result = get_app_config("speakers",get_speaker,"plugins")
|
|
17
|
+
if result == nil || !result.is_a(Array)
|
|
18
|
+
result = []
|
|
19
|
+
end
|
|
20
|
+
return result
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def process_plugins(text)
|
|
25
|
+
result = nil
|
|
26
|
+
if (result = switch_speaker(proc_text ))== nil
|
|
27
|
+
result = super(text)
|
|
28
|
+
end
|
|
29
|
+
return result
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
###############################################
|
|
33
|
+
#access methods for client :speaker state
|
|
34
|
+
###############################################
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def set_speaker(new_speaker)
|
|
38
|
+
set_client_state(:speaker,new_speaker)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def get_speaker
|
|
42
|
+
speaker = nil
|
|
43
|
+
if has_open_connection
|
|
44
|
+
speaker = get_client_state(:speaker)
|
|
45
|
+
end
|
|
46
|
+
if speaker == nil
|
|
47
|
+
speaker = get_default_speaker
|
|
48
|
+
end
|
|
49
|
+
return speaker
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
###############################################
|
|
53
|
+
#handle switching/recognition of speaker
|
|
54
|
+
###############################################
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def get_default_speaker
|
|
58
|
+
default_speaker = nil
|
|
59
|
+
client = get_client
|
|
60
|
+
speakers = get_app_config('speakers')
|
|
61
|
+
clients = get_app_config('client_preferences')
|
|
62
|
+
if client != nil \
|
|
63
|
+
&& clients != nil \
|
|
64
|
+
&& clients.respond_to?('each')
|
|
65
|
+
&& speakers.respond_to?('has_key?')
|
|
66
|
+
clients.each do |range,client_preferences|
|
|
67
|
+
if!client_preferences \
|
|
68
|
+
|| !client_preferences.has_key?("speakers") \
|
|
69
|
+
|| !in_range(client,range)
|
|
70
|
+
next
|
|
71
|
+
end
|
|
72
|
+
if client_preferences['speakers'].respond_to?("each")
|
|
73
|
+
speakers = client_preferences['speakers']
|
|
74
|
+
else
|
|
75
|
+
speakers = [client_preferences['speakers']]
|
|
76
|
+
end
|
|
77
|
+
speakers.each do |speaker|
|
|
78
|
+
if speaker == nil
|
|
79
|
+
next
|
|
80
|
+
end
|
|
81
|
+
if speakers.has_key?(speaker)
|
|
82
|
+
return speaker
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
return nil
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
#if switch speaker, return the name of the new speaker
|
|
90
|
+
def switch_speaker(text)
|
|
91
|
+
new_speaker = nil
|
|
92
|
+
speakers = get_app_config("speakers")
|
|
93
|
+
if speakers != null speakers.respond_to?('each')
|
|
94
|
+
speakers.each do |speaker,speaker_config|
|
|
95
|
+
if identify_speaker(speaker,text)
|
|
96
|
+
new_speaker = speaker
|
|
97
|
+
break
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
if new_speaker != nil && (client = get_client) != nil
|
|
102
|
+
#verify on this ip address
|
|
103
|
+
valid_speaker = false
|
|
104
|
+
client_prefereces = get_app_config("client_preferences")
|
|
105
|
+
if client_preferences.respond_to?('each')
|
|
106
|
+
client_preferences.each do |range,client_preferences|
|
|
107
|
+
if client_preferences == nil\
|
|
108
|
+
|| !client_preferences.respond_to?("has_key?") \
|
|
109
|
+
|| !client_preferences.has_key?("speakers") \
|
|
110
|
+
|| client_preferences['speakers'] == nil
|
|
111
|
+
|| !in_range(client,range)
|
|
112
|
+
next
|
|
113
|
+
end
|
|
114
|
+
if (client_preferences['speakers'].is_a?(String) && client_preferences['speakers'] == new_speaker) \
|
|
115
|
+
||( client_preferences['speakers'].respond_to?("include?") && client_preferences['speakers'].include?(new_speaker))
|
|
116
|
+
valid_speaker = true
|
|
117
|
+
break
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
if valid_speaker
|
|
122
|
+
log "Switching to #{new_speaker} on #{client}"
|
|
123
|
+
set_speaker(new_speaker)
|
|
124
|
+
welcome_speaker(new_speaker)
|
|
125
|
+
else
|
|
126
|
+
log "someone tried to access #{new_speaker} from #{client} without permission"
|
|
127
|
+
new_speaker = nil
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
return new_speaker
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def identify_speaker(speaker,text)
|
|
136
|
+
return text_matches(text,get_app_config("speakers",speaker,"identity"));
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def welcome_speaker(speaker)
|
|
141
|
+
if (welcome = get_app_config("speakers",speaker,"welcome")) != nil
|
|
142
|
+
respond(speaker_config['welcome'])
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
|
|
4
|
+
Gem::Specification.new do |s|
|
|
5
|
+
s.name = "siriproxypm-honey"
|
|
6
|
+
s.version = "0.0.2"
|
|
7
|
+
s.authors = ["litlfred"]
|
|
8
|
+
s.email = [""]
|
|
9
|
+
s.homepage = ""
|
|
10
|
+
s.summary = %q{A Speaker Aware Plugin Manager}
|
|
11
|
+
s.description = %q{Plugin manager with speakers (i.e. users/roles) }
|
|
12
|
+
|
|
13
|
+
s.rubyforge_project = "siriproxypm-honey"
|
|
14
|
+
|
|
15
|
+
s.files = `git ls-files 2> /dev/null`.split("\n")
|
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/* 2> /dev/null`.split("\n")
|
|
17
|
+
s.executables = `git ls-files -- bin/* 2> /dev/null`.split("\n").map{ |f| File.basename(f) }
|
|
18
|
+
s.require_paths = ["lib"]
|
|
19
|
+
|
|
20
|
+
# specify any dependencies here; for example:
|
|
21
|
+
s.add_dependency "siriproxypm-clientstatecache"
|
|
22
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: siriproxypm-honey
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.2
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- litlfred
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2011-12-07 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: siriproxypm-clientstatecache
|
|
16
|
+
requirement: &78836590 !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: *78836590
|
|
25
|
+
description: ! 'Plugin manager with speakers (i.e. users/roles) '
|
|
26
|
+
email:
|
|
27
|
+
- ''
|
|
28
|
+
executables: []
|
|
29
|
+
extensions: []
|
|
30
|
+
extra_rdoc_files: []
|
|
31
|
+
files:
|
|
32
|
+
- Gemfile
|
|
33
|
+
- Rakefile
|
|
34
|
+
- lib/siriproxypm-honey.rb
|
|
35
|
+
- siriproxypm-honey.gemspec
|
|
36
|
+
homepage: ''
|
|
37
|
+
licenses: []
|
|
38
|
+
post_install_message:
|
|
39
|
+
rdoc_options: []
|
|
40
|
+
require_paths:
|
|
41
|
+
- lib
|
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
43
|
+
none: false
|
|
44
|
+
requirements:
|
|
45
|
+
- - ! '>='
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ! '>='
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
requirements: []
|
|
55
|
+
rubyforge_project: siriproxypm-honey
|
|
56
|
+
rubygems_version: 1.8.10
|
|
57
|
+
signing_key:
|
|
58
|
+
specification_version: 3
|
|
59
|
+
summary: A Speaker Aware Plugin Manager
|
|
60
|
+
test_files: []
|