logstash-input-twitter 4.0.0 → 4.0.1
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/CHANGELOG.md +3 -0
- data/lib/logstash/inputs/twitter.rb +1 -2
- data/lib/logstash/inputs/twitter/patches.rb +1 -45
- data/logstash-input-twitter.gemspec +6 -2
- data/spec/integration/twitter_pubsub_spec.rb +3 -3
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0857b97ff1503291374881bfd1dafe4693ba756b5a935e8331bc415e17d30148'
|
4
|
+
data.tar.gz: 62aeaf7b1e9161479df75e3fa34e9da1c1162c7d2ee50bf13818923a62bac740
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3758ab5554337990eddbaf5da5c7207be10252cbfe8132697b6809014f7bb0390d797d6ae2a0de4a38561e1ae0113fe4245dceae541e6fd51a3c87169f922acc
|
7
|
+
data.tar.gz: 6a3eed43e5128523ad319e4513d1bf0297382ad7f8671386579dae53d5e5f49a7ecb3f75f7ed80fdf1f68c8da0de52fa65bd307667d7d55ec9a33a5dbbff7e08
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,7 @@ require "logstash/timestamp"
|
|
5
5
|
require "logstash/util"
|
6
6
|
require "logstash/json"
|
7
7
|
require "stud/interval"
|
8
|
+
require "twitter"
|
8
9
|
require "logstash/inputs/twitter/patches"
|
9
10
|
|
10
11
|
# Ingest events from the Twitter Streaming API.
|
@@ -104,8 +105,6 @@ class LogStash::Inputs::Twitter < LogStash::Inputs::Base
|
|
104
105
|
config :rate_limit_reset_in, :validate => :number, :default => 300
|
105
106
|
|
106
107
|
def register
|
107
|
-
require "twitter"
|
108
|
-
|
109
108
|
if !@use_samples && ( @keywords.nil? && @follows.nil? && @locations.nil? )
|
110
109
|
raise LogStash::ConfigurationError.new("At least one parameter (follows, locations or keywords) must be specified.")
|
111
110
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require 'twitter/streaming/connection'
|
3
2
|
require 'twitter/streaming/response'
|
4
|
-
require 'twitter/streaming/message_parser'
|
5
3
|
|
6
4
|
module LogStash
|
7
5
|
module Inputs
|
@@ -10,54 +8,12 @@ module LogStash
|
|
10
8
|
def self.patch
|
11
9
|
verify_version
|
12
10
|
patch_json
|
13
|
-
patch_connection_stream
|
14
|
-
patch_request
|
15
11
|
end
|
16
12
|
|
17
13
|
private
|
18
14
|
|
19
15
|
def self.verify_version
|
20
|
-
raise("Incompatible Twitter gem version and the LogStash::Json.load") unless ::Twitter::Version.to_s == "
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.patch_connection_stream
|
24
|
-
::Twitter::Streaming::Connection.class_eval do
|
25
|
-
def stream(request, response)
|
26
|
-
socket = @tcp_socket_class.new(Resolv.getaddress(request.socket_host), request.socket_port)
|
27
|
-
socket = ssl_stream(socket) if !request.using_proxy?
|
28
|
-
|
29
|
-
request.stream(socket)
|
30
|
-
while body = socket.readpartial(1024) # rubocop:disable AssignmentInCondition
|
31
|
-
response << body
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def ssl_stream(client)
|
36
|
-
client_context = OpenSSL::SSL::SSLContext.new
|
37
|
-
ssl_client = @ssl_socket_class.new(client, client_context)
|
38
|
-
ssl_client.connect
|
39
|
-
end
|
40
|
-
|
41
|
-
def normalized_port(scheme)
|
42
|
-
HTTP::URI.port_mapping[scheme]
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.patch_request
|
48
|
-
::Twitter::Streaming::Client.class_eval do
|
49
|
-
def request(method, uri, params)
|
50
|
-
before_request.call
|
51
|
-
headers = ::Twitter::Headers.new(self, method, uri, params).request_headers
|
52
|
-
request = ::HTTP::Request.new(method, uri + '?' + to_url_params(params), headers, proxy)
|
53
|
-
response = ::Twitter::Streaming::Response.new do |data|
|
54
|
-
if item = ::Twitter::Streaming::MessageParser.parse(data) # rubocop:disable AssignmentInCondition
|
55
|
-
yield(item)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
@connection.stream(request, response)
|
59
|
-
end
|
60
|
-
end
|
16
|
+
raise("Incompatible Twitter gem version and the LogStash::Json.load") unless ::Twitter::Version.to_s == "6.2.0"
|
61
17
|
end
|
62
18
|
|
63
19
|
def self.patch_json
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-input-twitter'
|
4
|
-
s.version = '4.0.
|
4
|
+
s.version = '4.0.1'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Reads events from the Twitter Streaming API"
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
@@ -19,9 +19,13 @@ Gem::Specification.new do |s|
|
|
19
19
|
# Special flag to let us know this is actually a logstash plugin
|
20
20
|
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "input" }
|
21
21
|
|
22
|
+
# public_suffix 3.x+ includes ruby syntax from 2.1
|
23
|
+
# This effectively requires Logstash >= 6.x
|
24
|
+
s.required_ruby_version = '>= 2.1.0'
|
25
|
+
|
22
26
|
# Gem dependencies
|
23
27
|
s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
|
24
|
-
s.add_runtime_dependency 'twitter', '
|
28
|
+
s.add_runtime_dependency 'twitter', '6.2.0'
|
25
29
|
s.add_runtime_dependency 'http-form_data', '~> 2'
|
26
30
|
s.add_runtime_dependency 'public_suffix', '~> 3'
|
27
31
|
s.add_runtime_dependency 'stud', '>= 0.0.22', '< 0.1'
|
@@ -45,7 +45,7 @@ describe LogStash::Inputs::Twitter do
|
|
45
45
|
RSpec::Sequencing.run_after(1, "update tweet status") do
|
46
46
|
twt = "logstash_ci_publish partial tweet test #{Time.now} #{SecureRandom.hex(6)} $AAPL #lscipub @logstash https://www.elastic.co/downloads/logstash"
|
47
47
|
publisher.update_with_media(twt, File.open(LogstashTwitterInput.fixture("small_smile.png")))
|
48
|
-
end.then_after(
|
48
|
+
end.then_after(10, "stop plugin") do
|
49
49
|
plugin.stop
|
50
50
|
true
|
51
51
|
end.value
|
@@ -64,10 +64,10 @@ describe LogStash::Inputs::Twitter do
|
|
64
64
|
let(:full_tweets) { true }
|
65
65
|
|
66
66
|
it "receives an event from the twitter stream" do
|
67
|
-
RSpec::Sequencing.run_after(
|
67
|
+
RSpec::Sequencing.run_after(1, "update tweet status") do
|
68
68
|
twt = "logstash_ci_publish full tweet test #{Time.now} #{SecureRandom.hex(6)} $AAPL #lscipub @logstash https://www.elastic.co/downloads/logstash"
|
69
69
|
publisher.update_with_media(twt, File.open(LogstashTwitterInput.fixture("small_smile.png")))
|
70
|
-
end.then_after(
|
70
|
+
end.then_after(10, "stop plugin") do
|
71
71
|
plugin.stop
|
72
72
|
true
|
73
73
|
end.value
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-twitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -35,7 +35,7 @@ dependencies:
|
|
35
35
|
requirements:
|
36
36
|
- - '='
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
38
|
+
version: 6.2.0
|
39
39
|
name: twitter
|
40
40
|
prerelease: false
|
41
41
|
type: :runtime
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - '='
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
46
|
+
version: 6.2.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
requirements:
|
@@ -172,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
172
|
requirements:
|
173
173
|
- - ">="
|
174
174
|
- !ruby/object:Gem::Version
|
175
|
-
version:
|
175
|
+
version: 2.1.0
|
176
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - ">="
|