class APIGatewayDSL::Operation
Attributes
context[R]
cors[R]
description[RW]
integrations[R]
parameters[R]
path[R]
responses[R]
summary[RW]
Public Class Methods
new(context, method, path, **options, &block)
click to toggle source
# File lib/api_gateway_dsl/operation.rb, line 7 def initialize(context, method, path, **options, &block) @context = context.dup @method = method @path = path @cors = options[:cors] @security = options[:security] @parameters = Parameter::Collection.new @integrations = Integration::Collection.new @responses = Response::Collection.new DSL::OperationNode.new(self, &block) end
Public Instance Methods
as_json()
click to toggle source
rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
# File lib/api_gateway_dsl/operation.rb, line 43 def as_json {}.tap do |result| result[:summary] = summary if summary result[:description] = description.strip_heredoc if description result[:security] = [@security => []] if @security if (produces = responses.content_types).present? result[:produces] = produces end result[:responses] = responses.as_json if (integration = integrations.first) if (consumes = integration.templates.content_types).present? result[:consumes] = consumes end if (params = parameters_with_body.as_json).present? result[:parameters] = params end result[:'x-amazon-apigateway-integration'] = integration.as_json end end end
cors_method()
click to toggle source
# File lib/api_gateway_dsl/operation.rb, line 38 def cors_method @method # not downcased end
method()
click to toggle source
# File lib/api_gateway_dsl/operation.rb, line 31 def method case @method when 'ANY' then 'x-amazon-apigateway-any-method' else @method.downcase end end
parameters_with_body()
click to toggle source
# File lib/api_gateway_dsl/operation.rb, line 23 def parameters_with_body Parameter::Collection.new.concat(parameters).tap do |result| if (integration = integrations.first) result.concat(integration.templates.parameters) end end end