Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions app/controllers/apipie/apipies_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,13 @@ def authorized_doc
def get_format
[:resource, :method, :version].each do |par|
if params[par]
params[:format] = :html unless params[par].sub!('.html', '').nil?
params[:format] = :json unless params[par].sub!('.json', '').nil?
if params[par].end_with?('.html')
params[par] = params[par].sub('.html', '')
params[:format] = :html
elsif params[par].end_with?('.json')
params[par] = params[par].sub('.json', '')
params[:format] = :json
end
end
end
request.format = params[:format] if params[:format]
Expand All @@ -125,7 +130,7 @@ def get_format
def render_from_cache
path = Apipie.configuration.doc_base_url.dup
# some params can contain dot, but only one in row
if [:resource, :method, :format, :version].any? { |p| params[p].to_s.gsub(".", "") =~ /\W/ || params[p].to_s =~ /\.\./ }
if [:resource, :method, :format, :version].any? { |p| params[p].to_s =~ /\.\./ }
head :bad_request and return
end

Expand Down
12 changes: 7 additions & 5 deletions lib/apipie/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ def get_resource_name(klass)
elsif Apipie.configuration.namespaced_resources? && klass.respond_to?(:controller_path)
return nil if klass == ActionController::Base
path = klass.controller_path
path.gsub(version_prefix(klass), "").gsub("/", "-")
path.sub(version_with_prefix(klass), "").gsub("/", "-")
elsif klass.respond_to?(:controller_name)
return nil if klass == ActionController::Base
klass.controller_name
Expand Down Expand Up @@ -389,11 +389,13 @@ def valid_search_args?(version, resource_name, method_name)
return true
end

def version_prefix(klass)
def version_with_prefix(klass)
version = controller_versions(klass).first
base_url = get_base_url(version)
return "/" if base_url.nil?
base_url[1..-1] + "/"
base_url = get_base_url(version).to_s
base_url = base_url[1..-1] if base_url.start_with?('/')
base_url = base_url[1...-1] if base_url.end_with?('/')
return "#{version}/" if base_url.empty?
"#{base_url}/#{version}/"
end

def get_base_url(version)
Expand Down