Sha256: e9744a264ba73155583d3c0f9eec86e16eaf4582cfff704bc680ff05cd3a85b0

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

require "ldclient-rb/impl/model/preprocessed_data"

module LaunchDarkly
  module Impl
    module Model
      # Abstraction of deserializing a feature flag or segment that was read from a data store or
      # received from LaunchDarkly.
      def self.deserialize(kind, json, logger = nil)
        return nil if json.nil?
        item = JSON.parse(json, symbolize_names: true)
        DataModelPreprocessing::Preprocessor.new(logger).preprocess_item!(kind, item)
        item
      end

      # Abstraction of serializing a feature flag or segment that will be written to a data store.
      # Currently we just call to_json.
      def self.serialize(kind, item)
        item.to_json
      end

      # Translates a { flags: ..., segments: ... } object received from LaunchDarkly to the data store format.
      def self.make_all_store_data(received_data, logger = nil)
        preprocessor = DataModelPreprocessing::Preprocessor.new(logger)
        flags = received_data[:flags]
        preprocessor.preprocess_all_items!(FEATURES, flags)
        segments = received_data[:segments]
        preprocessor.preprocess_all_items!(SEGMENTS, segments)
        { FEATURES => flags, SEGMENTS => segments }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
launchdarkly-server-sdk-6.4.0 lib/ldclient-rb/impl/model/serialization.rb