Sha256: 4d9dbfb9ab77076ac48acbc9fc11b72cbff3a0abdca3e6ce6f5ffc318e2ee8f5

Contents?: true

Size: 880 Bytes

Versions: 6

Compression:

Stored size: 880 Bytes

Contents

# frozen_string_literal: true

module Meta
  module RouteDSL
    class UniformedParamsBuilder
      def initialize(&block)
        @parameters = {}
        @request_body_builder = JsonSchema::ObjectSchemaBuilder.new

        instance_exec &block if block_given?
      end

      def param(name, options = {}, &block)
        options = options.dup
        op_in = options.delete(:in) || 'body'

        if op_in == 'body'
          property name, options, &block
        else
          @parameters[name] = { in: op_in, schema: JsonSchema::BaseSchema.new(options) }
        end
      end

      def property(name, options = {}, &block)
        @request_body_builder.property name, options, &block
      end

      def build
        request_body = @request_body_builder.to_schema
        [@parameters, request_body.properties.empty? ? nil : request_body]
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
meta-api-0.0.6 lib/meta/route_dsl/uniformed_params_builder.rb
meta-api-0.0.5 lib/meta/route_dsl/uniformed_params_builder.rb
meta-api-0.0.4 lib/meta/route_dsl/uniformed_params_builder.rb
meta-api-0.0.3 lib/meta/route_dsl/uniformed_params_builder.rb
meta-api-0.0.2 lib/meta/route_dsl/uniformed_params_builder.rb
meta-api-0.0.1 lib/meta/route_dsl/uniformed_params_builder.rb