fastly_nsq 1.17.0 → 1.17.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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.git-blame-ignore-revs +6 -0
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +4 -2
  5. data/ChangeLog.md +8 -1
  6. data/Gemfile +8 -8
  7. data/README.md +1 -1
  8. data/Rakefile +10 -11
  9. data/fastly_nsq.gemspec +26 -26
  10. data/lib/fastly_nsq/cli.rb +43 -50
  11. data/lib/fastly_nsq/consumer.rb +6 -6
  12. data/lib/fastly_nsq/feeder.rb +5 -7
  13. data/lib/fastly_nsq/http/nsqd.rb +28 -28
  14. data/lib/fastly_nsq/http/nsqlookupd.rb +11 -11
  15. data/lib/fastly_nsq/http.rb +4 -4
  16. data/lib/fastly_nsq/launcher.rb +16 -16
  17. data/lib/fastly_nsq/listener.rb +16 -16
  18. data/lib/fastly_nsq/manager.rb +13 -12
  19. data/lib/fastly_nsq/message.rb +4 -4
  20. data/lib/fastly_nsq/messenger.rb +7 -7
  21. data/lib/fastly_nsq/new_relic.rb +8 -8
  22. data/lib/fastly_nsq/priority_queue.rb +2 -2
  23. data/lib/fastly_nsq/priority_thread_pool.rb +3 -3
  24. data/lib/fastly_nsq/producer.rb +7 -7
  25. data/lib/fastly_nsq/safe_thread.rb +1 -1
  26. data/lib/fastly_nsq/testing.rb +4 -3
  27. data/lib/fastly_nsq/tls_options.rb +6 -6
  28. data/lib/fastly_nsq/version.rb +1 -1
  29. data/lib/fastly_nsq.rb +27 -29
  30. data/spec/cli_spec.rb +2 -2
  31. data/spec/consumer_spec.rb +12 -12
  32. data/spec/fastly_nsq_spec.rb +31 -31
  33. data/spec/feeder_spec.rb +4 -4
  34. data/spec/http/nsqd_spec.rb +23 -23
  35. data/spec/http/nsqlookupd_spec.rb +19 -19
  36. data/spec/http_spec.rb +22 -22
  37. data/spec/integration_spec.rb +10 -10
  38. data/spec/launcher_spec.rb +21 -21
  39. data/spec/listener_spec.rb +50 -50
  40. data/spec/manager_spec.rb +27 -27
  41. data/spec/matchers/delegate.rb +4 -4
  42. data/spec/message_spec.rb +19 -19
  43. data/spec/messenger_spec.rb +63 -64
  44. data/spec/new_relic.rb +27 -27
  45. data/spec/priority_thread_pool_spec.rb +2 -2
  46. data/spec/producer_spec.rb +30 -30
  47. data/spec/spec_helper.rb +12 -12
  48. data/spec/support/http.rb +2 -2
  49. data/spec/support/webmock.rb +1 -1
  50. data/spec/testing_spec.rb +12 -12
  51. data/spec/tls_options_spec.rb +47 -47
  52. metadata +7 -8
  53. data/.rubocop.yml +0 -68
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a0de08856671c960970c164a3b95efdaef29bfb05ba2c8282cbc81d0e3d8282
4
- data.tar.gz: bb52cbe4e13ca5bce686409eb20c7f13fd1975f41da73cc14a231a94d737a80c
3
+ metadata.gz: 6973f2a953a18f9f5b63d6e7225c94264f56485b4632a409c820b5b61f91b050
4
+ data.tar.gz: 1a8f39f1085191666a6ebccff53a8c6f691fad4770bea6a48affc8f7998a878b
5
5
  SHA512:
