module ActiveSupport::Messages::Metadata
def deserialize_with_metadata(message, **expected_metadata)
def deserialize_with_metadata(message, **expected_metadata) if dual_serialized_metadata_envelope_json?(message) envelope = deserialize_from_json(message) extracted = extract_from_metadata_envelope(envelope, **expected_metadata) deserialize_from_json_safe_string(extracted["message"]) else deserialized = deserialize(message) if metadata_envelope?(deserialized) extract_from_metadata_envelope(deserialized, **expected_metadata)["data"] elsif expected_metadata.none? { |k, v| v } deserialized else throw :invalid_message_content, "missing metadata" end end end