Merge branch '31544-size-of-project-from-api' into 'master'
Resolve "Size of project from API" Closes #31544 See merge request !11013
This commit is contained in:
commit
12c34c1cbb
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Expose project statistics on single requests via the API
|
||||
merge_request:
|
||||
author:
|
|
@ -40,6 +40,7 @@ Parameters:
|
|||
| `owned` | boolean | no | Limit by projects owned by the current user |
|
||||
| `membership` | boolean | no | Limit by projects that the current user is a member of |
|
||||
| `starred` | boolean | no | Limit by projects starred by the current user |
|
||||
| `statistics` | boolean | no | Include project statistics |
|
||||
|
||||
```json
|
||||
[
|
||||
|
@ -91,7 +92,14 @@ Parameters:
|
|||
"shared_with_groups": [],
|
||||
"only_allow_merge_if_pipeline_succeeds": false,
|
||||
"only_allow_merge_if_all_discussions_are_resolved": false,
|
||||
"request_access_enabled": false
|
||||
"request_access_enabled": false,
|
||||
"statistics": {
|
||||
"commit_count": 37,
|
||||
"storage_size": 1038090,
|
||||
"repository_size": 1038090,
|
||||
"lfs_objects_size": 0,
|
||||
"job_artifacts_size": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
|
@ -151,7 +159,14 @@ Parameters:
|
|||
"shared_with_groups": [],
|
||||
"only_allow_merge_if_pipeline_succeeds": false,
|
||||
"only_allow_merge_if_all_discussions_are_resolved": false,
|
||||
"request_access_enabled": false
|
||||
"request_access_enabled": false,
|
||||
"statistics": {
|
||||
"commit_count": 12,
|
||||
"storage_size": 2066080,
|
||||
"repository_size": 2066080,
|
||||
"lfs_objects_size": 0,
|
||||
"job_artifacts_size": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
@ -170,6 +185,7 @@ Parameters:
|
|||
| Attribute | Type | Required | Description |
|
||||
| --------- | ---- | -------- | ----------- |
|
||||
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) |
|
||||
| `statistics` | boolean | no | Include project statistics |
|
||||
|
||||
```json
|
||||
{
|
||||
|
@ -241,7 +257,14 @@ Parameters:
|
|||
],
|
||||
"only_allow_merge_if_pipeline_succeeds": false,
|
||||
"only_allow_merge_if_all_discussions_are_resolved": false,
|
||||
"request_access_enabled": false
|
||||
"request_access_enabled": false,
|
||||
"statistics": {
|
||||
"commit_count": 37,
|
||||
"storage_size": 1038090,
|
||||
"repository_size": 1038090,
|
||||
"lfs_objects_size": 0,
|
||||
"job_artifacts_size": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -26,6 +26,10 @@ module API
|
|||
params :optional_params do
|
||||
use :optional_params_ce
|
||||
end
|
||||
|
||||
params :statistics_params do
|
||||
optional :statistics, type: Boolean, default: false, desc: 'Include project statistics'
|
||||
end
|
||||
end
|
||||
|
||||
resource :projects do
|
||||
|
@ -56,10 +60,6 @@ module API
|
|||
optional :membership, type: Boolean, default: false, desc: 'Limit by projects that the current user is a member of'
|
||||
end
|
||||
|
||||
params :statistics_params do
|
||||
optional :statistics, type: Boolean, default: false, desc: 'Include project statistics'
|
||||
end
|
||||
|
||||
params :create_params do
|
||||
optional :namespace_id, type: Integer, desc: 'Namespace ID for the new project. Default to the user namespace.'
|
||||
optional :import_url, type: String, desc: 'URL from which the project is imported'
|
||||
|
@ -85,6 +85,7 @@ module API
|
|||
end
|
||||
params do
|
||||
use :collection_params
|
||||
use :statistics_params
|
||||
end
|
||||
get do
|
||||
entity = current_user ? Entities::ProjectWithAccess : Entities::BasicProjectDetails
|
||||
|
@ -151,10 +152,13 @@ module API
|
|||
desc 'Get a single project' do
|
||||
success Entities::ProjectWithAccess
|
||||
end
|
||||
params do
|
||||
use :statistics_params
|
||||
end
|
||||
get ":id" do
|
||||
entity = current_user ? Entities::ProjectWithAccess : Entities::BasicProjectDetails
|
||||
present user_project, with: entity, current_user: current_user,
|
||||
user_can_admin_project: can?(current_user, :admin_project, user_project)
|
||||
user_can_admin_project: can?(current_user, :admin_project, user_project), statistics: params[:statistics]
|
||||
end
|
||||
|
||||
desc 'Get events for a single project' do
|
||||
|
|
|
@ -665,6 +665,20 @@ describe API::Projects do
|
|||
})
|
||||
end
|
||||
|
||||
it "does not include statistics by default" do
|
||||
get api("/projects/#{project.id}", user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(json_response).not_to include 'statistics'
|
||||
end
|
||||
|
||||
it "includes statistics if requested" do
|
||||
get api("/projects/#{project.id}", user), statistics: true
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(json_response).to include 'statistics'
|
||||
end
|
||||
|
||||
describe 'permissions' do
|
||||
context 'all projects' do
|
||||
before { project.team << [user, :master] }
|
||||
|
|
Loading…
Reference in New Issue