6
- metadata.gz: 71ed32139074cf89fdb848675df2b52a9a62dc76d3a9027f78620c9656791c580e2132a4ab06bbdcfe726c42a7b22e54b85c5fe3096cbcfbe4a32ee68c8cf9e8
7
- data.tar.gz: fc1b312239fa56c20f49e37dbf999b8decedff1532b1882be3358e524ff14cdc4e0091c727f1ac11d378cb71ba8112dab61fc0736dd9db063baa11cfc6f4f674
6
+ metadata.gz: da7997c5cdc6b8cb7d5feeacb0feab24c062076c92b8a3b23ddb49416d5a1fe57d0c241a68b20b5aed15c3a2c6cad89015557268dd2827fa49a7c63236de6300
7
+ data.tar.gz: 007a732d613f15d099e28f301db5537d35cfe7675d45f46946526eb275b5196496520a1b2f0aaf3c011414b0b55eafa19218f5f71cf6a9fb42ea59678fc11b1b
@@ -0,0 +1,6 @@
1
+ 25bc1d8cd908a86e8f7536192541a0d3b66f07db
2
+ 7c4cf244c4586d3bd280fee7909b6bcabda34998
3
+ 2e09ec7d8205b3ed3c2093777ae5382723919787
4
+ 5381db0ed1493235a7095a51cdbd67b88caa47d2
5
+ d77aee840f7affb6ccdeb3748e0c50ccea96f7ef
6
+ ca9a1aa122ead418879ecb6a104fb61054fe675e
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.1
1
+ 3.0.3
data/.travis.yml CHANGED
@@ -2,13 +2,15 @@ language: ruby
2
2
  cache: bundler
3
3
  sudo: false
4
4
  rvm:
5
- - 2.4.2
6
- - 2.5.1
5
+ - 2.6.9
6
+ - 2.7.5
7
+ - 3.0.3
7
8
  script:
8
9
  - bundle exec rake
9
10
  services:
10
11
  - docker
11
12
  before_install:
13
+ - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
12
14
  - docker-compose up -d
13
15
  before_script:
14
16
  - gem update --system
data/ChangeLog.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Change Log
2
2
 
