code.gitea.io/gitea@v1.21.7/routers/api/packages/maven/api.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package maven 5 6 import ( 7 "encoding/xml" 8 "strings" 9 10 packages_model "code.gitea.io/gitea/models/packages" 11 maven_module "code.gitea.io/gitea/modules/packages/maven" 12 ) 13 14 // MetadataResponse https://maven.apache.org/ref/3.2.5/maven-repository-metadata/repository-metadata.html 15 type MetadataResponse struct { 16 XMLName xml.Name `xml:"metadata"` 17 GroupID string `xml:"groupId"` 18 ArtifactID string `xml:"artifactId"` 19 Release string `xml:"versioning>release,omitempty"` 20 Latest string `xml:"versioning>latest"` 21 Version []string `xml:"versioning>versions>version"` 22 } 23 24 // pds is expected to be sorted ascending by CreatedUnix 25 func createMetadataResponse(pds []*packages_model.PackageDescriptor) *MetadataResponse { 26 var release *packages_model.PackageDescriptor 27 28 versions := make([]string, 0, len(pds)) 29 for _, pd := range pds { 30 if !strings.HasSuffix(pd.Version.Version, "-SNAPSHOT") { 31 release = pd 32 } 33 versions = append(versions, pd.Version.Version) 34 } 35 36 latest := pds[len(pds)-1] 37 38 metadata := latest.Metadata.(*maven_module.Metadata) 39 40 resp := &MetadataResponse{ 41 GroupID: metadata.GroupID, 42 ArtifactID: metadata.ArtifactID, 43 Latest: latest.Version.Version, 44 Version: versions, 45 } 46 if release != nil { 47 resp.Release = release.Version.Version 48 } 49 return resp 50 }