kafkr 0.5.7 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61f0dfd7c65259a4684880f7a1ba6f7749f95de46e4eee8faf4b6d629604f3d2
4
- data.tar.gz: e8ca8789b46ea257d93381e54b4ae8ad343e38fbf16bae276527f1abc3128867
3
+ metadata.gz: c15f14feed8ee398816eb4454850798f764f10cafdf12f27aca353ac2412fa1b
4
+ data.tar.gz: 77c4facf9f2290d087d2b5b40aa63714e0c01f5d0f4a33cce4c85349264dfe63
5
5
  SHA512:
6
- metadata.gz: 882d352ee426b9ea072d70cefa25502fcb56a616672ddae678f7f7390a6958f40657bd53cd05f4921717b46ac3129bb95bd996c5a5998c491d1673c5c0cac6a3
7
- data.tar.gz: 711faef688da9ec89affd06f51e8b7a57af39e37a9e214425e3a15e1bf755852e754e1188445f831eaa4e785c4cf583ae3863c73599325b64c0f4672efc0e225
6
+ metadata.gz: 3e1089f1fbe70c98be8c9ec09fe9d9967c20594c120857fa486bde44bb3ab2ef32cb02df7ae485e383ac1d802243a9468019bf9e6bfd6e057ce57fe14e465e4a
7
+ data.tar.gz: e929ce1c00207dd3f63be0294f73d4b885a3786a0748e84650baedd3a01e22e9755de5acf85d111d8e0ea29ce0ba1d4e51906f5a5228c0b5b2acbb3de56857a8
data/exe/kafkr CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ require_relative "../lib/kafkr.rb"
3
+
2
4
  PORT = ENV["KAFKR_PORT"] || 4000
3
5
 
4
6
  begin
@@ -10,7 +12,7 @@ end
10
12
 
11
13
  begin
12
14
  server = Kafkr::Log.new(PORT.to_i)
13
- puts "Log started on port #{PORT}!"
15
+ puts "Kafkr Log version #{Kafkr::VERSION} started on port #{PORT}!"
14
16
  server.start
15
17
  rescue => e
16
18
  puts "An error occurred: #{e.message}"
data/exe/kafkr-consumer CHANGED
@@ -33,7 +33,7 @@ def list_registered_handlers
33
33
  end
34
34
  end
35
35
 
36
- def start_consumer(port,host)
36
+ def start_consumer(port, host)
37
37
  puts "Starting consumer on port #{port}!"
38
38
  $handlers_changed = false
39
39
 
@@ -95,13 +95,13 @@ end
95
95
 
96
96
  file_checksums = {}
97
97
  monitoring_thread = Thread.new { monitor_handlers(file_checksums) }
98
- start_consumer(port,host) # Pass the port here
98
+ start_consumer(port, host) # Pass the port here
99
99
 
100
100
  begin
101
101
  loop do
102
102
  if $restart_required
103
103
  stop_consumer
104
- start_consumer(port,host)
104
+ start_consumer(port, host)
105
105
  $restart_required = false
106
106
  end
107
107
  sleep 1
data/exe/kafkr-producer CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- require 'readline'
2
+ require "readline"
3
3
 
4
4
  # Parsing command line arguments for host and port
5
5
  host = ARGV[0] || "localhost"
@@ -18,6 +18,7 @@ module Kafkr
18
18
  def configuration
19
19
  FileUtils.mkdir_p "./.kafkr"
20
20
  @configuration ||= OpenStruct.new
21
+ @configuration.suggest_handlers = false
21
22
  @configuration
22
23
  end
23
24
 
@@ -72,13 +73,12 @@ module Kafkr
72
73
  protected
73
74
 
74
75
  def reply to:, payload:
75
-
76
76
  Kafkr::Producer.configure do |config|
77
77
  config.host = Consumer.configuration.host
78
78
  config.port = Consumer.configuration.port
79
79
  end
80
80
 
81
- Kafkr::Producer.send_message({reply: {payload: payload, uuid: to['sync_uid']}},acknowledge: false)
81
+ Kafkr::Producer.send_message({reply: {payload: payload, uuid: to["sync_uid"]}}, acknowledge: false)
82
82
  end
83
83
 
84
84
  private
@@ -134,27 +134,29 @@ module Kafkr
134
134
  return
135
135
  end
136
136
 
137
- if valid_class_name? name.capitalize
138
- puts "No handler for this message, you could use this one."
139
- puts ""
137
+ if Kafkr::Consumer.configuration.suggest_handlers
138
+ if valid_class_name? name.capitalize
139
+ puts "No handler for this message, you could use this one."
140
+ puts ""
140
141
 
141
- handler_class_string = <<~HANDLER_CLASS
142
+ handler_class_string = <<~HANDLER_CLASS
142
143
 
143
- class #{name.capitalize}Handler < Kafkr::Consumer::Handler
144
- def handle?(message)
145
- can_handle? message, '#{name}'
146
- end
144
+ class #{name.capitalize}Handler < Kafkr::Consumer::Handler
145
+ def handle?(message)
146
+ can_handle? message, '#{name}'
147
+ end
147
148
 
148
- def handle(message)
149
- puts message
149
+ def handle(message)
150
+ puts message
151
+ end
150
152
  end
151
- end
152
153
 
153
- save the file to ./handlers/#{name}_handler.rb
154
+ save the file to ./handlers/#{name}_handler.rb
154
155
 
155
- HANDLER_CLASS
156
+ HANDLER_CLASS
156
157
 
157
- puts handler_class_string
158
+ puts handler_class_string
159
+ end
158
160
  end
159
161
  end
160
162
 
@@ -163,7 +165,7 @@ module Kafkr
163
165
  def listen_for(message, send_message)
164
166
  attempt = 0
165
167
  begin
