Sha256: 2a2283e40ce3d0005dc703aac153e82b7494fc22f09cf6c785bd35a3bbb91287

Contents?: true

Size: 1.84 KB

Versions: 7

Compression:

Stored size: 1.84 KB

Contents

require "json/schema/serializer"
require_relative "./util"
require_relative "./parameter"
require_relative "./parameters/deserializer"
require_relative "./parameters/validator"

module Swagger
  class Schema
    class Parameters < Array
      def [](index)
        parameter = super(index)
        Parameter.new(parameter) if parameter
      end

      def by_name(name)
        name_str = name.to_s
        parameter = find { |param| Util.try_hash(param, :name).to_s == name_str }
        Parameter.new(parameter) if parameter
      end

      def query
        select_by("query")
      end

      def header
        select_by("header")
      end

      def path
        select_by("path")
      end

      def cookie
        select_by("cookie")
      end

      def select_by(in_place)
        in_place_str = in_place.to_s
        Parameters.new(select { |param| Util.try_hash(param, :in).to_s == in_place_str })
      end

      def to_json_schema
        properties = {}
        required = []
        each do |param|
          parameter = Parameter.new(param)
          name = parameter.name.to_s
          properties[name] = parameter.to_json_schema
          required << name if parameter.required || parameter.path?
          if Util.try_hash(properties[name], :type).to_s == "string" && !parameter.allowEmptyValue &&
               Util.try_hash(properties[name], :minLength).nil?
            properties[name]["minLength"] = 1
          end
        end
        schema = { "type" => "object", "properties" => properties }
        schema["required"] = required unless required.empty?
        schema
      end

      def serializer(options = {})
        JSON::Schema::Serializer.new(to_json_schema, options)
      end

      def deserializer(options = {})
        Deserializer.new(self, options)
      end

      def validator
        Validator.new(self)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
swagger-serializer-0.7.0 lib/swagger/schema/parameters.rb
swagger-serializer-0.6.2 lib/swagger/schema/parameters.rb
swagger-serializer-0.6.1 lib/swagger/schema/parameters.rb
swagger-serializer-0.6.0 lib/swagger/schema/parameters.rb
swagger-serializer-0.5.2 lib/swagger/schema/parameters.rb
swagger-serializer-0.5.1 lib/swagger/schema/parameters.rb
swagger-serializer-0.5.0 lib/swagger/schema/parameters.rb