qswarm 0.0.9 → 0.0.10
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/lib/qswarm/speakers/irc.rb +39 -4
- data/lib/qswarm/version.rb +1 -1
- metadata +12 -12
data/lib/qswarm/speakers/irc.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
require 'cinch'
|
2
|
+
require 'ostruct'
|
2
3
|
|
3
4
|
module Qswarm
|
4
5
|
module Speakers
|
5
6
|
class Irc < Qswarm::Speaker
|
6
7
|
@@irc_servers = {}
|
7
|
-
|
8
|
+
|
9
|
+
def initialize(listener, name, args, &block)
|
10
|
+
@admin_host = args[:admin_host]
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
8
14
|
def inject(format = :text, msg)
|
9
15
|
logger.debug "[#{@agent.name}] Sending '#{msg}' to channel #{@name}"
|
10
16
|
publish format, @name, msg
|
@@ -13,7 +19,20 @@ module Qswarm
|
|
13
19
|
def run
|
14
20
|
@name.match(/([^#]*)(#.+)/) { irc_connect $1.empty? ? 'localhost' : $1, $2 }
|
15
21
|
end
|
16
|
-
|
22
|
+
|
23
|
+
def parse(m)
|
24
|
+
logger.debug "Received message: #{m.channel}/#{m.message}"
|
25
|
+
super( OpenStruct.new( :routing_key => '__', :message => m, :channel => m.channel ), m.message )
|
26
|
+
end
|
27
|
+
|
28
|
+
def join(m)
|
29
|
+
unless m.user.nick == m.bot.nick
|
30
|
+
if @admin_host && Regexp.new(@admin_host).match(m.user.host)
|
31
|
+
m.channel.op(m.user)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
17
36
|
private
|
18
37
|
|
19
38
|
def irc_connect(irc_server, channel)
|
@@ -22,10 +41,25 @@ module Qswarm
|
|
22
41
|
@@irc_servers[irc_server].config.channels << channel
|
23
42
|
else
|
24
43
|
logger.debug "Connecting to IRC server #{irc_server} channel #{channel}"
|
25
|
-
|
44
|
+
|
45
|
+
@@irc_servers[irc_server] = Cinch::Bot.new do
|
46
|
+
on :channel do |m|
|
47
|
+
if m.message =~ /^#{m.bot.nick}/
|
48
|
+
EM.defer do
|
49
|
+
m.bot.config.shared['speaker'].parse(m)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
on :join do |m|
|
55
|
+
m.bot.config.shared['speaker'].join(m)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
26
59
|
@@irc_servers[irc_server].config.server = irc_server
|
27
60
|
@@irc_servers[irc_server].config.nick = @agent.name
|
28
61
|
@@irc_servers[irc_server].config.channels << channel
|
62
|
+
@@irc_servers[irc_server].config.shared['speaker'] = self
|
29
63
|
|
30
64
|
EM.defer do
|
31
65
|
@@irc_servers[irc_server].start
|
@@ -35,11 +69,12 @@ module Qswarm
|
|
35
69
|
|
36
70
|
def publish(format, name, msg)
|
37
71
|
@name.match(/([^#]*)(#.+)/) do
|
38
|
-
@@irc_servers[$1.empty? ? 'localhost' : $1].
|
72
|
+
@@irc_servers[$1.empty? ? 'localhost' : $1].channel_list.find_ensured($2).andand.send(
|
39
73
|
format == :json ? JSON.generate(msg) : msg
|
40
74
|
)
|
41
75
|
end
|
42
76
|
end
|
77
|
+
|
43
78
|
end
|
44
79
|
end
|
45
80
|
end
|
data/lib/qswarm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qswarm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: eventmachine
|
16
|
-
requirement: &
|
16
|
+
requirement: &70139061598600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70139061598600
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: amqp
|
27
|
-
requirement: &
|
27
|
+
requirement: &70139061598180 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70139061598180
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: uuid
|
38
|
-
requirement: &
|
38
|
+
requirement: &70139061597660 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70139061597660
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: json
|
49
|
-
requirement: &
|
49
|
+
requirement: &70139061597120 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70139061597120
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: andand
|
60
|
-
requirement: &
|
60
|
+
requirement: &70139061596640 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70139061596640
|
69
69
|
description: Framework for writing distributed agents hanging off an AMQP message
|
70
70
|
bus
|
71
71
|
email:
|