Class: GrapeOpenapi3::Readers::RouteReader

Inherits:
Object
  • Object
show all
Defined in:
lib/grape_openapi3/readers/route_reader.rb

Overview

Reads a Grape::Router::Route and returns a plain Hash of structured data. Returns nil for hidden routes (they should be skipped).

What we read from the route:

route.request_method          → http_method
route.path                    → path (via PathNormalizer)
route.options[:description]   → summary (first arg to desc "...")
route.options[:detail]        → detail (longer description)
route.options[:tags]          → tags
route.options[:hidden]        → hidden (skip if true)
route.options[:deprecated]    → deprecated
route.options[:success]       → success_entity (Grape::Entity class)
route.options[:entity]        → success_entity (alias)
route.options[:is_array]      → is_array
route.options[:http_codes]    → failure_codes (alias: :failure)
route.options[:consumes]      → consumes
route.options[:produces]      → produces
route.options[:security]      → security
route.params                  → params (path captures + declared params merged)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(route) ⇒ RouteReader

Returns a new instance of RouteReader.



29
30
31
# File 'lib/grape_openapi3/readers/route_reader.rb', line 29

def initialize(route)
  @route = route
end

Class Method Details

.call(route) ⇒ Object



25
26
27
# File 'lib/grape_openapi3/readers/route_reader.rb', line 25

def self.call(route)
  new(route).call
end

Instance Method Details

#callObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/grape_openapi3/readers/route_reader.rb', line 33

def call
  return nil if hidden?

  {
    http_method:    @route.request_method.downcase,
    path:           PathNormalizer.call(@route.path, version: route_version),
    summary:        summary,
    detail:         @route.options[:detail],
    tags:           Array(@route.options[:tags]),
    deprecated:     @route.options[:deprecated] || false,
    security:       @route.options[:security],
    params:         normalized_params,
    success_entity: success_entity,
    is_array:       @route.options[:is_array] || false,
    failure_codes:  normalized_failure_codes,
    consumes:       Array(@route.options[:consumes]),
    produces:       Array(@route.options[:produces]),
  }
end