del 0.1.3 → 0.1.4
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.
- checksums.yaml +4 -4
- data/README.md +3 -5
- data/exe/del +3 -1
- data/lib/del/configuration.rb +29 -0
- data/lib/del/connection.rb +10 -10
- data/lib/del/default_router.rb +13 -3
- data/lib/del/examples/routes.rb +7 -0
- data/lib/del/robot.rb +6 -5
- data/lib/del/version.rb +1 -1
- data/lib/del.rb +11 -16
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 275fb2e7d68148752f83c9e9c01d72f03631822c8f8c51261b6bc78917e25c24
|
4
|
+
data.tar.gz: 7071efd3d8cde47caba440ae0016bcef36df20b99cb65c69067bd967a8b3c473
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bdd37cdf1329695640e361542372ca9d0195d31c481526751c21417c38303ca9e0001d6568bd5b900c5d9ae303fb7088769712ec62eb91a121fcb5d6c65d193b
|
7
|
+
data.tar.gz: c2486029c1495bfde34aaa803a9d20398847feeb1d4669aea2a01dc95955bec795195206f3e0901eba6da27963e6c00fbdb3011eaf19a0897839802ff57b3e18
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# Del
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
Del is a funky robosapien.
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
@@ -22,7 +20,7 @@ Or install it yourself as:
|
|
22
20
|
|
23
21
|
## Usage
|
24
22
|
|
25
|
-
|
23
|
+
$ del routes.rb # see lib/del/examples/routes.rb for an example
|
26
24
|
|
27
25
|
## Development
|
28
26
|
|
@@ -32,7 +30,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
30
|
|
33
31
|
## Contributing
|
34
32
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
33
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/mokhan/del.
|
36
34
|
|
37
35
|
## License
|
38
36
|
|
data/exe/del
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require "del"
|
4
4
|
require "pathname"
|
5
5
|
|
6
|
+
startup_file = Pathname.new(ARGV[0]) if ARGV[0]
|
6
7
|
Del.start(
|
7
|
-
dotenv_file: ENV.fetch("DELRC", Pathname.new(Dir.home).join(".delrc"))
|
8
|
+
dotenv_file: ENV.fetch("DELRC", Pathname.new(Dir.home).join(".delrc")),
|
9
|
+
startup_file: startup_file,
|
8
10
|
)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Del
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :default_rooms
|
4
|
+
attr_accessor :host
|
5
|
+
attr_accessor :jid
|
6
|
+
attr_accessor :jid
|
7
|
+
attr_accessor :logger
|
8
|
+
attr_accessor :muc_domain
|
9
|
+
attr_accessor :name
|
10
|
+
attr_accessor :password
|
11
|
+
attr_accessor :rooms
|
12
|
+
attr_accessor :router
|
13
|
+
attr_accessor :users
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
@default_rooms = ENV.fetch("DEL_ROOMS", '').split(',')
|
17
|
+
@host = ENV.fetch("DEL_HOST", 'chat.hipchat.com')
|
18
|
+
@jid = ENV.fetch("DEL_JID")
|
19
|
+
@logger = Logger.new(STDOUT)
|
20
|
+
@logger.level = Logger::INFO
|
21
|
+
@muc_domain = ENV.fetch("DEL_MUC_DOMAIN", "conf.hipchat.com")
|
22
|
+
@name = ENV.fetch("DEL_FULL_NAME")
|
23
|
+
@password = ENV.fetch("DEL_PASSWORD")
|
24
|
+
@rooms = Repository.new
|
25
|
+
@router = DefaultRouter.new
|
26
|
+
@users = Repository.new
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/del/connection.rb
CHANGED
@@ -4,8 +4,8 @@ module Del
|
|
4
4
|
|
5
5
|
def initialize(configuration:)
|
6
6
|
@configuration = configuration
|
7
|
-
@rooms = configuration
|
8
|
-
@users = configuration
|
7
|
+
@rooms = configuration.rooms
|
8
|
+
@users = configuration.users
|
9
9
|
@mucs = {}
|
10
10
|
end
|
11
11
|
|
@@ -14,9 +14,9 @@ module Del
|
|
14
14
|
Del.logger.error(error)
|
15
15
|
disconnect
|
16
16
|
end
|
17
|
-
client.connect(configuration
|
17
|
+
client.connect(configuration.host)
|
18
18
|
sleep 0.0001 until client.is_connected?
|
19
|
-
client.auth(configuration
|
19
|
+
client.auth(configuration.password)
|
20
20
|
roster = Jabber::Roster::Helper.new(client, false)
|
21
21
|
roster.add_update_callback do |old_item, item|
|
22
22
|
users.upsert(item['jid'], User.new(item['jid'], item)) if item
|
@@ -25,13 +25,13 @@ module Del
|
|
25
25
|
roster.wait_for_roster
|
26
26
|
client.add_message_callback do |message|
|
27
27
|
next if message.type == :error || message.body.nil?
|
28
|
-
user = configuration
|
28
|
+
user = configuration.users.find_by(message.from.strip)
|
29
29
|
robot.receive(message.body, source: Source.new(user: user))
|
30
30
|
end
|
31
31
|
client.send(Jabber::Presence.new(:chat))
|
32
|
-
configuration
|
32
|
+
configuration.default_rooms.each do |room|
|
33
33
|
Del.logger.debug("Joining #{room} as #{robot.name}")
|
34
|
-
room_jid = jid_for(room, configuration
|
34
|
+
room_jid = jid_for(room, configuration.muc_domain.dup, robot.name)
|
35
35
|
stripped_jid = room_jid.strip.to_s
|
36
36
|
next if @mucs[stripped_jid]
|
37
37
|
|
@@ -44,7 +44,7 @@ module Del
|
|
44
44
|
end
|
45
45
|
muc.join(room_jid)
|
46
46
|
end
|
47
|
-
list_rooms(configuration
|
47
|
+
list_rooms(configuration.muc_domain).each do |room|
|
48
48
|
rooms.upsert(room)
|
49
49
|
end
|
50
50
|
end
|
@@ -61,7 +61,7 @@ module Del
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def disconnect
|
64
|
-
|
64
|
+
Del.logger.info("byte me!")
|
65
65
|
client.close
|
66
66
|
rescue IOError, SystemCallError => error
|
67
67
|
Del.logger.error(error)
|
@@ -74,7 +74,7 @@ module Del
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def jid
|
77
|
-
@jid ||= jid_for(configuration
|
77
|
+
@jid ||= jid_for(configuration.jid, "chat.hipchat.com", "bot")
|
78
78
|
end
|
79
79
|
|
80
80
|
def list_rooms(muc_domain)
|
data/lib/del/default_router.rb
CHANGED
@@ -1,9 +1,19 @@
|
|
1
1
|
module Del
|
2
2
|
class DefaultRouter
|
3
|
-
def
|
4
|
-
|
3
|
+
def initialize(routes = [])
|
4
|
+
@routes = routes
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
+
def register(pattern, &block)
|
8
|
+
@routes.push(pattern: pattern, command: block)
|
9
|
+
end
|
10
|
+
|
11
|
+
def route(message)
|
12
|
+
@routes.each do |route|
|
13
|
+
if route[:pattern].match(message.text)
|
14
|
+
route[:command].call(message)
|
15
|
+
end
|
16
|
+
end
|
7
17
|
end
|
8
18
|
end
|
9
19
|
end
|
data/lib/del/robot.rb
CHANGED
@@ -6,15 +6,16 @@ module Del
|
|
6
6
|
|
7
7
|
def initialize(configuration:)
|
8
8
|
@connection = Connection.new(configuration: configuration)
|
9
|
-
@jid = configuration
|
10
|
-
@name = configuration
|
11
|
-
@router = configuration
|
12
|
-
@users = configuration
|
13
|
-
@rooms = configuration
|
9
|
+
@jid = configuration.jid
|
10
|
+
@name = configuration.name
|
11
|
+
@router = configuration.router
|
12
|
+
@users = configuration.users
|
13
|
+
@rooms = configuration.rooms
|
14
14
|
end
|
15
15
|
|
16
16
|
def get_funky!
|
17
17
|
connection.connect(self)
|
18
|
+
Del.logger.info("It's fire! 🔥")
|
18
19
|
sleep
|
19
20
|
rescue Interrupt
|
20
21
|
connection.disconnect
|
data/lib/del/version.rb
CHANGED
data/lib/del.rb
CHANGED
@@ -6,6 +6,7 @@ require "xmpp4r/muc/helper/simplemucclient"
|
|
6
6
|
require "xmpp4r/roster/helper/roster"
|
7
7
|
|
8
8
|
require "del/connection"
|
9
|
+
require "del/configuration"
|
9
10
|
require "del/default_router"
|
10
11
|
require "del/message"
|
11
12
|
require "del/repository"
|
@@ -15,11 +16,16 @@ require "del/user"
|
|
15
16
|
require "del/version"
|
16
17
|
|
17
18
|
module Del
|
18
|
-
def self.start(dotenv_file:)
|
19
|
+
def self.start(dotenv_file:, startup_file:)
|
19
20
|
puts "Loading... #{dotenv_file}"
|
20
21
|
Dotenv.load(dotenv_file.to_s)
|
21
|
-
|
22
|
-
|
22
|
+
Del.configure do |config|
|
23
|
+
config.router.register(/.*/) do |message|
|
24
|
+
logger.debug(message.to_s)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
load startup_file if startup_file && File.exist?(startup_file)
|
28
|
+
|
23
29
|
del = Robot.new(configuration: configuration)
|
24
30
|
del.get_funky!
|
25
31
|
end
|
@@ -29,21 +35,10 @@ module Del
|
|
29
35
|
end
|
30
36
|
|
31
37
|
def self.configuration
|
32
|
-
@configuration ||=
|
33
|
-
default_rooms: ENV.fetch("DEL_ROOMS", '').split(','),
|
34
|
-
host: ENV.fetch("DEL_HOST"),
|
35
|
-
jid: ENV.fetch("DEL_JID"),
|
36
|
-
logger: Logger.new(STDOUT),
|
37
|
-
muc_domain: ENV.fetch("DEL_MUC_DOMAIN"),
|
38
|
-
name: ENV.fetch("DEL_FULL_NAME"),
|
39
|
-
password: ENV.fetch("DEL_PASSWORD"),
|
40
|
-
rooms: Repository.new,
|
41
|
-
router: DefaultRouter.new,
|
42
|
-
users: Repository.new,
|
43
|
-
}
|
38
|
+
@configuration ||= Configuration.new
|
44
39
|
end
|
45
40
|
|
46
41
|
def self.logger
|
47
|
-
@logger ||= configuration
|
42
|
+
@logger ||= configuration.logger
|
48
43
|
end
|
49
44
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: del
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mo
|
@@ -100,8 +100,10 @@ files:
|
|
100
100
|
- del.gemspec
|
101
101
|
- exe/del
|
102
102
|
- lib/del.rb
|
103
|
+
- lib/del/configuration.rb
|
103
104
|
- lib/del/connection.rb
|
104
105
|
- lib/del/default_router.rb
|
106
|
+
- lib/del/examples/routes.rb
|
105
107
|
- lib/del/message.rb
|
106
108
|
- lib/del/repository.rb
|
107
109
|
- lib/del/robot.rb
|