Module: Riffer::Messages::Converter

Included in:
Agent, Providers::Base
Defined in:
lib/riffer/messages/converter.rb

Overview

Module for converting hashes to message objects.

Included in Agent and Provider classes to handle message normalization.

Instance Method Summary collapse

Instance Method Details

#convert_to_file_part(file) ⇒ Object

Converts a hash or FilePart object to a Riffer::FilePart.

Accepts:

  • Riffer::FilePart objects (passed through)

  • {url: "https://...", media_type: "..."} (URL source)

  • {data: "...", media_type: "..."} (raw base64)

Raises Riffer::ArgumentError if the hash format is invalid.

– : ((Hash[Symbol, untyped] | Riffer::FilePart)) -> Riffer::FilePart



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/riffer/messages/converter.rb', line 35

def convert_to_file_part(file)
  return file if file.is_a?(Riffer::FilePart)

  unless file.is_a?(Hash)
    raise Riffer::ArgumentError, "File must be a Hash or FilePart object, got #{file.class}"
  end

  url = file[:url]
  data = file[:data]
  media_type = file[:media_type]
  filename = file[:filename]

  if url
    Riffer::FilePart.from_url(url, media_type: media_type)
  elsif data && media_type
    Riffer::FilePart.new(data: data, media_type: media_type, filename: filename)
  else
    raise Riffer::ArgumentError, "File hash must include :url or :data with :media_type"
  end
end

#convert_to_message_object(msg) ⇒ Object

Converts a hash or message object to a Riffer::Messages::Base subclass.

Raises Riffer::ArgumentError if the message format is invalid.

– : ((Hash[Symbol, untyped] | Riffer::Messages::Base)) -> Riffer::Messages::Base



14
15
16
17
18
19
20
21
22
# File 'lib/riffer/messages/converter.rb', line 14

def convert_to_message_object(msg)
  return msg if msg.is_a?(Riffer::Messages::Base)

  unless msg.is_a?(Hash)
    raise Riffer::ArgumentError, "Message must be a Hash or Message object, got #{msg.class}"
  end

  convert_hash_to_message(msg)
end