Sha256: b995b96a21cb3166d48978c6bc32bfa0a890485b68b38858d4148b1aaecb5e54

Contents?: true

Size: 923 Bytes

Versions: 6

Compression:

Stored size: 923 Bytes

Contents

# frozen_string_literal: true

require 'media_types'

require 'media_types/serialization/wrapper/media_index_wrapper'
require 'media_types/serialization/wrapper/media_collection_wrapper'
require 'media_types/serialization/wrapper/media_object_wrapper'

module MediaTypes
  module Serialization
    module Wrapper
      class MediaWrapper

        AUTO_WRAPPER_MAPPING = {
          ::MediaTypes::INDEX_VIEW => MediaIndexWrapper,
          ::MediaTypes::COLLECTION_VIEW => MediaCollectionWrapper,
          ::MediaTypes::CREATE_VIEW => MediaObjectWrapper,
          nil => MediaObjectWrapper
        }.freeze

        DEFAULT_WRAPPER = MediaObjectWrapper

        class << self
          def new(serializer, view: nil)
            wrapper = AUTO_WRAPPER_MAPPING.fetch(String(view)) { DEFAULT_WRAPPER }
            wrapper.new(serializer)
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
media_types-serialization-0.4.0 lib/media_types/serialization/wrapper/media_wrapper.rb
media_types-serialization-0.3.2 lib/media_types/serialization/wrapper/media_wrapper.rb
media_types-serialization-0.3.1 lib/media_types/serialization/wrapper/media_wrapper.rb
media_types-serialization-0.3.0 lib/media_types/serialization/wrapper/media_wrapper.rb
media_types-serialization-0.2.0 lib/media_types/serialization/wrapper/media_wrapper.rb
media_types-serialization-0.1.0 lib/media_types/serialization/wrapper/media_wrapper.rb