166
- socket = TCPSocket.new( Consumer.configuration.host, Consumer.configuration.port)
168
+ socket = TCPSocket.new(Consumer.configuration.host, Consumer.configuration.port)
167
169
  attempt = 0
168
170
 
169
171
  Timeout.timeout(20) do
@@ -174,11 +176,11 @@ module Kafkr
174
176
  received_message = socket.gets
175
177
  raise LostConnection if received_message.nil?
176
178
  # Assuming Kafkr::Encryptor is defined elsewhere
177
- received_message = Kafkr::Encryptor.new.decrypt(received_message.chomp)
179
+ received_message = Kafkr::Encryptor.new.decrypt(received_message.chomp)
178
180
  # Yield every received message to the given block
179
181
  if valid_json?(received_message)
180
- payload =yield JSON.parse(received_message),sync_uid if block_given?
181
- return payload if payload
182
+ payload = yield JSON.parse(received_message), sync_uid if block_given?
183
+ return payload if payload
182
184
  end
183
185
  end
184
186
  end
@@ -205,7 +207,7 @@ module Kafkr
205
207
  def listen
206
208
  attempt = 0
207
209
  loop do
208
- socket = TCPSocket.new(Consumer.configuration.host, Consumer.configuration.port)
210
+ socket = TCPSocket.new(Consumer.configuration.host, Consumer.configuration.port)
209
211
  attempt = 0
210
212
 
211
213
  loop do
data/lib/kafkr/log.rb CHANGED
@@ -74,7 +74,7 @@ module Kafkr
74
74
  end
75
75
 
76
76
  def load_whitelist
77
- whitelist = ["localhost", "::1","127.0.0.1"]
77
+ whitelist = ["localhost", "::1", "127.0.0.1"]
78
78
  if File.exist?("whitelist.txt")
79
79
  File.readlines("whitelist.txt").each do |line|
80
80
  ip = line.strip.sub(/^::ffff:/, "")
@@ -91,8 +91,19 @@ module Kafkr
91
91
  private
92
92
 
93
93
  def extract_uuid(message)
94
- match_data = /^(\w{8}-\w{4}-\w{4}-\w{4}-\w{12}): (.+)$/.match(message)
95
- match_data ? [match_data[1], match_data[2]] : [nil, nil]
94
+
95
+ #check if message if valid json
96
+ begin
97
+ message = JSON.parse(message)
98
+
99
+ return message["uuid"], message
100
+
101
+ rescue JSON::ParserError => e
102
+ puts "Received invalid message format: #{message}"
103
+ match_data = /^(\w{8}-\w{4}-\w{4}-\w{4}-\w{12}): (.+)$/.match(message)
104
+ match_data ? [match_data[1], match_data[2]] : [nil, nil]
105
+ end
106
+
96
107
  end
97
108
 
98
109
  def acknowledge_message(uuid, client)
@@ -21,6 +21,7 @@ module Kafkr
21
21
  @configuration.acknowledged_messages = []
22
22
  @configuration.acknowledged_messages = load_acknowledged_messages
23
23
  load_queue_from_file
24
+ @configuration.is_json = false
24
25
  @configuration
25
26
  end
26
27
 
@@ -72,14 +73,22 @@ module Kafkr
72
73
 
73
74
  def self.send_message(message, acknowledge: true)
74
75
  uuid = SecureRandom.uuid
76
+
77
+ message_with_uuid = nil
75
78
 
76
- if message.is_a? String
77
- message = structured_data_to_hash(input: message, sync_uid: uuid)
78
- message_with_uuid = "#{uuid}: #{message}"
79
- end
79
+ if Kafkr::Producer.configuration.is_json
80
+ json_message = JSON.parse(message)
81
+ json_message["uuid"] = uuid
82
+ message_with_uuid = JSON.dump(json_message)
83
+ else
84
+ if message.is_a? String
85
+ message = structured_data_to_hash(input: message, sync_uid: uuid)
86
+ message_with_uuid = "#{uuid}: #{message}"
87
+ end
80
88
 
81
- if message.is_a?(Hash)
82
- message_with_uuid = "#{uuid}: #{JSON.generate(message)}"
89
+ if message.is_a?(Hash)
90
+ message_with_uuid = "#{uuid}: #{JSON.generate(message)}"
91
+ end
83
92
  end
84
93
 
85
94
  # Encrypt the message here
@@ -116,17 +125,14 @@ module Kafkr
116
125
 
117
126
  def self.send_message_and_wait(message)
118
127
  # Using method(:send_message) to pass the send_message method as a callable object
119
-
120
- payload = Consumer.new.listen_for(message, self.method(:send_message)) do |received_message,sync_uid|
128
+
129
+ Consumer.new.listen_for(message, method(:send_message)) do |received_message, sync_uid|
121
130
  if received_message.key? "reply"
122
- if received_message["reply"].dig('uuid') == sync_uid
123
- received_message["reply"].dig('payload')
131
+ if received_message["reply"].dig("uuid") == sync_uid
132
+ received_message["reply"].dig("payload")
124
133
  end
125
134
  end
126
-
127
135
  end
128
-
129
- payload
130
136
  end
131
137
 
132
138
  private
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.5.7"
4
+ VERSION = "0.9.1"
5
5
  end
data/lib/kafkr.rb CHANGED
@@ -11,6 +11,7 @@ require_relative "kafkr/message_broker"
11
11
  require_relative "kafkr/log"
12
12
  require_relative "kafkr/consumer"
13
13
  require_relative "kafkr/producer"
14
+ require_relative "kafkr/version"
14
15
 
15
16
  module Kafkr
16
17
  class << self
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.5.7
4
+ version: 0.9.1
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-01-19 00:00:00.000000000 Z
11
+ date: 2024-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gibberish