Class: Praxis::ResponseTemplate

Inherits:
Object
  • Object
show all
Defined in:
lib/praxis/response_template.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response_name, &block) ⇒ ResponseTemplate

Returns a new instance of ResponseTemplate.



7
8
9
10
# File 'lib/praxis/response_template.rb', line 7

def initialize(response_name, &block)
  @name = response_name
  @block = block
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



5
6
7
# File 'lib/praxis/response_template.rb', line 5

def block
  @block
end

#nameObject (readonly)

Returns the value of attribute name.



5
6
7
# File 'lib/praxis/response_template.rb', line 5

def name
  @name
end

Instance Method Details

#compile(action = nil, **args) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/praxis/response_template.rb', line 12

def compile(action = nil, **args)
  # Default media_type to the endpoint_definition one, if the block has it in
  # its required args but no value is passed (funky, but can help in the common case)
  if block.parameters.any? { |(type, name)| name == :media_type && type == :keyreq } && action && !(args.key? :media_type)
    media_type = action.endpoint_definition.media_type
    unless media_type
      raise Exceptions::InvalidConfiguration, "Could not default :media_type argument for response template #{@name}." \
                                              " Endpoint #{action.endpoint_definition} does not have an associated mediatype and none was passed"
    end
    args[:media_type] = media_type
  end
  Praxis::ResponseDefinition.new(name, **args, &block)
end

#describeObject



26
27
28
# File 'lib/praxis/response_template.rb', line 26

def describe
  puts 'TODO!!!!!!'
end