diff --git a/lib/grape-swagger/doc_methods.rb b/lib/grape-swagger/doc_methods.rb index efb850e3..f208fae6 100644 --- a/lib/grape-swagger/doc_methods.rb +++ b/lib/grape-swagger/doc_methods.rb @@ -50,7 +50,7 @@ def self.output_path_definitions(combi_routes, endpoint, target_class, options) options ) - paths, definitions = endpoint.path_and_definition_objects(combi_routes, options) + paths, definitions = endpoint.path_and_definition_objects(combi_routes, options, endpoint.request) tags = tags_from(paths, options) output[:tags] = tags unless tags.empty? || paths.blank? diff --git a/lib/grape-swagger/doc_methods/path_string.rb b/lib/grape-swagger/doc_methods/path_string.rb index 1fc02aa1..92a1b30b 100644 --- a/lib/grape-swagger/doc_methods/path_string.rb +++ b/lib/grape-swagger/doc_methods/path_string.rb @@ -4,7 +4,7 @@ module GrapeSwagger module DocMethods class PathString class << self - def build(route, options = {}) + def build(route, options = {}, request = nil) path = route.path.dup # always removing format path.sub!(/\(\.\w+?\)$/, '') @@ -25,7 +25,7 @@ def build(route, options = {}) path.sub!('/{version}', '') end - path = "#{OptionalObject.build(:base_path, options)}#{path}" if options[:add_base_path] + path = "#{OptionalObject.build(:base_path, options, request)}#{path}" if options[:add_base_path] [item, path.start_with?('/') ? path : "/#{path}"] end diff --git a/lib/grape-swagger/endpoint.rb b/lib/grape-swagger/endpoint.rb index dd93f864..c0f6a967 100644 --- a/lib/grape-swagger/endpoint.rb +++ b/lib/grape-swagger/endpoint.rb @@ -76,12 +76,12 @@ def contact_object(infos) end # building path and definitions objects - def path_and_definition_objects(namespace_routes, options) + def path_and_definition_objects(namespace_routes, options, request = nil) @paths = {} @definitions = {} add_definitions_from options[:models] namespace_routes.each_value do |routes| - path_item(routes, options) + path_item(routes, options, request) end [@paths, @definitions] @@ -94,11 +94,11 @@ def add_definitions_from(models) end # path object - def path_item(routes, options) + def path_item(routes, options, request = nil) routes.each do |route| next if hidden?(route, options) - @item, path = GrapeSwagger::DocMethods::PathString.build(route, options) + @item, path = GrapeSwagger::DocMethods::PathString.build(route, options, request) @entity = route.entity || route.options[:success] verb, method_object = method_object(route, options, path)