kermit 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|