kafkr 0.018.1 → 0.21.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
2
  SHA256:
3
- metadata.gz: 1e7fd62a57849b5096b9cba1a6928ee2786a401084ca29af0bfdfb1fc2cab7c5
4
- data.tar.gz: 6ca89348304182eeabb6c4518818ad804d6b1b4c429c52ba82905cbf431bbb12
3
+ metadata.gz: 27db175bfdb0bab5dec371a1abf78a0f54293ee6c883612f1fed4f7c48d55e01
4
+ data.tar.gz: d50374c0847f19ac9141bb6eff5d9dd968594c9c4380aecbdc6417dc54322b14
5
5
  SHA512:
6
- metadata.gz: a2ec64c8b63a6b57860ad372ca2dc851dffca1955f7ffe0a1958aaa3a636e50f05fd581e5556761355c8515317c16f29b4d78c8d839c7c429976789d2fcfcb61
7
- data.tar.gz: f10c003cecfacbcd05376832784430262bcdb26244efe5c345a22bdf30a75ca67b335e48bc1a6b6c72476619ab984c3b4d66a10b54562b5805940ee4e9974b9a
6
+ metadata.gz: 050231b1632c5ead63874eee350807cb821584892e87d4dbfdad10d7f10281872ab32fa60f2089d39bf0cf9b26ab41514ad6451430445deca35b4013a85e55e7
7
+ data.tar.gz: 5cd9a1e0e8b5404120fd8d0aea97a421422b219b5470eda2c0e700db7386583283a3b794bc0a4a2bae96f117c2c39b9c581442113c269f567109e577b53ad973
data/exe/kafkr-consumer CHANGED
@@ -51,7 +51,7 @@ def start_consumer(port, host, timeout)
51
51
 
52
52
  $current_consumer = Kafkr::Consumer.new
53
53
  $current_consumer.listen do |message|
54
- # Processing of the message
54
+ Kafkr.log "Message consumed: #{message}"# Processing of the message
55
55
  end
56
56
  end
57
57
 
data/exe/kafkr-producer CHANGED
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
+ require "kafkr"
2
3
  require "readline"
3
4
 
4
5
  # Parsing command line arguments for host and port
5
6
  host = ARGV[0] || "localhost"
6
7
  port = ARGV[1] || 4000
7
8
 
8
- kakf "Running on host: #{host} and port: #{port}"
9
+ Kafkr.log "Running on host: #{host} and port: #{port}"
9
10
 
10
11
  begin
11
12
  require "kafkr"
@@ -1,6 +1,8 @@
1
+ require "pry"
2
+
1
3
  class WebHandler < Kafkr::Consumer::Handler
2
4
  def handle?(message)
3
- can_handle? message, "web"
5
+ message.include?("web")
4
6
  end
5
7
 
6
8
  def handle(message)
@@ -77,23 +77,6 @@ module Kafkr
77
77
  Kafkr::Producer.send_message({reply: {payload: payload, uuid: to["sync_uid"]}})
78
78
  end
79
79
 
80
- private
81
-
82
- def can_handle?(message, name, ignore: :any)
83
- if message.is_a?(Numeric)
84
- return true if message == name.to_i
85
- elsif ignore == :hash
86
- return true if message[:message] && message[:message][:body] && message[:message][:body] == name
87
- return true if message[:message] && message[:message][:body] && message[:message][:body].start_with?(name)
88
- elsif ignore == :string
89
- return true if message.key? name
90
- else
91
- return true if message.key? name
92
- return true if message[:message] && message[:message][:body] && message[:message][:body] == name
93
- return true if message[:message] && message[:message][:body] && message[:message][:body].start_with?(name)
94
- end
95
- false
96
- end
97
80
  end
98
81
 
99
82
  def initialize(host = Consumer.configuration.host, port = Consumer.configuration.port)
@@ -113,40 +96,6 @@ module Kafkr
113
96
  /^[A-Z]\w*$/.match?(name)
114
97
  end
115
98
 
