kermit 1.0.1 → 1.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/CHANGELOG.md +11 -0
- data/VERSION +1 -1
- data/config/config.example.yml +31 -18
- data/lib/business/adapter/random_adapter.rb +2 -2
- data/lib/business/adapter/twitter_adapter.rb +2 -2
- data/lib/business/converter/random_converter.rb +1 -2
- data/lib/business/converter/twitter_converter.rb +0 -4
- data/lib/helper/DAO.rb +7 -13
- data/lib/helper/websocket_client.rb +2 -0
- metadata +27 -26
data/CHANGELOG.md
ADDED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.2
|
data/config/config.example.yml
CHANGED
@@ -1,24 +1,37 @@
|
|
1
1
|
redis:
|
2
|
-
|
3
|
-
|
4
|
-
# you
|
5
|
-
|
6
|
-
|
2
|
+
#Database name where you want to store the statuses
|
3
|
+
db: kermit
|
4
|
+
#Key under you want to found your tweets
|
5
|
+
twitter: twitter
|
6
|
+
# [you must add keys for your own stream implementations]
|
7
|
+
#address of your Redis-Server
|
8
|
+
host: 127.0.0.1
|
9
|
+
#port of your Redis-Server
|
10
|
+
port: 6379
|
7
11
|
password: #Redis password
|
8
12
|
#Websocket address to publish the statuses
|
9
13
|
websocket:
|
10
|
-
|
11
|
-
|
12
|
-
#
|
14
|
+
#address of your websocket server
|
15
|
+
host: 0.0.0.0
|
16
|
+
#port of your websocket server
|
17
|
+
port: 8000
|
18
|
+
#[for each Stream implementation you must define its specific params.]
|
13
19
|
twitter:
|
14
|
-
|
20
|
+
#number of streams you want
|
21
|
+
streams: 2
|
15
22
|
path: /1/statuses/filter.json
|
16
|
-
track: #Keywords you want Twitter tracks and filter the Stream (one for each stream)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
track: # [Keywords you want Twitter tracks and filter the Stream (one for each stream)]
|
24
|
+
#specific keyword for each twitter stream
|
25
|
+
1: a
|
26
|
+
#another keyword to track
|
27
|
+
2: b
|
28
|
+
#Your Twitter username
|
29
|
+
login:
|
30
|
+
#Your Twitter password
|
31
|
+
pass:
|
32
|
+
#Port, in case you need to specific one.
|
33
|
+
port: 443
|
34
|
+
#[RandomPhraseGenerator Stream]
|
35
|
+
#true / false if you want to enable this stream
|
36
|
+
rpg: false
|
37
|
+
#[if you want to add more Social Networks/Streams, it can be a good idea to follow the previous Twitter structure.]
|
@@ -15,7 +15,6 @@ class RandomAdapter < Adapter
|
|
15
15
|
def initialize
|
16
16
|
|
17
17
|
@dao = DAO.new 'rpg'
|
18
|
-
logger.debug('Starting RandomAdapter...')
|
19
18
|
|
20
19
|
end
|
21
20
|
|
@@ -25,12 +24,13 @@ class RandomAdapter < Adapter
|
|
25
24
|
# @param stream [Integer] number of the stream
|
26
25
|
def connect_stream (stream=1)
|
27
26
|
|
27
|
+
logger.info('Starting Random adapter')
|
28
28
|
random = RandomPhraseGenerator.new
|
29
29
|
i=0
|
30
30
|
while true
|
31
31
|
|
32
32
|
persist random.generate
|
33
|
-
|
33
|
+
|
34
34
|
i = i+1
|
35
35
|
if i%10 == 0
|
36
36
|
sleep 10
|
@@ -16,7 +16,6 @@ class TwitterAdapter < Adapter
|
|
16
16
|
# Configures the dao with the apropiates params
|
17
17
|
def initialize
|
18
18
|
|
19
|
-
logger.info('Starting TwitterAdapter...')
|
20
19
|
@dao = DAO.new 'twitter'
|
21
20
|
|
22
21
|
end
|
@@ -26,10 +25,11 @@ class TwitterAdapter < Adapter
|
|
26
25
|
# @param stream [Integer] the number of the stream to identify it (use it when you have got more than one)
|
27
26
|
def connect_stream (stream=1)
|
28
27
|
|
29
|
-
logger.debug('retrieving...')
|
30
28
|
puts 'retrieving... '
|
31
29
|
track = Settings.twitter.track.send("track#{stream}")
|
32
30
|
|
31
|
+
logger.info("Starting Twitter adapter ##{track}")
|
32
|
+
|
33
33
|
EventMachine::run {
|
34
34
|
|
35
35
|
stream = Twitter::JSONStream.connect(
|
@@ -19,7 +19,6 @@ class RandomConverter < Converter
|
|
19
19
|
# @return [USMF] the resultant message
|
20
20
|
def to_usmf status
|
21
21
|
|
22
|
-
logger.debug("Start the random parse")
|
23
22
|
usmf = USMF.new
|
24
23
|
user = User.new
|
25
24
|
|
@@ -34,7 +33,7 @@ class RandomConverter < Converter
|
|
34
33
|
|
35
34
|
usmf.links = []
|
36
35
|
usmf.to_users = []
|
37
|
-
|
36
|
+
|
38
37
|
usmf
|
39
38
|
|
40
39
|
end
|
@@ -21,8 +21,6 @@ class TwitterConverter < Converter
|
|
21
21
|
# @return [USMF] the resultant message
|
22
22
|
def to_usmf status
|
23
23
|
|
24
|
-
logger.debug("Starting tweet parse")
|
25
|
-
|
26
24
|
usmf = USMF.new
|
27
25
|
user = User.new
|
28
26
|
|
@@ -155,8 +153,6 @@ class TwitterConverter < Converter
|
|
155
153
|
|
156
154
|
end
|
157
155
|
|
158
|
-
logger.debug("Finished tweet parse")
|
159
|
-
|
160
156
|
usmf
|
161
157
|
|
162
158
|
end
|
data/lib/helper/DAO.rb
CHANGED
@@ -24,21 +24,15 @@ class DAO
|
|
24
24
|
def initialize (type = 'twitter')
|
25
25
|
|
26
26
|
@type = type
|
27
|
-
|
28
|
-
logger.debug('Starting DAO...')
|
29
27
|
|
30
|
-
logger.info(type + " DAO in " + type.to_s + " type")
|
31
|
-
|
32
|
-
logger.info("config loaded OK")
|
33
28
|
connect_database
|
34
29
|
|
35
30
|
end
|
36
31
|
|
37
32
|
# Connects to a redis database
|
38
33
|
def connect_database
|
39
|
-
@db = Redis.new
|
40
34
|
|
41
|
-
|
35
|
+
@db = Redis.new
|
42
36
|
|
43
37
|
@db = Redis.connect(
|
44
38
|
:db => "#{Settings.redis.db}",
|
@@ -47,39 +41,40 @@ class DAO
|
|
47
41
|
:password => Settings.redis.password
|
48
42
|
)
|
49
43
|
|
50
|
-
logger.info("Redis connect OK")
|
51
44
|
end
|
52
45
|
|
53
46
|
# Retrieves the next status that were saved in the database
|
54
47
|
#
|
55
48
|
# @return [String] the status from the Adapter
|
56
49
|
def get_status
|
57
|
-
|
50
|
+
|
58
51
|
status = @db.rpop @type
|
59
52
|
status
|
53
|
+
|
60
54
|
end
|
61
55
|
|
62
56
|
# Deletes the keys in the database to starts the FW empty
|
63
57
|
# @note if the user develops more Streams, add the new keys like the existing ones
|
64
58
|
def clean
|
65
|
-
|
59
|
+
|
66
60
|
@db.del 'twitter'
|
67
61
|
@db.del 'rpg'
|
62
|
+
|
68
63
|
end
|
69
64
|
|
70
65
|
# Persists the status into the database
|
71
66
|
#
|
72
67
|
# @param status [String] the status to persist it
|
73
68
|
def save_status status
|
69
|
+
|
74
70
|
@db.rpush @type, status
|
75
|
-
|
71
|
+
|
76
72
|
end
|
77
73
|
|
78
74
|
# Returns the size of the database
|
79
75
|
#
|
80
76
|
# @return [Integer] the size (items) of the database
|
81
77
|
def size
|
82
|
-
logger.debug("getting size")
|
83
78
|
@db.llen @type
|
84
79
|
end
|
85
80
|
|
@@ -87,7 +82,6 @@ class DAO
|
|
87
82
|
#
|
88
83
|
# @param usmf [USMF] a message to publish
|
89
84
|
def publish usmf
|
90
|
-
logger.info("Publishing")
|
91
85
|
@db.publish 'ws', usmf
|
92
86
|
end
|
93
87
|
|
@@ -12,6 +12,8 @@ class WebSocketClient
|
|
12
12
|
# Starts the WebSocket client to consume the published info in the WebSocket Server
|
13
13
|
def start
|
14
14
|
|
15
|
+
logger.info('Starting the WebSocket Client...')
|
16
|
+
|
15
17
|
EventMachine.run do
|
16
18
|
|
17
19
|
puts '='*80, "Connecting to websockets server at ws://#{Settings.websocket.host}:#{Settings.websocket.port}", '='*80
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kermit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ default_executable: kermit
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
17
|
-
requirement: &
|
17
|
+
requirement: &73473890 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 0.9.2.2
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *73473890
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: em-http-request
|
28
|
-
requirement: &
|
28
|
+
requirement: &73473080 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - =
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 0.2.7
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *73473080
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: em-websocket
|
39
|
-
requirement: &
|
39
|
+
requirement: &73470900 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 0.3.8
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *73470900
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: redis
|
50
|
-
requirement: &
|
50
|
+
requirement: &73436220 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 3.0.1
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *73436220
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: json
|
61
|
-
requirement: &
|
61
|
+
requirement: &73435450 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 1.7.3
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *73435450
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: twitter-stream
|
72
|
-
requirement: &
|
72
|
+
requirement: &73434940 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 0.1.16
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *73434940
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: settingslogic
|
83
|
-
requirement: &
|
83
|
+
requirement: &73434300 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: 2.0.8
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *73434300
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: commander
|
94
|
-
requirement: &
|
94
|
+
requirement: &73431190 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ~>
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: 4.1.2
|
100
100
|
type: :runtime
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *73431190
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rdoc
|
105
|
-
requirement: &
|
105
|
+
requirement: &73430020 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: '3.12'
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *73430020
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: jeweler
|
116
|
-
requirement: &
|
116
|
+
requirement: &73397690 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ~>
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: 1.8.4
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *73397690
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rspec
|
127
|
-
requirement: &
|
127
|
+
requirement: &73396310 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: 2.11.0
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *73396310
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: yard
|
138
|
-
requirement: &
|
138
|
+
requirement: &73395390 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - ~>
|
@@ -143,7 +143,7 @@ dependencies:
|
|
143
143
|
version: 0.8.2.1
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
|
-
version_requirements: *
|
146
|
+
version_requirements: *73395390
|
147
147
|
description: Allows to retrieve info from diferent Data Streams for data mining purpouses
|
148
148
|
email: daniel.machado.fernandez@gmail.com
|
149
149
|
executables:
|
@@ -153,6 +153,7 @@ extra_rdoc_files:
|
|
153
153
|
- LICENSE.txt
|
154
154
|
- README.md
|
155
155
|
files:
|
156
|
+
- CHANGELOG.md
|
156
157
|
- Gemfile
|
157
158
|
- LICENSE.txt
|
158
159
|
- README.md
|
@@ -237,7 +238,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
237
238
|
version: '0'
|
238
239
|
segments:
|
239
240
|
- 0
|
240
|
-
hash:
|
241
|
+
hash: 585196637
|
241
242
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
242
243
|
none: false
|
243
244
|
requirements:
|