Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
f6f62950
Commit
f6f62950
authored
6 years ago
by
Nick Thomas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Convert the license template API to use the new LicenseTemplateFinder
parent
40d1fc1c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
31 deletions
+18
-31
lib/api/entities.rb
lib/api/entities.rb
+1
-1
lib/api/templates.rb
lib/api/templates.rb
+14
-30
spec/requests/api/templates_spec.rb
spec/requests/api/templates_spec.rb
+3
-0
No files found.
lib/api/entities.rb
View file @
f6f62950
...
...
@@ -1159,7 +1159,7 @@ module API
class
License
<
Grape
::
Entity
expose
:key
,
:name
,
:nickname
expose
:
featured
,
as: :popular
expose
:
popular?
,
as: :popular
expose
:url
,
as: :html_url
expose
(
:source_url
)
{
|
license
|
license
.
meta
[
'source'
]
}
expose
(
:description
)
{
|
license
|
license
.
meta
[
'description'
]
}
...
...
This diff is collapsed.
Click to expand it.
lib/api/templates.rb
View file @
f6f62950
...
...
@@ -16,31 +16,8 @@ module API
gitlab_version:
8.15
}
}.
freeze
PROJECT_TEMPLATE_REGEX
=
%r{[
\<\{\[
]
(project|description|
one
\s
line
\s
.+
\s
what
\s
it
\s
does
\.
) # matching the start and end is enough here
[
\>\}\]
]}xi
.
freeze
YEAR_TEMPLATE_REGEX
=
/[<{\[](year|yyyy)[>}\]]/i
.
freeze
FULLNAME_TEMPLATE_REGEX
=
%r{[
\<\{\[
]
(fullname|name
\s
of
\s
(author|copyright
\s
owner))
[
\>\}\]
]}xi
.
freeze
helpers
do
def
parsed_license_template
# We create a fresh Licensee::License object since we'll modify its
# content in place below.
template
=
Licensee
::
License
.
new
(
params
[
:name
])
template
.
content
.
gsub!
(
YEAR_TEMPLATE_REGEX
,
Time
.
now
.
year
.
to_s
)
template
.
content
.
gsub!
(
PROJECT_TEMPLATE_REGEX
,
params
[
:project
])
if
params
[
:project
].
present?
fullname
=
params
[
:fullname
].
presence
||
current_user
.
try
(
:name
)
template
.
content
.
gsub!
(
FULLNAME_TEMPLATE_REGEX
,
fullname
)
if
fullname
template
end
def
render_response
(
template_type
,
template
)
not_found!
(
template_type
.
to_s
.
singularize
)
unless
template
present
template
,
with:
Entities
::
Template
...
...
@@ -56,11 +33,12 @@ module API
use
:pagination
end
get
"templates/licenses"
do
options
=
{
featured:
declared
(
params
)[
:popular
].
present?
?
true
:
nil
}
licences
=
::
Kaminari
.
paginate_array
(
Licensee
::
License
.
all
(
options
))
present
paginate
(
licences
),
with:
Entities
::
License
popular
=
declared
(
params
)[
:popular
]
popular
=
to_boolean
(
popular
)
if
popular
.
present?
templates
=
LicenseTemplateFinder
.
new
(
popular:
popular
).
execute
present
paginate
(
::
Kaminari
.
paginate_array
(
templates
)),
with:
::
API
::
Entities
::
License
end
desc
'Get the text for a specific license'
do
...
...
@@ -71,9 +49,15 @@ module API
requires
:name
,
type:
String
,
desc:
'The name of the template'
end
get
"templates/licenses/:name"
,
requirements:
{
name:
/[\w\.-]+/
}
do
not_found!
(
'License'
)
unless
Licensee
::
License
.
find
(
declared
(
params
)[
:name
])
templates
=
LicenseTemplateFinder
.
new
.
execute
template
=
templates
.
find
{
|
template
|
template
.
key
==
params
[
:name
]
}
not_found!
(
'License'
)
unless
template
.
present?
template
=
parsed_license_template
template
.
resolve!
(
project_name:
params
[
:project
].
presence
,
fullname:
params
[
:fullname
].
presence
||
current_user
&
.
name
)
present
template
,
with:
::
API
::
Entities
::
License
end
...
...
This diff is collapsed.
Click to expand it.
spec/requests/api/templates_spec.rb
View file @
f6f62950
...
...
@@ -56,6 +56,8 @@ describe API::Templates do
end
it
'returns a license template'
do
expect
(
response
).
to
have_gitlab_http_status
(
200
)
expect
(
json_response
[
'key'
]).
to
eq
(
'mit'
)
expect
(
json_response
[
'name'
]).
to
eq
(
'MIT License'
)
expect
(
json_response
[
'nickname'
]).
to
be_nil
...
...
@@ -181,6 +183,7 @@ describe API::Templates do
it
'replaces the copyright owner placeholder with the name of the current user'
do
get
api
(
'/templates/licenses/mit'
,
user
)
expect
(
response
).
to
have_gitlab_http_status
(
200
)
expect
(
json_response
[
'content'
]).
to
include
(
"Copyright (c)
#{
Time
.
now
.
year
}
#{
user
.
name
}
"
)
end
end
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment