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 ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in siriproxypm-honey.gemspec
4
+ gemspec
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: []