in internal/artifact/artifact.go [182:210]
func (a *Artifact) BuildURL(host, requestPath string) (*url.URL, bool) {
if !strings.HasSuffix(strings.ToLower(host), a.suffix) {
return nil, false
}
topGroup := host[0 : len(host)-len(a.suffix)]
parts := pathExtractor.FindAllStringSubmatch(requestPath, 1)
if len(parts) != 1 || len(parts[0]) != 4 {
return nil, false
}
restOfPath := strings.TrimLeft(strings.TrimRight(parts[0][1], "/"), "/")
if len(restOfPath) == 0 {
return nil, false
}
jobID := parts[0][2]
artifactPath := encodePathSegments(parts[0][3])
projectID := url.PathEscape(path.Join(topGroup, restOfPath))
generated := fmt.Sprintf(apiURLTemplate, a.server, projectID, jobID, artifactPath)
u, err := url.Parse(generated)
if err != nil {
return nil, false
}
return u, true
}