Commit eae1fd12 authored by Mathieu Parent's avatar Mathieu Parent Committed by Steve Abrams

Add Debian API endpoint for {In,}Release files

parent 628a2020
...@@ -40,6 +40,14 @@ module API ...@@ -40,6 +40,14 @@ module API
.sent_through(:http_basic_auth) .sent_through(:http_basic_auth)
end end
helpers do
def present_release_file
distribution = ::Packages::Debian::DistributionsFinder.new(project_or_group, codename_or_suite: params[:distribution]).execute.last!
present_carrierwave_file!(distribution.file)
end
end
format :txt format :txt
content_type :txt, 'text/plain' content_type :txt, 'text/plain'
...@@ -65,8 +73,7 @@ module API ...@@ -65,8 +73,7 @@ module API
route_setting :authentication, authenticate_non_public: true route_setting :authentication, authenticate_non_public: true
get 'Release' do get 'Release' do
# https://gitlab.com/gitlab-org/gitlab/-/issues/5835#note_414103286 present_release_file
'TODO Release'
end end
# GET {projects|groups}/:id/packages/debian/dists/*distribution/InRelease # GET {projects|groups}/:id/packages/debian/dists/*distribution/InRelease
...@@ -76,7 +83,8 @@ module API ...@@ -76,7 +83,8 @@ module API
route_setting :authentication, authenticate_non_public: true route_setting :authentication, authenticate_non_public: true
get 'InRelease' do get 'InRelease' do
not_found! # Signature to be added in 7.3 of https://gitlab.com/groups/gitlab-org/-/epics/6057#note_582697034
present_release_file
end end
params do params do
......
...@@ -24,6 +24,12 @@ module API ...@@ -24,6 +24,12 @@ module API
end end
namespace ':id/-' do namespace ':id/-' do
helpers do
def project_or_group
user_group
end
end
include ::API::Concerns::Packages::DebianPackageEndpoints include ::API::Concerns::Packages::DebianPackageEndpoints
end end
end end
......
...@@ -15,13 +15,13 @@ RSpec.describe API::DebianGroupPackages do ...@@ -15,13 +15,13 @@ RSpec.describe API::DebianGroupPackages do
describe 'GET groups/:id/-/packages/debian/dists/*distribution/Release' do describe 'GET groups/:id/-/packages/debian/dists/*distribution/Release' do
let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/Release" } let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/Release" }
it_behaves_like 'Debian repository read endpoint', 'GET request', :success, /^TODO Release$/ it_behaves_like 'Debian repository read endpoint', 'GET request', :success, /^Codename: fixture-distribution\n$/
end end
describe 'GET groups/:id/-/packages/debian/dists/*distribution/InRelease' do describe 'GET groups/:id/-/packages/debian/dists/*distribution/InRelease' do
let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/InRelease" } let(:url) { "/groups/#{container.id}/-/packages/debian/dists/#{distribution.codename}/InRelease" }
it_behaves_like 'Debian repository read endpoint', 'GET request', :not_found it_behaves_like 'Debian repository read endpoint', 'GET request', :success, /^Codename: fixture-distribution\n$/
end end
describe 'GET groups/:id/-/packages/debian/dists/*distribution/:component/binary-:architecture/Packages' do describe 'GET groups/:id/-/packages/debian/dists/*distribution/:component/binary-:architecture/Packages' do
......
...@@ -15,13 +15,13 @@ RSpec.describe API::DebianProjectPackages do ...@@ -15,13 +15,13 @@ RSpec.describe API::DebianProjectPackages do
describe 'GET projects/:id/packages/debian/dists/*distribution/Release' do describe 'GET projects/:id/packages/debian/dists/*distribution/Release' do
let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/Release" } let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/Release" }
it_behaves_like 'Debian repository read endpoint', 'GET request', :success, /^TODO Release$/ it_behaves_like 'Debian repository read endpoint', 'GET request', :success, /^Codename: fixture-distribution\n$/
end end
describe 'GET projects/:id/packages/debian/dists/*distribution/InRelease' do describe 'GET projects/:id/packages/debian/dists/*distribution/InRelease' do
let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/InRelease" } let(:url) { "/projects/#{container.id}/packages/debian/dists/#{distribution.codename}/InRelease" }
it_behaves_like 'Debian repository read endpoint', 'GET request', :not_found it_behaves_like 'Debian repository read endpoint', 'GET request', :success, /^Codename: fixture-distribution\n$/
end end
describe 'GET projects/:id/packages/debian/dists/*distribution/:component/binary-:architecture/Packages' do describe 'GET projects/:id/packages/debian/dists/*distribution/:component/binary-:architecture/Packages' do
......
...@@ -12,12 +12,12 @@ RSpec.shared_context 'Debian repository shared context' do |container_type, can_ ...@@ -12,12 +12,12 @@ RSpec.shared_context 'Debian repository shared context' do |container_type, can_
let_it_be(:user, freeze: true) { create(:user) } let_it_be(:user, freeze: true) { create(:user) }
let_it_be(:personal_access_token, freeze: true) { create(:personal_access_token, user: user) } let_it_be(:personal_access_token, freeze: true) { create(:personal_access_token, user: user) }
let_it_be(:private_distribution, freeze: true) { create("debian_#{container_type}_distribution", container: private_container, codename: 'existing-codename') } let_it_be(:private_distribution, freeze: true) { create("debian_#{container_type}_distribution", :with_file, container: private_container, codename: 'existing-codename') }
let_it_be(:private_component, freeze: true) { create("debian_#{container_type}_component", distribution: private_distribution, name: 'existing-component') } let_it_be(:private_component, freeze: true) { create("debian_#{container_type}_component", distribution: private_distribution, name: 'existing-component') }
let_it_be(:private_architecture_all, freeze: true) { create("debian_#{container_type}_architecture", distribution: private_distribution, name: 'all') } let_it_be(:private_architecture_all, freeze: true) { create("debian_#{container_type}_architecture", distribution: private_distribution, name: 'all') }
let_it_be(:private_architecture, freeze: true) { create("debian_#{container_type}_architecture", distribution: private_distribution, name: 'existing-arch') } let_it_be(:private_architecture, freeze: true) { create("debian_#{container_type}_architecture", distribution: private_distribution, name: 'existing-arch') }
let_it_be(:public_distribution, freeze: true) { create("debian_#{container_type}_distribution", container: public_container, codename: 'existing-codename') } let_it_be(:public_distribution, freeze: true) { create("debian_#{container_type}_distribution", :with_file, container: public_container, codename: 'existing-codename') }
let_it_be(:public_component, freeze: true) { create("debian_#{container_type}_component", distribution: public_distribution, name: 'existing-component') } let_it_be(:public_component, freeze: true) { create("debian_#{container_type}_component", distribution: public_distribution, name: 'existing-component') }
let_it_be(:public_architecture_all, freeze: true) { create("debian_#{container_type}_architecture", distribution: public_distribution, name: 'all') } let_it_be(:public_architecture_all, freeze: true) { create("debian_#{container_type}_architecture", distribution: public_distribution, name: 'all') }
let_it_be(:public_architecture, freeze: true) { create("debian_#{container_type}_architecture", distribution: public_distribution, name: 'existing-arch') } let_it_be(:public_architecture, freeze: true) { create("debian_#{container_type}_architecture", distribution: public_distribution, name: 'existing-arch') }
......
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