fluent-plugin-http 0.4.2 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 06eb1f3844b3acb3defcd95799816b80407ec3fc
4
- data.tar.gz: 560e89a57bb879563d10106738e26ebdc3a33679
2
+ SHA256:
3
+ metadata.gz: 728702ac71e92c7912c589f5ea21c32ec6b4e824477051f158cfd0828b300a25
4
+ data.tar.gz: 24f01adfe8074a1d76e693df7f39e6b359ab93e241b9abd18959f373dd61ca4b
5
5
  SHA512:
6
- metadata.gz: ec9675ab52b62d921e94d8c2a10bf2c9b14b8808cb606d648d23c64678b22471b243d9275165d562c22cb63ab883b37008395f31af048e507a41e57aeb4fbd3e
7
- data.tar.gz: 0ed6223fcd2c1afb7adfa16c7d9a8d8277e9dc8ee4e7eb2fee6ad97be7bab75e33bde5c297a56ca56a44aa3bc905a3632b89ad7e4801fe225ffd38b940a29815
6
+ metadata.gz: 8435f519f8f21745ff6a6dcd690166af709ebd2513dd5318fc97342f9f9f9d241fb61774b3192a567111d1c3b91aa848ea25a5e5a37397647cb2334493de6d37
7
+ data.tar.gz: 340993979eaab93b449a57b995b0584f9e14fd652cc9a397f7a8e89ce49af048630761f10e2344c1a15fcc7653cc7cf69f78d0c4d3327c0bdeff0d136f0c4a45
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ 5�K��\�}J'(��uX�
2
+ �)zC7jQ� �e����|jmi�~J6�?ۅ�Of1��p�|����i�r���03�q���E���������Y�_�nG������O��\:��i{�2���_�.�b�$$�n��2�`+b��/Tou`g����D���8���v�u�+k��K�г��_����q�An��l`~k��@"ۙ�+n��4�b�����W`p�J0���\�Q+�R΋ �$���g��g���ꡱ
data.tar.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ J��<�'��'�}&����Cg]N듚}�m�f����k�2�7�MS+�3%��Q�#�2��%�۪5o�mݞ7�v#�D8�T�G�t����� �xʑ�F �5w�e\u��b
2
+ ^��T���|>DB&Lr��[���3�a���s�D���1������̍L9��smѵ��asx�j����9{Be�zC=1��碔�
3
+ �6��"��h�l��]���,�X�����$��v[�y��_���t�˄�6��?��IiY:3�
@@ -8,7 +8,7 @@ require 'uri'
8
8
  # Fluentd
9
9
  module Fluent
10
10
  # The out_http buffered output plugin sends event records via HTTP.
11
- class HTTPOutput < ObjectBufferedOutput
11
+ class HTTPOutput < ObjectBufferedOutput # rubocop:disable Metrics/ClassLength
12
12
  Fluent::Plugin.register_output('http', self)
13
13
 
14
14
  desc 'URL to send event records to'
@@ -20,6 +20,15 @@ module Fluent
20
20
  desc 'Authorization token'
21
21
  config_param :authorization_token, :string, default: nil, secret: true
22
22
 
23
+ desc 'Keep-alive timeout'
24
+ config_param :keep_alive_timeout, :float, default: 60.0
25
+
26
+ desc 'Basic auth username'
27
+ config_param :username, :string, default: nil
28
+
29
+ desc 'Basic auth password'
30
+ config_param :password, :string, default: nil, secret: true
31
+
23
32
  def initialize
24
33
  require 'fluent/plugin/http/error'
25
34
 
@@ -36,16 +45,9 @@ module Fluent
36
45
  @url = validate_url(url)
37
46
  @accept_status_code = validate_accept_status_code(accept_status_code)
38
47
  @authorization_token = validate_authorization_token(authorization_token)
39
- end
40
-
41
- # Hook method that is called at the startup
42
- #
43
- # @return void
44
- def start
45
- super
46
-
47
- is_https = url.scheme == 'https'
48
- @http = Net::HTTP.start(url.host, url.port, use_ssl: is_https)
48
+ @keep_alive_timeout = validate_keep_alive_timeout(keep_alive_timeout)
49
+ @username = validate_username(username)
50
+ @password = validate_password(password)
49
51
  end
50
52
 
51
53
  # Hook method that is called at the shutdown
@@ -54,7 +56,7 @@ module Fluent
54
56
  def shutdown
55
57
  super
56
58
 
57
- http.finish
59
+ disconnect
58
60
  end
59
61
 
60
62
  # Serializes the event
@@ -73,6 +75,8 @@ module Fluent
73
75
  # formatted events
74
76
  # @return void
75
77
  def write(chunk)
78
+ return if chunk.empty?
79
+
76
80
  records = []
77
81
 
78
82
  chunk.msgpack_each do |tag_time_record|
@@ -80,31 +84,43 @@ module Fluent
80
84
  end
81
85
 
82
86
  post_records = post_records_request(records)
83
- response = http.request(post_records)
87
+ response = connect.request(post_records)
84
88
 
85
89
  return if accept_status_code.include?(response.code)
90
+
86
91
  raise ResponseError.error(post_records, response)
87
92
  end
88
93
 
89
94
  private
90
95
 
91
- attr_reader :http
96
+ def connect
97
+ @http ||= Net::HTTP.start(
98
+ url.host,
99
+ url.port,
100
+ use_ssl: url.scheme == 'https',
101
+ keep_alive_timeout: keep_alive_timeout
102
+ )
103
+ end
92
104
 
93
- JSON_MIME_TYPE = 'application/json'
94
- USER_AGENT = 'FluentPluginHTTP'
105
+ def disconnect
106
+ return unless defined?(@http)
107
+ return unless @http
95
108
 
96
- private_constant :USER_AGENT, :JSON_MIME_TYPE
109
+ @http.finish
110
+ end
97
111
 
98
112
  def post_records_request(records)
99
113
  Net::HTTP::Post.new(url).tap do |request|
100
114
  request.body = Oj.dump(records)
101
115
 
102
- request.content_type = JSON_MIME_TYPE
103
- request['User-Agent'] = USER_AGENT
116
+ request.content_type = 'application/json'
117
+ request['User-Agent'] = 'FluentPluginHTTP'
104
118
 
105
119
  if authorization_token
106
120
  request['Authorization'] = "Token token=#{authorization_token}"
107
121
  end
122
+
123
+ request.basic_auth(username, password) if username
108
124
  end
109
125
  end
110
126
 
@@ -114,8 +130,8 @@ module Fluent
114
130
 
115
131
  raise Fluent::ConfigError,
116
132
  "Unacceptable URL scheme, expected HTTP or HTTPs: #{test_url}"
117
- rescue URI::InvalidURIError => invalid_uri_error
118
- raise Fluent::ConfigError, invalid_uri_error
133
+ rescue URI::InvalidURIError => e
134
+ raise Fluent::ConfigError, e
119
135
  end
120
136
 
121
137
  def validate_accept_status_code(status_codes)
@@ -139,5 +155,30 @@ module Fluent
139
155
 
140
156
  raise Fluent::ConfigError, "Invalid authorization token: #{value.inspect}"
141
157
  end
158
+
159
+ def validate_keep_alive_timeout(value)
160
+ return value if value >= 0
161
+
162
+ raise Fluent::ConfigError, "Invalid keep-alive timeout: #{value.inspect}"
163
+ end
164
+
165
+ def validate_username(value)
166
+ return value if value.nil?
167
+
168
+ if authorization_token
169
+ raise Fluent::ConfigError,
170
+ 'Mutually exclusive: authorization_token and username'
171
+ end
172
+
173
+ return value unless value.empty?
174
+
175
+ raise Fluent::ConfigError, "Invalid username: #{value.inspect}"
176
+ end
177
+
178
+ def validate_password(value)
179
+ return value if value.nil? || username
180
+
181
+ raise Fluent::ConfigError, 'Password requires a username'
182
+ end
142
183
  end
143
184
  end
metadata CHANGED
@@ -1,85 +1,104 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2017-05-16 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIC6DCCAdCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAaMRgwFgYDVQQDDA9lZmly
14
+ L0RDPXNveWxlbnQwHhcNMjEwNTE4MDExNjEzWhcNMjIwNTE4MDExNjEzWjAaMRgw
15
+ FgYDVQQDDA9lZmlyL0RDPXNveWxlbnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
16
+ ggEKAoIBAQC2DMbzgA39U+3VTMjXn+0jnOQyLdmXQ5EXgSLKCgBLIcFTc9J47Th0
17
+ 7Yb/f4RzWh49/EkDBiDtLqFeKBYsj3q0e8tRCAs32NtVyl/4FDyJvWsK3R2tcXOV
18
+ qxs48J3CgG+rFLOcMC9YF4FPTkz4p3EYGFVjZTbiqyVVuIZzWtrwdZesBVgpBRyN
19
+ 8sEyNoi8vcDiOmEwf9/TVMTDf/wu6a+i3LNVGYWlvgMJRssaAnj/IbFFtPTz30Hx
20
+ eTUdfJu8YbwRspfFzcJGLf32E7vXfmHHqNzqjh4zD9sVpvTHbqLLsgVa+nYHPHAe
21
+ dzSZ5gZjG1oZ7hZDCJoEPj0oCHT0qkuXAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYD
22
+ VR0PBAQDAgSwMB0GA1UdDgQWBBSsvp1HAfA+QTjOg/ehyhv7adp0FjANBgkqhkiG
23
+ 9w0BAQsFAAOCAQEAjdz9WfpI7CU4stw8NK9ODdOKaKiCi+TSQWjolHf6DA0i/KsK
24
+ km3z/fDViF+kfG6YOdtxTPEyua0hzeIPUVYrA/u8gnzc0Q/qaW5OS86T7Kfou7Gq
25
+ BtuQbYgD/X+k62pFijR8VmK/5MCkzGzkNIzhiWnoNsGBIlbviSYYrSOY8HX/3AII
26
+ byLjhl7M3heb8m5jF+4jgXJfAOs6gtAYibX3YKrplewpJ3zd+7ebIXcHnob4UODK
27
+ WuleLMzqh7WrqMwrLkhSEnyo36OS8fZBNr8WPYAFpsz0z5TbR/8ymGAXobU87DdV
28
+ J4zDM21+9T3I6Jzw8TrlaRx7kUytTRxVgjqPlA==
29
+ -----END CERTIFICATE-----
30
+ date: 2021-05-18 00:00:00.000000000 Z
12
31
  dependencies:
13
32
  - !ruby/object:Gem::Dependency
14
33
  name: fluentd
15
34
  requirement: !ruby/object:Gem::Requirement
16
35
  requirements:
17
- - - "~>"
36
+ - - ">="
18
37
  - !ruby/object:Gem::Version
19
38
  version: '0.12'
20
39
  type: :runtime
21
40
  prerelease: false
22
41
  version_requirements: !ruby/object:Gem::Requirement
23
42
  requirements:
24
- - - "~>"
43
+ - - ">="
25
44
  - !ruby/object:Gem::Version
26
45
  version: '0.12'
27
46
  - !ruby/object:Gem::Dependency
28
47
  name: oj
29
48
  requirement: !ruby/object:Gem::Requirement
30
49
  requirements:
31
- - - ">="
50
+ - - "~>"
32
51
  - !ruby/object:Gem::Version
33
- version: '0'
52
+ version: '3.3'
34
53
  type: :runtime
35
54
  prerelease: false
36
55
  version_requirements: !ruby/object:Gem::Requirement
37
56
  requirements:
38
- - - ">="
57
+ - - "~>"
39
58
  - !ruby/object:Gem::Version
40
- version: '0'
59
+ version: '3.3'
41
60
  - !ruby/object:Gem::Dependency
42
- name: bundler
61
+ name: pry
43
62
  requirement: !ruby/object:Gem::Requirement
44
63
  requirements:
45
- - - "~>"
64
+ - - ">="
46
65
  - !ruby/object:Gem::Version
47
- version: '1.7'
66
+ version: '0'
48
67
  type: :development
49
68
  prerelease: false
50
69
  version_requirements: !ruby/object:Gem::Requirement
51
70
  requirements:
52
- - - "~>"
71
+ - - ">="
53
72
  - !ruby/object:Gem::Version
54
- version: '1.7'
73
+ version: '0'
55
74
  - !ruby/object:Gem::Dependency
56
75
  name: rake
57
76
  requirement: !ruby/object:Gem::Requirement
58
77
  requirements:
59
- - - "~>"
78
+ - - ">="
60
79
  - !ruby/object:Gem::Version
61
- version: '11.3'
80
+ version: '0'
62
81
  type: :development
63
82
  prerelease: false
64
83
  version_requirements: !ruby/object:Gem::Requirement
65
84
  requirements:
66
- - - "~>"
85
+ - - ">="
67
86
  - !ruby/object:Gem::Version
68
- version: '11.3'
87
+ version: '0'
69
88
  - !ruby/object:Gem::Dependency
70
- name: pry
89
+ name: rubocop
71
90
  requirement: !ruby/object:Gem::Requirement
72
91
  requirements:
73
92
  - - "~>"
74
93
  - !ruby/object:Gem::Version
75
- version: '0.10'
94
+ version: 0.57.0
76
95
  type: :development
77
96
  prerelease: false
78
97
  version_requirements: !ruby/object:Gem::Requirement
79
98
  requirements:
80
99
  - - "~>"
81
100
  - !ruby/object:Gem::Version
82
- version: '0.10'
101
+ version: 0.57.0
83
102
  - !ruby/object:Gem::Dependency
84
103
  name: test-unit
85
104
  requirement: !ruby/object:Gem::Requirement
@@ -108,33 +127,19 @@ dependencies:
108
127
  - - "~>"
109
128
  - !ruby/object:Gem::Version
110
129
  version: '2.1'
111
- - !ruby/object:Gem::Dependency
112
- name: rubocop
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.45'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.45'
125
- description:
126
- email:
130
+ description:
131
+ email:
127
132
  executables: []
128
133
  extensions: []
129
134
  extra_rdoc_files: []
130
135
  files:
131
136
  - lib/fluent/plugin/http/error.rb
132
137
  - lib/fluent/plugin/out_http.rb
133
- homepage:
138
+ homepage: https://github.com/soylent/fluent-plugin-http
134
139
  licenses:
135
140
  - Apache-2.0
136
141
  metadata: {}
137
- post_install_message:
142
+ post_install_message:
138
143
  rdoc_options: []
139
144
  require_paths:
140
145
  - lib
@@ -142,16 +147,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
147
  requirements:
143
148
  - - ">="
144
149
  - !ruby/object:Gem::Version
145
- version: '0'
150
+ version: '2.1'
151
+ - - "<"
152
+ - !ruby/object:Gem::Version
153
+ version: '4'
146
154
  required_rubygems_version: !ruby/object:Gem::Requirement
147
155
  requirements:
148
156
  - - ">="
149
157
  - !ruby/object:Gem::Version
150
158
  version: '0'
151
159
  requirements: []
152
- rubyforge_project:
153
- rubygems_version: 2.6.8
154
- signing_key:
160
+ rubygems_version: 3.2.3
161
+ signing_key:
155
162
  specification_version: 4
156
- summary: Fluentd output plugin that sends event records via HTTP
163
+ summary: Fluentd output plugin to send logs to an HTTP endpoint
157
164
  test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ ^S��g<!b,�M��CE\���e����z��>�p"&x��)ŋ%���d��IZ�*��6�� {3�_���� ��� ?^�@�;���Y莲`ü��Ov�H��i��F���(���