Skip to content

Commit e256657

Browse files
authored
Merge pull request #18937 from eduardoj/refactoring/backend_api_source_project
Refactor project backend calls to use `Backend::Api`
2 parents 61a6318 + 9472000 commit e256657

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

src/api/app/controllers/source_project_controller.rb

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -110,25 +110,25 @@ def delete
110110
render_ok
111111
end
112112

113-
# GET /source/:project/_pubkey and /_sslcert
113+
# GET /source/:project/_pubkey
114114
def show_pubkey
115-
# assemble path for backend
116-
path = pubkey_path
117-
118-
# GET /source/:project/_pubkey
119-
pass_to_backend(path)
115+
render plain: Backend::Api::Sources::Project.pubkey(params[:project], { rev: params[:rev] }.compact)
120116
end
121117

122118
# DELETE /source/:project/_pubkey
123119
def delete_pubkey
124-
params[:user] = User.session.login
125-
path = pubkey_path
120+
backend_params = {
121+
user: User.session.login,
122+
meta: params[:meta],
123+
comment: params[:comment]
124+
}.compact
126125

127126
# check for permissions
128-
upper_project = @prj.name.gsub(/:[^:]*$/, '')
129-
while upper_project != @prj.name && upper_project.present?
127+
project_name = Project.get_by_name(params[:project]).name
128+
upper_project = project_name.gsub(/:[^:]*$/, '')
129+
while upper_project != project_name && upper_project.present?
130130
if Project.exists_by_name(upper_project) && User.session.can_modify?(Project.get_by_name(upper_project))
131-
pass_to_backend(path)
131+
render xml: Backend::Api::Sources::Project.delete_pubkey(params[:project], backend_params)
132132
return
133133
end
134134
break unless upper_project.include?(':')
@@ -137,18 +137,10 @@ def delete_pubkey
137137
end
138138

139139
if User.admin_session?
140-
pass_to_backend(path)
140+
render xml: Backend::Api::Sources::Project.delete_pubkey(params[:project], backend_params)
141141
else
142142
raise DeleteProjectPubkeyNoPermission, "No permission to delete public key for project '#{params[:project]}'. " \
143143
'Either maintainer permissions by upper project or admin permissions is needed.'
144144
end
145145
end
146-
147-
private
148-
149-
def pubkey_path
150-
# check for project
151-
@prj = Project.get_by_name(params[:project])
152-
request.path_info + build_query_from_hash(params, %i[user comment meta rev])
153-
end
154146
end

src/api/app/lib/backend/api/sources/project.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,18 @@ def self.key_info(project_name)
5959
http_get(['/source/:project/_keyinfo', project_name], params: { withsslcert: 1, donotcreatecert: 1 })
6060
end
6161

62+
# Returns the pubkey file for the project
63+
# @return [String]
64+
def self.pubkey(project_name, options = {})
65+
http_get(['/source/:project/_pubkey', project_name], params: options, accepted: %i[rev])
66+
end
67+
68+
# Deletes the pubkey file for the project
69+
# @return [String]
70+
def self.delete_pubkey(project_name, options = {})
71+
http_delete(['/source/:project/_pubkey', project_name], params: options, accepted: %i[user comment meta])
72+
end
73+
6274
# Returns the patchinfo for the project
6375
# @return [String]
6476
def self.patchinfo(project_name)

0 commit comments

Comments
 (0)