Sha256: 2c7fd64235b727465c062be404c3003099a711867f0a6c2d401dca13d61da7c8

Contents?: true

Size: 1.82 KB

Versions: 7

Compression:

Stored size: 1.82 KB

Contents

# frozen_string_literal: true

module EIVO
  module Concerns
    module Rendering

      extend ::ActiveSupport::Concern

      def render_success(serializer = nil)
        if serializer
          render json: serializer.serialized_json
        else
          data = {
            data: nil
          }
          render json: ::MultiJson.dump(data)
        end
      end

      def render_unauthorized(exception = nil)
        render_error 'unauthorized', status: :unauthorized
      end

      def render_forbidden(exception = nil)
        render_error 'forbidden', status: :forbidden
      end

      def render_not_found(exception = nil)
        render_error 'not_found', status: :not_found
      end

      def render_internal_server_error(exception)
        render_error 'internal_server_error', status: :internal_server_error
      end

      def render_parameter_missing(exception)
        render_error 'parameter_missing', source: { parameter: exception.param }
      end

      def render_model_errors(errors)
        json_errors = errors.details.map do |attribute, errors|
          errors.map do |error|
            {
              code: error[:error],
              source: {
                parameter: attribute
              },
              status: ::Rack::Utils::SYMBOL_TO_STATUS_CODE[:bad_request].to_s
            }
          end
        end

        render_errors json_errors.flatten
      end

      def render_error(code, status: :bad_request, source: nil)
        render_errors([{
          code: code,
          source: source,
          status: ::Rack::Utils::SYMBOL_TO_STATUS_CODE[status].to_s
        }.compact], status: status)
      end

      def render_errors(errors, status: :bad_request)
        data = {
          errors: errors
        }
        render json: ::MultiJson.dump(data), status: status
      end

    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
eivo-rails-api-0.0.7 app/controllers/eivo/concerns/rendering.rb
eivo-rails-api-0.0.6 app/controllers/eivo/concerns/rendering.rb
eivo-rails-api-0.0.5 app/controllers/eivo/concerns/rendering.rb
eivo-rails-api-0.0.4 app/controllers/eivo/concerns/rendering.rb
eivo-rails-api-0.0.3 app/controllers/eivo/concerns/rendering.rb
eivo-rails-api-0.0.2 app/controllers/eivo/concerns/rendering.rb
eivo-rails-api-0.0.1 app/controllers/eivo/concerns/rendering.rb