Commit 2840992b authored by Nick Thomas's avatar Nick Thomas

Allow the TemplateFinder to handle licenses as well

parent 4e84e8ab
...@@ -7,6 +7,16 @@ class TemplateFinder ...@@ -7,6 +7,16 @@ class TemplateFinder
gitlab_ci_ymls: ::Gitlab::Template::GitlabCiYmlTemplate gitlab_ci_ymls: ::Gitlab::Template::GitlabCiYmlTemplate
}.freeze }.freeze
class << self
def build(type, params = {})
if type == :licenses
LicenseTemplateFinder.new(params)
else
new(type, params)
end
end
end
attr_reader :type, :params attr_reader :type, :params
attr_reader :vendored_templates attr_reader :vendored_templates
......
...@@ -33,7 +33,7 @@ module API ...@@ -33,7 +33,7 @@ module API
popular = declared(params)[:popular] popular = declared(params)[:popular]
popular = to_boolean(popular) if popular.present? popular = to_boolean(popular) if popular.present?
templates = LicenseTemplateFinder.new(popular: popular).execute templates = TemplateFinder.build(:licenses, popular: popular).execute
present paginate(::Kaminari.paginate_array(templates)), with: ::API::Entities::License present paginate(::Kaminari.paginate_array(templates)), with: ::API::Entities::License
end end
...@@ -46,7 +46,7 @@ module API ...@@ -46,7 +46,7 @@ module API
requires :name, type: String, desc: 'The name of the template' requires :name, type: String, desc: 'The name of the template'
end end
get "templates/licenses/:name", requirements: { name: /[\w\.-]+/ } do get "templates/licenses/:name", requirements: { name: /[\w\.-]+/ } do
templates = LicenseTemplateFinder.new.execute templates = TemplateFinder.build(:licenses).execute
template = templates.find { |template| template.key == params[:name] } template = templates.find { |template| template.key == params[:name] }
not_found!('License') unless template.present? not_found!('License') unless template.present?
...@@ -82,7 +82,7 @@ module API ...@@ -82,7 +82,7 @@ module API
requires :name, type: String, desc: 'The name of the template' requires :name, type: String, desc: 'The name of the template'
end end
get "templates/#{template_type}/:name" do get "templates/#{template_type}/:name" do
finder = TemplateFinder.new(template_type, name: declared(params)[:name]) finder = TemplateFinder.build(template_type, name: declared(params)[:name])
new_template = finder.execute new_template = finder.execute
render_response(template_type, new_template) render_response(template_type, new_template)
......
...@@ -3,6 +3,21 @@ require 'spec_helper' ...@@ -3,6 +3,21 @@ require 'spec_helper'
describe TemplateFinder do describe TemplateFinder do
using RSpec::Parameterized::TableSyntax using RSpec::Parameterized::TableSyntax
describe '#build' do
where(:type, :expected_class) do
:dockerfiles | described_class
:gitignores | described_class
:gitlab_ci_ymls | described_class
:licenses | ::LicenseTemplateFinder
end
with_them do
subject { described_class.build(type) }
it { is_expected.to be_a(expected_class) }
end
end
describe '#execute' do describe '#execute' do
where(:type, :vendored_name) do where(:type, :vendored_name) do
:dockerfiles | 'Binary' :dockerfiles | 'Binary'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment