drone/registry/app/pkg/maven/utils/utils.go
Pragyesh Mishra eb778919ee [feat]: [AH-147]: maven api base (#3282)
* [feat]: [AH-147]: comment out file manager dependency
* [feat]: [AH-147]: comment out file manager dependency
* [feat]: [AH-147]: comment out file manager dependency
* [feat]: [AH-147]: remote methods
* [feat]: [AH-147]: maven apis
* Merge branch 'main' of https://git0.harness.io/l7B_kbSEQD2wjrM7PShm5w/PROD/Harness_Commons/gitness into maven-apis
* [feat]: [AH-147]: maven apis
* [feat]: [AH-147]: maven apis
* [feat]: [AH-147]: maven api contract
* [feat]: [AH-147]: maven api contract
* [feat]: [AH-147]: maven api contract
* [feat]: [AH-147]: maven api contract
2025-01-20 13:26:20 +00:00

92 lines
2.8 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"
)
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"
)
func GetFilePath(info pkg.MavenArtifactInfo) string {
groupIDPath := strings.ReplaceAll(info.GroupID, ".", "/")
return "/" + groupIDPath + "/" + info.ArtifactID + "/" + info.Version + "/" + info.FileName
}
func SetHeaders(info pkg.MavenArtifactInfo,
fileInfo pkg.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,
}
}