Sha256: 98a36111f3c130d7252f8f95cda4b0b9dc7f59adfbcd31bea724e0f9ca10c230

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

module GrapeApiary
  class Config
    SETTINGS = %i(
      host
      name
      description
      request_headers
      response_headers
      example_id_type
      resource_exclusion
      include_root
    ).freeze

    class << self
      attr_accessor(*SETTINGS)

      def request_headers
        @request_headers ||= []
      end

      def response_headers
        @response_headers ||= []
      end

      def resource_exclusion
        @resource_exclusion ||= []
      end

      def include_root
        @include_root ||= false
      end

      def supported_id_types
        %i(integer uuid bson)
      end

      def example_id_type=(value)
        raise UnsupportedIDType unless supported_id_types.include?(value)

        if value.to_sym == :bson && !Object.const_defined?('BSON')
          raise BSONNotDefinied
        end

        @example_id_type = value
      end

      def example_id_type
        @example_id_type ||= :integer
      end

      def generate_id
        case example_id_type
        when :integer
          SecureRandom.random_number(1000)
        when :uuid
          SecureRandom.uuid
        when :bson
          BSON::ObjectId.new.to_s
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
grape-apiary-1.0.0 lib/grape-apiary/config.rb