1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
# frozen_string_literal: true
require 'json'
module Cucumber
module Wire
# Represents the packet of data sent over the wire as JSON data, containing
# a message and a hash of arguments
class DataPacket
class << self
def parse(raw)
attributes = JSON.parse(raw.strip)
message = attributes[0]
params = attributes[1]
new(message, params)
end
end
attr_reader :message, :params
def initialize(message, params = nil)
@message = message
@params = params
end
def to_json(*_args)
packet = [@message]
packet << @params if @params
JSON.generate(packet)
end
def handle_with(handler)
handler.send(:"handle_#{@message}", @params)
end
end
end
end
|