116
- def print_handler_class(name)
117
- return if name.is_a?(Numeric)
118
- name = name.keys.first if name.is_a?(Hash)
119
- handler_name = "#{name.downcase}_handler"
120
-
121
- if $loaded_handlers.key?(handler_name)
122
- return
123
- end
124
-
125
- if Kafkr::Consumer.configuration.suggest_handlers
126
- if valid_class_name?(name.capitalize)
127
- Kafkr.log "No handler for this message, you could use this one.\n\n"
128
-
129
- handler_class_string = <<~HANDLER_CLASS
130
- class #{name.capitalize}Handler < Kafkr::Consumer::Handler
131
- def handle?(message)
132
- can_handle? message, '#{name}'
133
- end
134
-
135
- def handle(message)
136
- Kafkr.log message
137
- end
138
- end
139
-
140
- # Save the file to ./handlers/#{name}_handler.rb
141
- HANDLER_CLASS
142
-
143
- Kafkr.log handler_class_string
144
- end
145
- end
146
- end
147
-
148
- require "timeout"
149
-
150
99
  def listen_for(message, send_message)
151
100
  attempt = 0
152
101
  begin
@@ -202,7 +151,8 @@ module Kafkr
202
151
  private
203
152
 
204
153
  def dispatch_to_handlers(message)
205
- message_hash = message.is_a?(String) ? {message: {body: message}} : message
154
+
155
+ message_hash = JSON.parse(message)
206
156
 
207
157
  self.class.handlers.each do |handler|
208
158
  if handler.handle?(message_hash)
@@ -210,8 +160,6 @@ module Kafkr
210
160
  end
211
161
  end
212
162
 
213
- print_handler_class(message)
214
-
215
163
  yield message_hash if block_given?
216
164
  end
217
165
  end
data/lib/kafkr/log.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require "socket"
2
2
  require "rubygems"
3
+ require "kafkr"
4
+
3
5
 
4
6
  module Kafkr
5
7
  class Log
@@ -50,13 +52,13 @@ module Kafkr
50
52
  decryptor = Kafkr::Encryptor.new
51
53
  message = decryptor.decrypt(encrypted_message.chomp) # Decrypt the message here
52
54
  uuid, message_content = extract_uuid(message)
53
- @broker.broadcast(message_content)
55
+ @broker.broadcast(JSON.dump(message_content))
54
56
  end
55
57
  rescue Errno::ECONNRESET
56
58
  client.close
57
59
  end
58
60
  rescue StandardError => exception
59
- #TODO we need to find the place for a global exception handler
61
+ Kafkr.log "Error: #{exception.message}"
60
62
  end
61
63
  end
62
64
  end
@@ -16,7 +16,7 @@ module Kafkr
16
16
  encrypted_message = Kafkr::Encryptor.new.encrypt(message)
17
17
  @subscribers.each do |subscriber|
18
18
  if !subscriber.closed?
19
- subscriber.Kafkr.log(encrypted_message)
19
+ subscriber.puts(encrypted_message)
20
20
  @last_sent[subscriber] = encrypted_message
21
21
  end
22
22
  rescue Errno::EPIPE
@@ -17,7 +17,7 @@ module Kafkr
17
17
  @configuration.queue_file = MESSAGE_QUEUE
18
18
  @configuration.message_queue = []
19
19
  load_queue_from_file
20
- @configuration.is_json = false
20
+ @configuration.is_json = true
21
21
  @configuration
22
22
  end
23
23
 
@@ -27,28 +27,6 @@ module Kafkr
27
27
  logger.error("Configuration error: #{e.message}")
28
28
  end
29
29
 
