summaryrefslogtreecommitdiff
path: root/app/finders/license_template_finder.rb
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2018-08-14 22:29:59 +0100
committerNick Thomas <nick@gitlab.com>2018-08-15 07:38:18 +0100
commitd3490f6998b13a6f74af9b6f35a28c115a25143e (patch)
treefded45a6210b94d9ca772cc13529078c6dccaa63 /app/finders/license_template_finder.rb
parentffd164d27f674b554fdffbffa828a9715c93ee60 (diff)
downloadgitlab-ce-d3490f6998b13a6f74af9b6f35a28c115a25143e.tar.gz
Introduce a LicenseTemplate model and LicenseTemplateFinder helper
Diffstat (limited to 'app/finders/license_template_finder.rb')
-rw-r--r--app/finders/license_template_finder.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/app/finders/license_template_finder.rb b/app/finders/license_template_finder.rb
new file mode 100644
index 00000000000..fad33f0eca2
--- /dev/null
+++ b/app/finders/license_template_finder.rb
@@ -0,0 +1,36 @@
+# LicenseTemplateFinder
+#
+# Used to find license templates, which may come from a variety of external
+# sources
+#
+# Arguments:
+# popular: boolean. When set to true, only "popular" licenses are shown. When
+# false, all licenses except popular ones are shown. When nil (the
+# default), *all* licenses will be shown.
+class LicenseTemplateFinder
+ attr_reader :params
+
+ def initialize(params = {})
+ @params = params
+ end
+
+ def execute
+ Licensee::License.all(featured: popular_only?).map do |license|
+ LicenseTemplate.new(
+ id: license.key,
+ name: license.name,
+ nickname: license.nickname,
+ category: (license.featured? ? :Popular : :Other),
+ content: license.content,
+ url: license.url,
+ meta: license.meta
+ )
+ end
+ end
+
+ private
+
+ def popular_only?
+ params.fetch(:popular, nil)
+ end
+end