Class: NatsWork::Protocol::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/natswork/protocol.rb

Overview

Message validator

Class Method Summary collapse

Class Method Details

.valid_job_error?(message) ⇒ Boolean

Returns:

  • (Boolean)


261
262
263
264
265
266
267
268
269
# File 'lib/natswork/protocol.rb', line 261

def self.valid_job_error?(message)
  return false unless message.is_a?(Hash)

  required = %w[type version job_id error_code error_message error_class metadata]
  required.all? { |key| message.key?(key) } &&
    message['type'] == MessageType::JOB_ERROR
rescue StandardError
  false
end

.valid_job_request?(message) ⇒ Boolean

Returns:

  • (Boolean)


237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/natswork/protocol.rb', line 237

def self.valid_job_request?(message)
  return false unless message.is_a?(Hash)

  required = %w[type version job_id job_class queue arguments metadata]
  required.all? { |key| message.key?(key) } &&
    message['type'] == MessageType::JOB_REQUEST &&
    message['version'] =~ /^\d+\.\d+\.\d+$/ &&
    message['metadata'].is_a?(Hash) &&
    message['metadata']['created_at'].is_a?(String)
rescue StandardError
  false
end

.valid_job_response?(message) ⇒ Boolean

Returns:

  • (Boolean)


250
251
252
253
254
255
256
257
258
259
# File 'lib/natswork/protocol.rb', line 250

def self.valid_job_response?(message)
  return false unless message.is_a?(Hash)

  required = %w[type version job_id status result metadata]
  required.all? { |key| message.key?(key) } &&
    message['type'] == MessageType::JOB_RESPONSE &&
    %w[success failure partial].include?(message['status'])
rescue StandardError
  false
end

.validate_message(message) ⇒ Object



271
272
273
274
275
276
277
278
279
280
281
282
# File 'lib/natswork/protocol.rb', line 271

def self.validate_message(message)
  case message['type']
  when MessageType::JOB_REQUEST
    valid_job_request?(message)
  when MessageType::JOB_RESPONSE
    valid_job_response?(message)
  when MessageType::JOB_ERROR
    valid_job_error?(message)
  else
    false
  end
end