Class: OpenapiRuby::DSL::OperationContext

Inherits:
Object
  • Object
show all
Defined in:
lib/openapi_ruby/dsl/operation_context.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(verb, summary = nil) ⇒ OperationContext

Returns a new instance of OperationContext.



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 9

def initialize(verb, summary = nil)
  @verb = verb.to_s
  @summary = summary
  @parameters = []
  @responses = {}
  @request_body_definition = nil
  @request_examples = []
  @metadata = {}
  @tags_list = []
  @consumes_list = []
  @produces_list = []
  @security_list = nil
end

Instance Attribute Details

#metadataObject (readonly)

Returns the value of attribute metadata.



6
7
8
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 6

def 
  @metadata
end

#parametersObject (readonly)

Returns the value of attribute parameters.



6
7
8
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 6

def parameters
  @parameters
end

#request_body_definitionObject (readonly)

Returns the value of attribute request_body_definition.



6
7
8
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 6

def request_body_definition
  @request_body_definition
end

#request_examplesObject (readonly)

Returns the value of attribute request_examples.



6
7
8
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 6

def request_examples
  @request_examples
end

#responsesObject (readonly)

Returns the value of attribute responses.



6
7
8
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 6

def responses
  @responses
end

#summaryObject (readonly)

Returns the value of attribute summary.



6
7
8
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 6

def summary
  @summary
end

#verbObject (readonly)

Returns the value of attribute verb.



6
7
8
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 6

def verb
  @verb
end

Instance Method Details

#consumes(*content_types) ⇒ Object



39
40
41
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 39

def consumes(*content_types)
  @consumes_list.concat(content_types.flatten)
end

#deprecated(value = true) ⇒ Object



35
36
37
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 35

def deprecated(value = true)
  @metadata["deprecated"] = value
end

#description(text) ⇒ Object



31
32
33
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 31

def description(text)
  @metadata["description"] = text.to_s
end

#operationId(id) ⇒ Object

rubocop:disable Naming/MethodName



27
28
29
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 27

def operationId(id) # rubocop:disable Naming/MethodName
  @metadata["operationId"] = id.to_s
end

#parameter(attributes = {}) ⇒ Object



51
52
53
54
55
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 51

def parameter(attributes = {})
  param = deep_stringify(attributes)
  param["required"] = true if param["in"] == "path"
  @parameters << param
end

#produces(*content_types) ⇒ Object



43
44
45
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 43

def produces(*content_types)
  @produces_list.concat(content_types.flatten)
end

#request_body(attributes = {}) ⇒ Object



57
58
59
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 57

def request_body(attributes = {})
  @request_body_definition = deep_stringify(attributes)
end

#request_body_example(value:, name: "example", summary: nil) ⇒ Object



61
62
63
64
65
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 61

def request_body_example(value:, name: "example", summary: nil)
  entry = {"value" => value, "name" => name.to_s}
  entry["summary"] = summary if summary
  @request_examples << entry
end

#response(status_code, description, &block) ⇒ Object



67
68
69
70
71
72
73
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 67

def response(status_code, description, &block)
  ctx = ResponseContext.new(status_code, description)
  ctx.produces(*@produces_list) if @produces_list.any?
  ctx.instance_eval(&block) if block
  @responses[status_code.to_s] = ctx
  ctx
end

#security(schemes) ⇒ Object



47
48
49
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 47

def security(schemes)
  @security_list = Array(schemes).map { |s| deep_stringify(s) }
end

#tags(*values) ⇒ Object



23
24
25
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 23

def tags(*values)
  @tags_list.concat(values.flatten.map(&:to_s))
end

#to_openapiObject



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/openapi_ruby/dsl/operation_context.rb', line 75

def to_openapi
  result = {}
  result["summary"] = @summary if @summary
  result["tags"] = @tags_list if @tags_list.any?
  result.merge!(@metadata)
  result["parameters"] = @parameters if @parameters.any?
  result["security"] = @security_list if @security_list

  result["requestBody"] = build_request_body if @request_body_definition

  result["responses"] = {}
  @responses.each do |code, ctx|
    result["responses"][code] = ctx.to_openapi
  end

  result
end