Sha256: c7ffe676c21d88f2ead25bb7927c5a5bdaaadaed0ec3487cf46cb15242aeb9af

Contents?: true

Size: 1.07 KB

Versions: 8

Compression:

Stored size: 1.07 KB

Contents

module Pliny::Helpers
  module Serialize
    def self.registered(base)
      base.helpers Helpers
      base.set :serializer_class, nil
    end

    module Helpers
      def serialize(data, structure = :default)
        serializer_class = settings.serializer_class

        if serializer_class.nil?
          raise <<~eos.strip
            No serializer has been specified for this endpoint. Please specify one with
            `serializer Serializers::ModelName` in the endpoint.
          eos
        end

        env['pliny.serializer_arity'] = data.respond_to?(:size) ? data.size : 1

        start = Time.now
        serializer_class.new(structure).serialize(data).tap do
          env['pliny.serializer_timing'] = (Time.now - start).to_f
        end
      end
    end

    # Provide a way to specify endpoint serializer class.
    #
    # class Endpoints::User < Base
    #   serializer Serializers::User
    #
    #   get do
    #     encode serialize(User.all)
    #   end
    # end
    def serializer(serializer_class)
      set :serializer_class, serializer_class
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pliny-1.2.0 lib/pliny/helpers/serialize.rb
pliny-1.1.0 lib/pliny/helpers/serialize.rb
pliny-1.0.0 lib/pliny/helpers/serialize.rb
pliny-0.32.0 lib/pliny/helpers/serialize.rb
pliny-0.31.0 lib/pliny/helpers/serialize.rb
pliny-0.30.1 lib/pliny/helpers/serialize.rb
pliny-0.30.0 lib/pliny/helpers/serialize.rb
pliny-0.29.0 lib/pliny/helpers/serialize.rb