Class: Operation

Inherits:
Object
  • Object
show all
Defined in:
lib/tiki/operation.rb

Instance Method Summary collapse

Constructor Details

#initialize(operation_id = nil) ⇒ Operation



17
18
19
20
# File 'lib/tiki/operation.rb', line 17

def initialize(operation_id = nil)
  @operation_id = operation_id
  @responses = []
end

Instance Method Details

#external_documentation(url = nil, &block) ⇒ Object



22
23
24
25
# File 'lib/tiki/operation.rb', line 22

def external_documentation(url = nil, &block)
  @external_documentation = ExternalDocumentation.new url
  @external_documentation.instance_eval(&block) if block
end

#parameter(name = nil, ref: nil, **named, &block) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/tiki/operation.rb', line 27

def parameter(name = nil, ref: nil, **named, &block)
  @parameters ||= []
  if ref
    reference = Reference.new ref
    @parameters.push reference
  else
    parameter = Parameter.new name, **named
    parameter.instance_eval(&block) if block
    @parameters.push parameter
  end
end

#request_body(*args, ref: nil, **named, &block) ⇒ Object Also known as: request_body?, body



39
40
41
42
43
44
45
46
47
# File 'lib/tiki/operation.rb', line 39

def request_body(*args, ref: nil, **named, &block)
  if ref
    @request_body = Reference.new ref, :request_body
  else
    body = RequestBody.new(*args, **named)
    body.instance_eval(&block) if block
    @request_body = body
  end
end

#request_body!(*args, **named) ⇒ Object Also known as: body!



49
50
51
# File 'lib/tiki/operation.rb', line 49

def request_body!(*args, **named)
  request_body(*args, required: true, **named)
end

#response(status = nil, schema = nil, description: nil, ref: nil, &block) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/tiki/operation.rb', line 58

def response(status = nil, schema = nil, description: nil, ref: nil, &block)
  if ref
    @responses.push [status || 200, Reference.new(ref, :response)]
  else
    unless status.is_a?(Integer) || schema
      schema = status
      status = 200
    end
    response = Response.new schema, description: description || reason(status)
    response.instance_eval(&block) if block
    @responses.push [status, response]
  end
end

#responses(*statuses) ⇒ Object



72
73
74
# File 'lib/tiki/operation.rb', line 72

def responses(*statuses)
  statuses.each { |status| response status }
end

#tags(*tags) ⇒ Object



76
77
78
# File 'lib/tiki/operation.rb', line 76

def tags(*tags)
  @tags = tags.flatten
end

#to_specObject



80
81
82
83
84
85
86
87
# File 'lib/tiki/operation.rb', line 80

def to_spec
  props = {}
  scalar_props props
  array_props props
  hash_props props
  object_props props
  props
end