Sha256: 5f0d32d7dc1107ac07951c7fff87a16c3a09ed4644fca043f8b2f0d508e05e80

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

require 'swagger/swagger_object'
require 'swagger/v2/parameter'
require 'swagger/v2/response'

module Swagger
  module V2
    # Class representing a Swagger "Operation Object".
    # @see https://github.com/wordnik/swagger-spec/blob/master/versions/2.0.md#operationObject Operation Object
    class Operation < SwaggerObject
      extend Forwardable
      def_delegators :parent, :uri_template, :path, :host

      # required_field :verb, Symbol
      field :summary, String
      field :description, String
      field :operationId, String
      alias_method :operation_id, :operationId
      field :produces, Array[String]
      field :consumes, Array[String]
      field :tags, Array[String]
      field :parameters, Array[Parameter]
      field :responses, Hash[String => Response]
      field :schemes, Array[String]

      # TODO: Add externalDocs

      def api_title
        root.info.title
      end

      def full_name
        "#{api_title} - #{summary}"
      end

      def verb
        parent.operations.key self
      end

      def signature
        "#{verb.to_s.upcase} #{parent.uri_template}"
      end

      def default_response
        return nil if responses.values.nil?

        # FIXME: Swagger isn't very clear on "normal response codes"
        # In the examples, default is actually an error
        responses['200'] || responses['201'] || responses['default'] || responses.values.first
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
swagger-core-0.2.1 lib/swagger/v2/operation.rb