class Sneakers::ContentType
Attributes
deserializer[R]
serializer[R]
Public Class Methods
deserialize(payload, content_type)
click to toggle source
# File lib/sneakers/content_type.rb, line 23 def self.deserialize(payload, content_type) return payload unless content_type @_types[content_type].deserializer.(payload) end
new(serializer, deserializer)
click to toggle source
# File lib/sneakers/content_type.rb, line 38 def initialize(serializer, deserializer) @serializer = serializer @deserializer = deserializer end
passthrough()
click to toggle source
# File lib/sneakers/content_type.rb, line 34 def self.passthrough ->(payload) { payload } end
register(content_type: nil, serializer: nil, deserializer: nil)
click to toggle source
# File lib/sneakers/content_type.rb, line 3 def self.register(content_type: nil, serializer: nil, deserializer: nil) # This can be removed when support is dropped for ruby 2.0 and replaced # by a keyword arg with no default value fail ArgumentError, 'missing keyword: content_type' if content_type.nil? fail ArgumentError, 'missing keyword: serializer' if serializer.nil? fail ArgumentError, 'missing keyword: deserializer' if deserializer.nil? fail ArgumentError, "#{content_type} serializer must be a proc" unless serializer.is_a? Proc fail ArgumentError, "#{content_type} deserializer must be a proc" unless deserializer.is_a? Proc fail ArgumentError, "#{content_type} serializer must accept one argument, the payload" unless serializer.arity == 1 fail ArgumentError, "#{content_type} deserializer must accept one argument, the payload" unless deserializer.arity == 1 @_types[content_type] = new(serializer, deserializer) end
reset!()
click to toggle source
# File lib/sneakers/content_type.rb, line 28 def self.reset! @_types = Hash.new( new(passthrough, passthrough) ) end
serialize(payload, content_type)
click to toggle source
# File lib/sneakers/content_type.rb, line 18 def self.serialize(payload, content_type) return payload unless content_type @_types[content_type].serializer.(payload) end