in internal/source/gitlab/gitlab.go [67:114]
func (g *Gitlab) Resolve(r *http.Request) (*serving.Request, error) {
host := request.GetHostWithoutPort(r)
response := g.client.Resolve(r.Context(), host)
if response.Error != nil {
return nil, response.Error
}
urlPath := path.Clean(r.URL.Path)
if urlPath == "." {
// If the result of Clean process is an empty string, it returns the string "."
urlPath = "/"
}
lowerURLPath := strings.ToLower(urlPath)
size := len(response.Domain.LookupPaths)
for _, lookup := range response.Domain.LookupPaths {
lookupPrefix := strings.ToLower(lookup.Prefix)
isSubPath := strings.HasPrefix(lowerURLPath, lookupPrefix)
isRootPath := lowerURLPath == path.Clean(lookupPrefix)
if isSubPath || isRootPath {
subPath := ""
if isSubPath {
subPath = urlPath[len(lookupPrefix):]
}
srv, err := g.fabricateServing(lookup)
if err != nil {
return nil, err
}
return &serving.Request{
Serving: srv,
LookupPath: fabricateLookupPath(size, lookup),
SubPath: subPath}, nil
}
}
logging.LogRequest(r).WithError(domain.ErrDomainDoesNotExist).WithFields(
log.Fields{
"lookup_paths_count": size,
"lookup_paths": response.Domain.LookupPaths,
}).Error("could not find project lookup path")
return nil, domain.ErrDomainDoesNotExist
}