3
+ ## [v1.17.1](https://github.com/fastly/fastly_nsq/tree/v1.17.1) (2022-02-23)
4
+ [Full Changelog](https://github.com/fastly/fastly_nsq/compare/v1.17.0...v1.17.1)
5
+
6
+ **Merged pull requests:**
7
+
8
+ - Use standardrb for style and formatting [\#104](https://github.com/fastly/fastly_nsq/pull/104)
9
+
3
10
  ## [v1.17.0](https://github.com/fastly/fastly_nsq/tree/v1.17.0) (2021-02-11)
4
11
  [Full Changelog](https://github.com/fastly/fastly_nsq/compare/v1.16.0...v1.17.0)
5
12
 
@@ -447,4 +454,4 @@
447
454
  ## [v0.0.1](https://github.com/fastly/fastly_nsq/tree/v0.0.1) (2016-01-30)
448
455
 
449
456
 
450
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
457
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
data/Gemfile CHANGED
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source 'https://rubygems.org'
3
+ source "https://rubygems.org"
4
4
 
5
5
  gemspec
6
6
 
7
- gem 'bundler-audit'
8
- gem 'newrelic_rpm', require: false
9
- gem 'overcommit', '~> 0.32.0'
10
- gem 'rake'
11
- gem 'rdoc'
12
- gem 'rubocop', '~> 0.51.0'
13
- gem 'rubygems-tasks', '~> 0.2'
7
+ gem "bundler-audit"
8
+ gem "newrelic_rpm", require: false
9
+ gem "overcommit", "~> 0.32.0"
10
+ gem "rake"
11
+ gem "rdoc"
12
+ gem "standard"
13
+ gem "rubygems-tasks", "~> 0.2"
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # fastly_nsq [![Build Status](https://travis-ci.org/fastly/fastly_nsq.svg?branch=master)](https://travis-ci.org/fastly/fastly_nsq)
1
+ # fastly_nsq [![Build Status](https://travis-ci.org/fastly/fastly_nsq.svg?branch=main)](https://travis-ci.org/fastly/fastly_nsq)
2
2
 
3
3
  NSQ adapter and testing objects
4
4
  for using the NSQ messaging system
data/Rakefile CHANGED
@@ -1,28 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rubygems'
3
+ require "rubygems"
4
4
 
5
5
  begin
6
- require 'bundler/setup'
6
+ require "bundler/setup"
7
7
  rescue LoadError => e
8
8
  abort e.message
9
9
  end
10
10
 
11
- require 'rake'
11
+ require "rake"
12
12
 
13
- require 'rubygems/tasks'
13
+ require "rubygems/tasks"
14
14
  Gem::Tasks.new
15
15
 
16
- require 'rdoc/task'
16
+ require "rdoc/task"
17
17
  RDoc::Task.new
18
18
  task doc: :rdoc
19
19
 
20
- require 'rspec/core/rake_task'
20
+ require "rspec/core/rake_task"
21
21
  RSpec::Core::RakeTask.new(:spec)
22
22
 
23
- require 'bundler/audit/cli'
23
+ require "bundler/audit/cli"
24
24
  namespace :bundler do
25
- desc 'Updates the ruby-advisory-db and runs audit'
25
+ desc "Updates the ruby-advisory-db and runs audit"
26
26
  task :audit do
27
27
  %w[update check].each do |command|
28
28
  Bundler::Audit::CLI.start [command]
@@ -30,8 +30,7 @@ namespace :bundler do
30
30
  end
31
31
  end
32
32
 
33
- require 'rubocop/rake_task'
34
- RuboCop::RakeTask.new
33
+ require "standard/rake"
35
34
 
36
35
  task(:default).clear
37
- task default: ['spec', 'rubocop', 'bundler:audit']
36
+ task default: ["spec", "standard", "bundler:audit"]
data/fastly_nsq.gemspec CHANGED
@@ -1,36 +1,36 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path("../lib", __FILE__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'fastly_nsq/version'
5
+ require "fastly_nsq/version"
6
6
 
7
7
  Gem::Specification.new do |gem|
8
- gem.name = 'fastly_nsq'
9
- gem.version = FastlyNsq::VERSION
10
- gem.summary = 'Fastly NSQ Adapter'
11
- gem.description = "Helper classes for Fastly's NSQ Services"
12
- gem.license = 'MIT'
13
- gem.authors = ["Tommy O'Neil", 'Adarsh Pandit', 'Joshua Wehner', 'Lukas Eklund', 'Josh Lane', 'Hassan Shahid']
14
- gem.email = 'tommy@fastly.com'
15
- gem.homepage = 'https://github.com/fastly/fastly_nsq'
8
+ gem.name = "fastly_nsq"
9
+ gem.version = FastlyNsq::VERSION
10
+ gem.summary = "Fastly NSQ Adapter"
11
+ gem.description = "Helper classes for Fastly's NSQ Services"
12
+ gem.license = "MIT"
13
+ gem.authors = ["Tommy O'Neil", "Adarsh Pandit", "Joshua Wehner", "Lukas Eklund", "Josh Lane", "Hassan Shahid"]
14
+ gem.email = "tommy@fastly.com"
15
+ gem.homepage = "https://github.com/fastly/fastly_nsq"
16
16
 
17
- gem.files = `git ls-files`.split("\n")
17
+ gem.files = `git ls-files`.split("\n")
18
18
 
19
- gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
20
- gem.test_files = gem.files.grep(%r{^(test|features)/})
21
- gem.require_paths = ['lib']
19
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
20
+ gem.test_files = gem.files.grep(%r{^(test|features)/})
21
+ gem.require_paths = ["lib"]
22
22
 
23
- gem.add_development_dependency 'awesome_print', '~> 1.6'
24
- gem.add_development_dependency 'bundler'
25
- gem.add_development_dependency 'dotenv'
26
- gem.add_development_dependency 'pry-byebug', '~> 3.3'
27
- gem.add_development_dependency 'rspec', '~> 3.4'
28
- gem.add_development_dependency 'rspec-eventually', '0.2'
29
- gem.add_development_dependency 'timecop'
30
- gem.add_development_dependency 'webmock', '~> 3.0'
31
- gem.add_development_dependency 'yard'
23
+ gem.add_development_dependency "awesome_print", "~> 1.6"
24
+ gem.add_development_dependency "bundler"
25
+ gem.add_development_dependency "dotenv"
26
+ gem.add_development_dependency "pry-byebug", "~> 3.3"
27
+ gem.add_development_dependency "rspec", "~> 3.4"
28
+ gem.add_development_dependency "rspec-eventually", "0.2"
29
+ gem.add_development_dependency "timecop"
30
+ gem.add_development_dependency "webmock", "~> 3.0"
31
+ gem.add_development_dependency "yard"
32
32
 
33
- gem.add_dependency 'concurrent-ruby', '~> 1.0'
34
- gem.add_dependency 'nsq-ruby', '~> 2.3'
35
- gem.add_dependency 'priority_queue_cxx', '~> 0.3'
33
+ gem.add_dependency "concurrent-ruby", "~> 1.0"
34
+ gem.add_dependency "nsq-ruby-fastly", "~> 2.4"
35
+ gem.add_dependency "priority_queue_cxx", "~> 0.3"
36
36
  end
@@ -1,14 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rubocop:disable Metrics/ClassLength
4
3
  $stdout.sync = true
5
4
 
6
- require 'fastly_nsq'
7
- require 'fastly_nsq/launcher'
8
- require 'fastly_nsq/manager'
9
- require 'fileutils'
10
- require 'optparse'
11
- require 'singleton'
5
+ require "fastly_nsq"
6
+ require "fastly_nsq/launcher"
7
+ require "fastly_nsq/manager"
8
+ require "fileutils"
9
+ require "optparse"
10
+ require "singleton"
12
11
 
13
12
  # Provides functionality to support running FastlyNsq as a command line
14
13
  # application that listens and processes NSQ messages.
@@ -44,26 +43,24 @@ class FastlyNsq::CLI
44
43
 
45
44
  read_loop
46
45
  rescue Interrupt
47
- FastlyNsq.logger.info 'Shutting down'
46
+ FastlyNsq.logger.info "Shutting down"
48
47
  launcher.stop
49
48
  # Explicitly exit so busy Processor threads can't block
50
49
  # process shutdown.
51
- FastlyNsq.logger.info 'Bye!'
50
+ FastlyNsq.logger.info "Bye!"
52
51
  exit(0)
53
52
  end
54
53
 
55
54
  private
56
55
 
57
56
  def launcher
58
- @launcher ||= FastlyNsq::Launcher.new(options)
57
+ @launcher ||= FastlyNsq::Launcher.new(**options)
59
58
  end
60
59
 
61
60
  def read_loop
62
61
  trapped_read_io = trap_signals
63
- loop do
64
- readable_io = IO.select([trapped_read_io])
65
- break unless readable_io
66
- signal = readable_io.first[0].gets.strip
62
+ while trapped_read_io.wait_readable
63
+ signal = trapped_read_io.gets.strip
67
64
  handle_signal signal
68
65
  end
69
66
  end
@@ -72,51 +69,51 @@ class FastlyNsq::CLI
72
69
  boot_rails
73
70
  require options[:require] if options[:require]
74
71
  FastlyNsq.logger.info "Running in #{RUBY_DESCRIPTION}"
75
- FastlyNsq.logger.info 'Starting processing, hit Ctrl-C to stop' unless options[:daemon]
72
+ FastlyNsq.logger.info "Starting processing, hit Ctrl-C to stop" unless options[:daemon]
76
73
  end
77
74
 
78
75
  def boot_rails
79
- return unless ENV['RAILS_ENV']
76
+ return unless ENV["RAILS_ENV"]
80
77
 
81
- require 'rails'
82
- require File.expand_path('./config/application.rb')
83
- require File.expand_path('./config/environment.rb')
78
+ require "rails"
79
+ require File.expand_path("./config/application.rb")
80
+ require File.expand_path("./config/environment.rb")
84
81
  end
85
82
 
86
83
  def parse(args)
87
84
  opts = {}
88
85
 
89
86
  @parser = OptionParser.new do |o|
90
- o.on '-c', '--concurrency COUNT', 'Number of threads used to process messages' do |arg|
87
+ o.on "-c", "--concurrency COUNT", "Number of threads used to process messages" do |arg|
91
88
  opts[:max_threads] = arg
92
89
  end
93
90
 
94
- o.on '-d', '--daemon', 'Daemonize process' do |arg|
91
+ o.on "-d", "--daemon", "Daemonize process" do |arg|
95
92
  opts[:daemonize] = arg
96
93
  end
97
94
 
98
- o.on '-L', '--logfile PATH', 'path to writable logfile' do |arg|
95
+ o.on "-L", "--logfile PATH", "path to writable logfile" do |arg|
99
96
  opts[:logfile] = arg
100
97
  end
101
98
 
102
- o.on '-P', '--pidfile PATH', 'path to pidfile' do |arg|
99
+ o.on "-P", "--pidfile PATH", "path to pidfile" do |arg|
103
100
  opts[:pidfile] = arg
104
101
  end
105
102
 
106
- o.on '-r', '--require [PATH|DIR]', 'Location of message_processor definition' do |arg|
103
+ o.on "-r", "--require [PATH|DIR]", "Location of message_processor definition" do |arg|
107
104
  opts[:require] = arg
108
105
  end
109
106
 
110
- o.on '-v', '--verbose', 'enable verbose logging output' do |arg|
107
+ o.on "-v", "--verbose", "enable verbose logging output" do |arg|
111
108
  opts[:verbose] = arg
112
109
  end
113
110
 
114
- o.on '-t', '--timeout SECONDS', 'shutdown deadline timeout' do |arg|
111
+ o.on "-t", "--timeout SECONDS", "shutdown deadline timeout" do |arg|
115
112
  opts[:timeout] = arg
116
113
  end
117
114
  end
118
115
 
119
- @parser.banner = 'fastly_nsq [options]'
116
+ @parser.banner = "fastly_nsq [options]"
120
117
  @parser.parse!(args)
121
118
 
122
119
  @options = opts
@@ -171,13 +168,11 @@ class FastlyNsq::CLI
171
168
  sigs = %w[INT TERM TTIN USR1]
172
169
 
173
170
  sigs.each do |sig|
174
- begin
175
- trap sig do
176
- self_write.puts(sig)
177
- end
178
- rescue ArgumentError
179
- puts "Signal #{sig} not supported"
171
+ trap sig do
172
+ self_write.puts(sig)
180
173
  end
174
+ rescue ArgumentError
175
+ puts "Signal #{sig} not supported"
181
176
  end
182
177
  self_read
183
178
  end
@@ -185,28 +180,28 @@ class FastlyNsq::CLI
185
180
  def handle_signal(sig)
186
181
  FastlyNsq.logger.debug "Got #{sig} signal"
187
182
  case sig
188
- when 'INT'
183
+ when "INT"
189
184
  # Handle Ctrl-C in JRuby like MRI
190
185
  # http://jira.codehaus.org/browse/JRUBY-4637
191
186
  raise Interrupt
192
- when 'TERM'
187
+ when "TERM"
193
188
  # Heroku sends TERM and then waits 10 seconds for process to exit.
194
189
  raise Interrupt
195
- when 'USR1'
196
- FastlyNsq.logger.info 'Received USR1, no longer accepting new work'
190
+ when "USR1"
191
+ FastlyNsq.logger.info "Received USR1, no longer accepting new work"
197
192
  launcher.stop_listeners
198
- when 'TTIN'
193
+ when "TTIN"
199
194
  handle_ttin
200
195
  end
201
196
  end
202
197
 
203
198
  def handle_ttin
204
199
  Thread.list.each do |thread|
205
- FastlyNsq.logger.warn "Thread TID-#{thread.object_id.to_s(36)} #{thread['fastly_nsq_label']}"
200
+ FastlyNsq.logger.warn "Thread TID-#{thread.object_id.to_s(36)} #{thread["fastly_nsq_label"]}"
206
201
  if thread.backtrace
207
202
  FastlyNsq.logger.warn thread.backtrace.join("\n")
208
203
  else
209
- FastlyNsq.logger.warn '<no backtrace available>'
204
+ FastlyNsq.logger.warn "<no backtrace available>"
210
205
  end
211
206
  end
212
207
  end
@@ -224,26 +219,24 @@ class FastlyNsq::CLI
224
219
  reopen(files_to_reopen)
225
220
 
226
221
  [$stdout, $stderr].each do |io|
227
- File.open(options.fetch(:logfile, '/dev/null'), 'ab') do |f|
222
+ File.open(options.fetch(:logfile, "/dev/null"), "ab") do |f|
228
223
  io.reopen(f)
229
224
  end
230
225
  io.sync = true
231
226
  end
232
- $stdin.reopen('/dev/null')
227
+ $stdin.reopen("/dev/null")
233
228
 
234
229
  setup_logger
235
230
  end
236
231
 
237
232
  def reopen(files)
238
233
  files.each do |file|
239
- begin
240
- file.reopen file.path, 'a+'
241
- file.sync = true
242
- rescue IOError => e
243
- FastlyNsq.logger.warn "IOError reopening file: #{e.message}"
244
- rescue StandardError => e
245
- FastlyNsq.logger.error "Non IOError reopening file: #{e.message}"
246
- end
234
+ file.reopen file.path, "a+"
235
+ file.sync = true
236
+ rescue IOError => e
237
+ FastlyNsq.logger.warn "IOError reopening file: #{e.message}"
238
+ rescue => e
239
+ FastlyNsq.logger.error "Non IOError reopening file: #{e.message}"
247
240
  end
248
241
  end
249
242
 
@@ -78,11 +78,11 @@ class FastlyNsq::Consumer
78
78
  # channel: 'channel'
79
79
  # )
80
80
  def initialize(topic:, channel:, queue: nil, tls_options: nil, connect_timeout: DEFAULT_CONNECTION_TIMEOUT, max_attempts: FastlyNsq.max_attempts, **options)
81
- @topic = topic
82
- @channel = channel
83
- @tls_options = FastlyNsq::TlsOptions.as_hash(tls_options)
81
+ @topic = topic
82
+ @channel = channel
83
+ @tls_options = FastlyNsq::TlsOptions.as_hash(tls_options)
84
84
  @connect_timeout = connect_timeout
85
- @max_attempts = max_attempts
85
+ @max_attempts = max_attempts
86
86
 
87
87
  @connection = connect(queue, **options)
88
88
  end
@@ -106,8 +106,8 @@ class FastlyNsq::Consumer
106
106
  channel: channel,
107
107
  queue: queue,
108
108
  max_attempts: max_attempts,
109
- **options,
110
- }.merge(tls_options),
109
+ **options
110
+ }.merge(tls_options)
111
111
  )
112
112
  end
113
113
  end
@@ -36,13 +36,11 @@ class FastlyNsq::Feeder
36
36
  # @see Nsq::Connection#read_loop
37
37
  def push(message)
38
38
  FastlyNsq.manager.pool.post(priority) do
39
- begin
40
- processor.call(message)
41
- rescue => ex
42
- FastlyNsq.logger.error ex
43
- FastlyNsq.tracer.notice_error ex
44
- raise ex
45
- end
39
+ processor.call(message)
40
+ rescue => ex
41
+ FastlyNsq.logger.error ex
42
+ FastlyNsq.tracer.notice_error ex
43
+ raise ex
46
44
  end
47
45
  end
48
46
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fastly_nsq/http'
3
+ require "fastly_nsq/http"
4
4
 
5
5
  class FastlyNsq::Http
6
6
  ##
@@ -13,11 +13,11 @@ class FastlyNsq::Http
13
13
  def_delegator :client, :get
14
14
  def_delegator :client, :post
15
15
 
16
- BASE_NSQD_URL = ENV.fetch('NSQD_URL') do
17
- if ENV['NSQD_HTTPS_ADDRESS']
18
- "https://#{ENV.fetch('NSQD_HTTPS_ADDRESS')}"
16
+ BASE_NSQD_URL = ENV.fetch("NSQD_URL") do
17
+ if ENV["NSQD_HTTPS_ADDRESS"]
18
+ "https://#{ENV.fetch("NSQD_HTTPS_ADDRESS")}"
19
19
  else
20
- "http://#{ENV.fetch('NSQD_HTTP_ADDRESS')}"
20
+ "http://#{ENV.fetch("NSQD_HTTP_ADDRESS")}"
21
21
  end
22
22
  end
23
23
  VALID_FORMATS = %w[text json].freeze
@@ -27,13 +27,13 @@ class FastlyNsq::Http
27
27
  #
28
28
  # NOTE: The only "unhealthy" state is if nsqd failed to write messages to disk when overflow occurred.
29
29
  def self.ping(**args)
30
- new(request_uri: '/ping', **args).get
30
+ new(request_uri: "/ping", **args).get
31
31
  end
32
32
 
33
33
  ##
34
34
  # NSQ version information
35
35
  def self.info(**args)
36
- new(request_uri: '/info', **args).get
36
+ new(request_uri: "/info", **args).get
37
37
  end
38
38
 
39
39
  ##
@@ -47,12 +47,12 @@ class FastlyNsq::Http
47
47
  #
48
48
  # @example Fetch Statistics for topic: 'foo', channel: 'bar' as text
49
49
  # Nsqd.stats(topic: 'foo', channel: 'bar', format: 'text')
50
- def self.stats(topic: nil, channel: nil, format: 'json', **args)
50
+ def self.stats(topic: nil, channel: nil, format: "json", **args)
51
51
  raise InvalidFormatError unless VALID_FORMATS.include?(format)
52
- params = { format: format }
52
+ params = {format: format}
53
53
  params[:topic] = topic if topic
54
54
  params[:channel] = channel if channel
55
- new(request_uri: '/stats', **args).get(params)
55
+ new(request_uri: "/stats", **args).get(params)
56
56
  end
57
57
 
58
58
  ##
@@ -62,9 +62,9 @@ class FastlyNsq::Http
62
62
  # @param defer [String] the time in ms to delay message delivery
63
63
  # @param message the message body
64
64
  def self.pub(topic:, message:, defer: nil, **args)
65
- params = { topic: topic }
65
+ params = {topic: topic}
66
66
  params[:defer] = defer if defer
67
- new(request_uri: '/pub', **args).post(params, message)
67
+ new(request_uri: "/pub", **args).post(params, message)
68
68
  end
69
69
 
70
70
  ##
@@ -83,17 +83,17 @@ class FastlyNsq::Http
83
83
  # @param topic [String] the topic to publish to
84
84
  # @param binary [Boolean] enables binary mode
85
85
  # @param message the messages to send with \n used to seperate messages
86
- def self.mpub(topic:, binary: false, message:, **args)
87
- binary_param = binary ? 'true' : 'false'
88
- raise NotImplementedError, 'binary mode has yet to be implemented' if binary
89
- params = { topic: topic, binary: binary_param }
90
- new(request_uri: '/mpub', **args).post(params, message)
86
+ def self.mpub(topic:, message:, binary: false, **args)
87
+ binary_param = binary ? "true" : "false"
88
+ raise NotImplementedError, "binary mode has yet to be implemented" if binary
89
+ params = {topic: topic, binary: binary_param}
90
+ new(request_uri: "/mpub", **args).post(params, message)
91
91
  end
92
92
 
93
93
  ##
94
94
  # List of nsqlookupd TCP addresses
95
95
  def self.config_nsqlookupd_tcp_addresses(**args)
96
- new(request_uri: '/config/nsqlookupd_tcp_addresses', **args).get
96
+ new(request_uri: "/config/nsqlookupd_tcp_addresses", **args).get
97
97
  end
98
98
 
99
99
  ##
@@ -101,7 +101,7 @@ class FastlyNsq::Http
101
101
  #
102
102
  # @param topic [String] the topic to create
103
103
  def self.topic_create(topic:, **args)
104
- new(request_uri: '/topic/create', **args).post(topic: topic)
104
+ new(request_uri: "/topic/create", **args).post(topic: topic)
105
105
  end
106
106
 
107
107
  ##
@@ -109,7 +109,7 @@ class FastlyNsq::Http
109
109
  #
110
110
  # @param topic [String] the existing topic to delete
111
111
  def self.topic_delete(topic:, **args)
112
- new(request_uri: '/topic/delete', **args).post(topic: topic)
112
+ new(request_uri: "/topic/delete", **args).post(topic: topic)
113
113
  end
114
114
 
115
115
  ##
@@ -117,7 +117,7 @@ class FastlyNsq::Http
117
117
  #
118
118
  # @param topic [String] the existing topic to empty
119
119
  def self.topic_empty(topic:, **args)
120
- new(request_uri: '/topic/empty', **args).post(topic: topic)
120
+ new(request_uri: "/topic/empty", **args).post(topic: topic)
121
121
  end
122
122
 
123
123
  ##
@@ -126,7 +126,7 @@ class FastlyNsq::Http
126
126
  #
127
127
  # @param topic [String] the existing topic to pause
128
128
  def self.topic_pause(topic:, **args)
129
- new(request_uri: '/topic/pause', **args).post(topic: topic)
129
+ new(request_uri: "/topic/pause", **args).post(topic: topic)
130
130
  end
131
131
 
132
132
  ##
@@ -134,7 +134,7 @@ class FastlyNsq::Http
134
134
  #
135
135
  # @param topic [String] the existing, paused topic to unpause
136
136
  def self.topic_unpause(topic:, **args)
137
- new(request_uri: '/topic/unpause', **args).post(topic: topic)
137
+ new(request_uri: "/topic/unpause", **args).post(topic: topic)
138
138
  end
139
139
 
140
140
  ##
@@ -143,7 +143,7 @@ class FastlyNsq::Http
143
143
  # @param topic [String] the existing topic
144
144
  # @param channel [String] the channel to create
145
145
  def self.channel_create(topic:, channel:, **args)
146
- new(request_uri: '/channel/create', **args).post(topic: topic, channel: channel)
146
+ new(request_uri: "/channel/create", **args).post(topic: topic, channel: channel)
147
147
  end
148
148
 
149
149
  ##
@@ -152,7 +152,7 @@ class FastlyNsq::Http
152
152
  # @param topic [String] the existing topic
153
153
  # @param channel [String] the channel to delete
154
154
  def self.channel_delete(topic:, channel:, **args)
155
- new(request_uri: '/channel/delete', **args).post(topic: topic, channel: channel)
155
+ new(request_uri: "/channel/delete", **args).post(topic: topic, channel: channel)
156
156
  end
157
157
 
158
158
  ##
@@ -161,7 +161,7 @@ class FastlyNsq::Http
161
161
  # @param topic [String] the existing topic
162
162
  # @param channel [String] the channel to empty
163
163
  def self.channel_empty(topic:, channel:, **args)
164
- new(request_uri: '/channel/empty', **args).post(topic: topic, channel: channel)
164
+ new(request_uri: "/channel/empty", **args).post(topic: topic, channel: channel)
165
165
  end
166
166
 
167
167
  ##
@@ -171,7 +171,7 @@ class FastlyNsq::Http
171
171
  # @param topic [String] the existing topic
172
172
  # @param channel [String] the channel to pause
173
173
  def self.channel_pause(topic:, channel:, **args)
174
- new(request_uri: '/channel/pause', **args).post(topic: topic, channel: channel)
174
+ new(request_uri: "/channel/pause", **args).post(topic: topic, channel: channel)
175
175
  end
176
176
 
177
177
  ##
@@ -180,7 +180,7 @@ class FastlyNsq::Http
180
180
  # @param topic [String] the existing topic
181
181
  # @param channel [String] the existing, paused, channel to unpause
182
182
  def self.channel_unpause(topic:, channel:, **args)
183
- new(request_uri: '/channel/unpause', **args).post(topic: topic, channel: channel)
183
+ new(request_uri: "/channel/unpause", **args).post(topic: topic, channel: channel)
184
184
  end
185
185
 
186
186
  ##