aboutsummaryrefslogtreecommitdiffstats
path: root/services/repository/archiver/archiver.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/repository/archiver/archiver.go')
-rw-r--r--services/repository/archiver/archiver.go34
1 files changed, 20 insertions, 14 deletions
diff --git a/services/repository/archiver/archiver.go b/services/repository/archiver/archiver.go
index c33369d047..e1addbed33 100644
--- a/services/repository/archiver/archiver.go
+++ b/services/repository/archiver/archiver.go
@@ -67,30 +67,36 @@ func (e RepoRefNotFoundError) Is(err error) bool {
return ok
}
-// NewRequest creates an archival request, based on the URI. The
-// resulting ArchiveRequest is suitable for being passed to Await()
-// if it's determined that the request still needs to be satisfied.
-func NewRequest(repoID int64, repo *git.Repository, uri string) (*ArchiveRequest, error) {
- r := &ArchiveRequest{
- RepoID: repoID,
- }
-
- var ext string
+func ParseFileName(uri string) (ext string, tp git.ArchiveType, err error) {
switch {
case strings.HasSuffix(uri, ".zip"):
ext = ".zip"
- r.Type = git.ZIP
+ tp = git.ZIP
case strings.HasSuffix(uri, ".tar.gz"):
ext = ".tar.gz"
- r.Type = git.TARGZ
+ tp = git.TARGZ
case strings.HasSuffix(uri, ".bundle"):
ext = ".bundle"
- r.Type = git.BUNDLE
+ tp = git.BUNDLE
default:
- return nil, ErrUnknownArchiveFormat{RequestFormat: uri}
+ return "", 0, ErrUnknownArchiveFormat{RequestFormat: uri}
+ }
+ return ext, tp, nil
+}
+
+// NewRequest creates an archival request, based on the URI. The
+// resulting ArchiveRequest is suitable for being passed to Await()
+// if it's determined that the request still needs to be satisfied.
+func NewRequest(repoID int64, repo *git.Repository, refName string, fileType git.ArchiveType) (*ArchiveRequest, error) {
+ if fileType < git.ZIP || fileType > git.BUNDLE {
+ return nil, ErrUnknownArchiveFormat{RequestFormat: fileType.String()}
}
- r.refName = strings.TrimSuffix(uri, ext)
+ r := &ArchiveRequest{
+ RepoID: repoID,
+ refName: refName,
+ Type: fileType,
+ }
// Get corresponding commit.
commitID, err := repo.ConvertToGitID(r.refName)