Class: GrapeOAS::ApiModelBuilders::Request

Inherits:
Object
  • Object
show all
Includes:
Concerns::OasUtilities, Concerns::TypeResolver
Defined in:
lib/grape_oas/api_model_builders/request.rb

Constant Summary

Constants included from Concerns::OasUtilities

Concerns::OasUtilities::VALID_CONSTANT_PATTERN

Constants included from Concerns::TypeResolver

Concerns::TypeResolver::MULTI_TYPE_PATTERN, Concerns::TypeResolver::TYPED_ARRAY_PATTERN

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Concerns::OasUtilities

extract_extensions, #extract_extensions, pluralize, #pluralize, underscore, #underscore, valid_constant_name?, #valid_constant_name?

Methods included from Concerns::TypeResolver

#build_array_items_schema, #build_schema_for_primitive, #derive_primitive_and_member, #extract_multi_types, #extract_typed_array_member, #grape_boolean_type?, #multi_type?, #resolve_schema_type

Constructor Details

#initialize(api:, route:, operation:, path_param_name_map: nil) ⇒ Request

Returns a new instance of Request.



11
12
13
14
15
16
# File 'lib/grape_oas/api_model_builders/request.rb', line 11

def initialize(api:, route:, operation:, path_param_name_map: nil)
  @api = api
  @route = route
  @operation = operation
  @path_param_name_map = path_param_name_map || {}
end

Instance Attribute Details

#apiObject (readonly)

Returns the value of attribute api.



9
10
11
# File 'lib/grape_oas/api_model_builders/request.rb', line 9

def api
  @api
end

#operationObject (readonly)

Returns the value of attribute operation.



9
10
11
# File 'lib/grape_oas/api_model_builders/request.rb', line 9

def operation
  @operation
end

#path_param_name_mapObject (readonly)

Returns the value of attribute path_param_name_map.



9
10
11
# File 'lib/grape_oas/api_model_builders/request.rb', line 9

def path_param_name_map
  @path_param_name_map
end

#routeObject (readonly)

Returns the value of attribute route.



9
10
11
# File 'lib/grape_oas/api_model_builders/request.rb', line 9

def route
  @route
end

Instance Method Details

#buildObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/grape_oas/api_model_builders/request.rb', line 18

def build
  body_schema, route_params = GrapeOAS::ApiModelBuilders::RequestParams
                              .new(api: api, route: route, path_param_name_map: path_param_name_map)
                              .build

  contract_schema = build_contract_schema

  # For GET/HEAD/DELETE requests, convert contract schema to query parameters
  # instead of putting it in request body, UNLESS request_body is explicitly enabled
  if contract_schema && should_convert_contract_to_query_params?
    contract_params = convert_contract_schema_to_params(contract_schema)
    operation.add_parameters(*contract_params)
  elsif contract_schema
    body_schema = contract_schema
  end

  operation.add_parameters(*route_params)
  append_request_body(body_schema) unless body_schema.empty?
end