30
- def self.structured_data_to_hash(input:, sync_uid:)
31
- unless /\A\w+\s*(=>|<=>)\s*((\w+:\s*['"]?[^'",]*['"]?,\s*)*(\w+:\s*['"]?[^'",]*['"]?)\s*)\z/.match?(input)
32
- return input
33
- end
34
-
35
- if input.include?("<=>")
36
- type, key_values_str = input.split("<=>").map(&:strip)
37
- key_values = key_values_str.scan(/(\w+):\s*['"]?([^'",]*)['"]?/)
38
- hash_body = key_values.to_h do |key, value|
39
- [key.to_sym, value.strip.gsub(/\A['"]|['"]\z/, "")]
40
- end
41
- {type.to_sym => hash_body, :sync => true, :sync_uid => sync_uid}
42
- else
43
- type, key_values_str = input.split("=>").map(&:strip)
44
- key_values = key_values_str.scan(/(\w+):\s*['"]?([^'",]*)['"]?/)
45
- hash_body = key_values.to_h do |key, value|
46
- [key.to_sym, value.strip.gsub(/\A['"]|['"]\z/, "")]
47
- end
48
- {type.to_sym => hash_body}
49
- end
50
- end
51
-
52
30
  def self.send_message(message)
53
31
  return if message.nil? || message.empty?
54
32
 
@@ -59,15 +37,6 @@ module Kafkr
59
37
  json_message = JSON.parse(message)
60
38
  json_message["uuid"] = uuid
61
39
  message_with_uuid = JSON.dump(json_message)
62
- else
63
- if message.is_a? String
64
- message = structured_data_to_hash(input: message, sync_uid: uuid)
65
- message_with_uuid = "#{uuid}: #{message}"
66
- end
67
-
68
- if message.is_a?(Hash)
69
- message_with_uuid = "#{uuid}: #{JSON.generate(message)}"
70
- end
71
40
  end
72
41
 
73
42
  encrypted_message_with_uuid = Kafkr::Encryptor.new.encrypt(message_with_uuid)
@@ -75,7 +44,7 @@ module Kafkr
75
44
  begin
76
45
  socket = TCPSocket.new(@configuration.host, @configuration.port)
77
46
  send_queued_messages(socket)
78
- socket.Kafkr.log(encrypted_message_with_uuid)
47
+ socket.puts (encrypted_message_with_uuid)
79
48
  rescue Errno::ECONNREFUSED
80
49
  Kafkr.log "Connection refused. Queuing message: #{encrypted_message_with_uuid}"
81
50
  @configuration.message_queue.push(encrypted_message_with_uuid)
@@ -106,14 +75,14 @@ module Kafkr
106
75
  def self.send_queued_messages(socket)
107
76
  until @configuration.message_queue.empty?
108
77
  queued_message = @configuration.message_queue.shift
109
- socket.Kafkr.log(queued_message)
78
+ socket.puts(queued_message)
110
79
  end
111
80
  end
112
81
 
113
82
  def self.save_queue_to_file
114
83
  @@file_mutex.synchronize do
115
84
  File.open(@configuration.queue_file, "w") do |file|
116
- file.Kafkr.log(@configuration.message_queue)
85
+ file.puts(@configuration.message_queue)
117
86
  end
118
87
  end
119
88
  end
@@ -126,8 +95,5 @@ module Kafkr
126
95
  end
127
96
  end
128
97
 
129
- def self.logger
130
- @logger ||= Logger.new(STDOUT)
131
- end
132
98
  end
133
99
  end
data/lib/kafkr/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kafkr
4
- VERSION = "0.018.1"
4
+ VERSION = "0.21.0"
5
5
  end
data/lib/kafkr.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
-
2
+ require "pry"
3
3
  require "logger"
4
4
  require "openssl"
5
5
  require "securerandom"
@@ -15,64 +15,21 @@ require_relative "kafkr/version"
15
15
 
16
16
  module Kafkr
17
17
  class << self
18
- attr_accessor :current_environment
19
18
  def logger
20
19
  @logger ||= configure_logger
21
20
  end
22
21
 
23
- def configure_logger(output = default_output)
22
+ def configure_logger(output = STDOUT)
24
23
  begin
25
24
  @logger = ::Logger.new(output)
26
25
  rescue Errno::EACCES, Errno::ENOENT => e
27
26
  @logger = ::Logger.new(STDOUT)
28
27
  @logger.error("Could not open log file: #{e.message}")
29
28
  end
30
- set_logger_level
29
+ @logger.level = ::Logger::DEBUG
31
30
  @logger
32
31
  end
33
32
 
34
- def default_output
35
- case current_environment
36
- when "production"
37
- "/var/log/kafkr.log"
38
- else
39
- STDOUT
40
- end
41
- end
42
-
43
- def set_logger_level
44
- @logger.level = case current_environment
45
- when "development"
46
- ::Logger::DEBUG
47
- when "staging"
48
- ::Logger::INFO
49
- when "production"
50
- ::Logger::WARN
51
- else
52
- ::Logger::DEBUG
53
- end
54
- end
55
-
56
- def current_environment
57
- @current_environment ||= ENV["KAFKR_ENV"] || "development"
58
- end
59
-
60
- def development?
61
- current_environment == "development"
62
- end
63
-
64
- def test?
65
- current_environment == "test"
66
- end
67
-
68
- def staging?
69
- current_environment == "staging"
70
- end
71
-
72
- def production?
73
- current_environment == "production"
74
- end
75
-
76
33
  def write(message, unique_id = nil)
77
34
  begin
78
35
  logger.info(message)
@@ -100,3 +57,4 @@ module Kafkr
100
57
  logger.error("Configuration error: #{e.message}")
101
58
  end
102
59
  end
60
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kafkr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.018.1
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-10 00:00:00.000000000 Z
11
+ date: 2024-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gibberish