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
4123c76e
Commit
4123c76e
authored
Oct 10, 2013
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5253 from karlhungus/feature-api-download-archive
Feature api download archive
parents
69854c56
72bf6a47
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
1 deletion
+54
-1
doc/api/repositories.md
doc/api/repositories.md
+13
-0
lib/api/repositories.rb
lib/api/repositories.rb
+29
-1
spec/requests/api/repositories_spec.rb
spec/requests/api/repositories_spec.rb
+12
-0
No files found.
doc/api/repositories.md
View file @
4123c76e
...
@@ -356,3 +356,16 @@ Parameters:
...
@@ -356,3 +356,16 @@ Parameters:
+
`id`
(required) - The ID of a project
+
`id`
(required) - The ID of a project
+
`sha`
(required) - The commit or branch name
+
`sha`
(required) - The commit or branch name
+
`filepath`
(required) - The path the file
+
`filepath`
(required) - The path the file
## Get file archive
Get a an archive of the repository
```
GET /projects/:id/repository/archive
```
Parameters:
+
`id`
(required) - The ID of a project
+
`sha`
(optional) - The commit sha to download defaults to the tip of the default branch
\ No newline at end of file
lib/api/repositories.rb
View file @
4123c76e
...
@@ -144,7 +144,7 @@ module API
...
@@ -144,7 +144,7 @@ module API
trees
=
[]
trees
=
[]
%w(trees blobs submodules)
.
each
do
|
type
|
%w(trees blobs submodules)
.
each
do
|
type
|
trees
+=
tree
.
send
(
type
).
map
{
|
t
|
{
name:
t
.
name
,
type:
type
.
singularize
,
mode:
t
.
mode
,
id:
t
.
id
}
}
trees
+=
tree
.
send
(
type
).
map
{
|
t
|
{
name:
t
.
name
,
type:
type
.
singularize
,
mode:
t
.
mode
,
id:
t
.
id
}
}
end
end
trees
trees
...
@@ -176,6 +176,34 @@ module API
...
@@ -176,6 +176,34 @@ module API
content_type
blob
.
mime_type
content_type
blob
.
mime_type
present
blob
.
data
present
blob
.
data
end
end
# Get a an archive of the repository
#
# Parameters:
# id (required) - The ID of a project
# sha (optional) - the commit sha to download defaults to the tip of the default branch
# Example Request:
# GET /projects/:id/repository/archive
get
":id/repository/archive"
do
authorize!
:download_code
,
user_project
repo
=
user_project
.
repository
ref
=
params
[
:sha
]
storage_path
=
Rails
.
root
.
join
(
"tmp"
,
"repositories"
)
file_path
=
repo
.
archive_repo
(
ref
,
storage_path
)
if
file_path
&&
File
.
exists?
(
file_path
)
data
=
File
.
open
(
file_path
,
'rb'
).
read
header
"Content-Disposition:"
,
" infile; filename=
\"
#{
File
.
basename
(
file_path
)
}
\"
"
content_type
'application/x-gzip'
env
[
'api.format'
]
=
:binary
present
data
else
not_found!
end
end
end
end
end
end
end
end
...
...
spec/requests/api/repositories_spec.rb
View file @
4123c76e
...
@@ -225,4 +225,16 @@ describe API::API do
...
@@ -225,4 +225,16 @@ describe API::API do
end
end
end
end
describe
"GET /projects/:id/repository/archive/:sha"
do
it
"should get the archive"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/archive"
,
user
)
response
.
status
.
should
==
200
response
.
content_type
.
should
==
'application/x-gzip'
end
it
"should return 404 for invalid sha"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/archive/?sha=xxx"
,
user
)
response
.
status
.
should
==
404
end
end
end
end
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