Sha256: cc2f04d24eeb229a9a29363069af66a2e2b9bd477655ea3612bd29ff63d13982

Contents?: true

Size: 773 Bytes

Versions: 7

Compression:

Stored size: 773 Bytes

Contents

# frozen_string_literal: true

module DjiMqttConnect
  module Utils
    module MessageParsing
      private

      def message_class_for_parsed_message(parsed_message, generic_class)
        # update_topo => UpdateTopo
        classified_method = ActiveSupport::Inflector.classify(parsed_message["method"])

        # UpdateTopo => DjiMqttConnect::Sys::Product::UpdateTopoStatusMessage
        module_prefix, joiner, class_suffix = generic_class.name.rpartition("::")
        message_class_name = [module_prefix, joiner, classified_method, class_suffix].join

        # Constantize an instance of the message-specific class, or fallback to a generic message
        ActiveSupport::Inflector.safe_constantize(message_class_name) || generic_class
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
dji_mqtt_connect-0.1.3 lib/dji_mqtt_connect/utils/message_parsing.rb
dji_mqtt_connect-0.1.2 lib/dji_mqtt_connect/utils/message_parsing.rb
dji_mqtt_connect-0.1.1.4 lib/dji_mqtt_connect/utils/message_parsing.rb
dji_mqtt_connect-0.1.1.3 lib/dji_mqtt_connect/utils/message_parsing.rb
dji_mqtt_connect-0.1.1.2 lib/dji_mqtt_connect/utils/message_parsing.rb
dji_mqtt_connect-0.1.1.1 lib/dji_mqtt_connect/utils/message_parsing.rb
dji_mqtt_connect-0.1.1 lib/dji_mqtt_connect/utils/message_parsing.rb