drone/registry/app/pkg/maven/utils/utils.go
Arvind Choudhary ced5ce2f65 feat: [AH-993]: Complete implementation of Upstream changes of Python Package (#3573)
* [AH-993]: Review comments fixed
* [AH-993]: Merge commit
* [AH-993]: Updated upstream creation
* [AH-993]: Cleanup
* [AH-993]: Updated messages
* [AH-993]: Merge commit
* [AH-993]: Upstream flows support for Python Packages
* [AH-993]: Updated local file
* [AH-993]: Added support for local and created arch to support different package types
* Merge branch 'main' of https://git0.harness.io/l7B_kbSEQD2wjrM7PShm5w/PROD/Harness_Commons/gitness into AH-993-upstream-implementation
* [AH-993]: temp commit
* [AH-993]: Merge commit:
* [AH-993]: temp update
2025-03-25 05:36:47 +00:00

133 lines
3.4 KiB
Go

// Copyright 2023 Harness, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package utils
import (
"fmt"
"net/http"
"path/filepath"
"strings"
"github.com/harness/gitness/registry/app/pkg"
"github.com/harness/gitness/registry/app/pkg/commons"
"github.com/harness/gitness/registry/types"
)
const (
extensionXML = ".xml"
extensionMD5 = ".md5"
extensionSHA1 = ".sha1"
extensionSHA256 = ".sha256"
extensionSHA512 = ".sha512"
extensionPom = ".pom"
extensionJar = ".jar"
contentTypeJar = "application/java-archive"
contentTypeXML = "text/xml"
contentTypePlainText = "text/plain"
)
const (
Jar = ".jar"
War = ".war"
Ear = ".ear"
Zip = ".zip"
TarGz = ".tar.gz"
So = ".so"
Dll = ".dll"
Dylib = ".dylib"
Rpm = ".rpm"
Deb = ".deb"
Exe = ".exe"
)
var MainArtifactFileExtensions = []string{
Jar,
War,
Ear,
Zip,
TarGz,
So,
Dll,
Dylib,
Rpm,
Deb,
Exe,
}
func GetFilePath(info pkg.MavenArtifactInfo) string {
groupIDPath := strings.ReplaceAll(info.GroupID, ".", "/")
return "/" + groupIDPath + "/" + info.ArtifactID + "/" + info.Version + "/" + info.FileName
}
func IsMainArtifactFile(info pkg.MavenArtifactInfo) bool {
filePath := GetFilePath(info)
fileExtension := strings.ToLower(filepath.Ext(filePath))
for _, ext := range MainArtifactFileExtensions {
if ext == fileExtension {
return true
}
}
return false
}
func SetHeaders(
info pkg.MavenArtifactInfo,
fileInfo types.FileInfo,
) *commons.ResponseHeaders {
responseHeaders := &commons.ResponseHeaders{
Headers: map[string]string{},
Code: http.StatusOK,
}
filePath := GetFilePath(info)
ext := strings.ToLower(filepath.Ext(filePath))
responseHeaders.Code = http.StatusOK
responseHeaders.Headers["Content-Length"] = fmt.Sprintf("%d", fileInfo.Size)
responseHeaders.Headers["LastModified"] = fmt.Sprintf("%d", fileInfo.CreatedAt.Unix())
responseHeaders.Headers["Filename"] = fileInfo.Filename
switch ext {
case extensionJar:
responseHeaders.Headers["Content-Type"] = contentTypeJar
case extensionPom, extensionXML:
responseHeaders.Headers["Content-Type"] = contentTypeXML
case extensionMD5, extensionSHA1, extensionSHA256, extensionSHA512:
responseHeaders.Headers["Content-Type"] = contentTypePlainText
}
return responseHeaders
}
func IsSnapshotVersion(info pkg.MavenArtifactInfo) bool {
return strings.HasSuffix(info.Version, "-SNAPSHOT")
}
func AddLikeBeforeExtension(info pkg.MavenArtifactInfo) string {
filePath := GetFilePath(info)
ext := strings.ToLower(filepath.Ext(filePath))
extIndex := len(filePath) - len(ext)
return filePath[:extIndex] + "%" + ext
}
func ParseResponseHeaders(resp *http.Response) *commons.ResponseHeaders {
headers := make(map[string]string)
if resp.Header != nil {
for key, values := range resp.Header {
headers[key] = values[0]
}
}
return &commons.ResponseHeaders{
Headers: headers,
Code: http.StatusOK,
}
}