mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2025-04-11 13:23:16 +00:00
37 lines
1.2 KiB
Go
37 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/bouncepaw/mycorrhiza/cfg"
|
|
"log"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"git.sr.ht/~adnano/go-gemini"
|
|
|
|
"github.com/bouncepaw/mycorrhiza/util"
|
|
)
|
|
|
|
// HyphaNameFromRq extracts hypha name from http request. You have to also pass the action which is embedded in the url or several actions. For url /hypha/hypha, the action would be "hypha".
|
|
func HyphaNameFromRq(rq *http.Request, actions ...string) string {
|
|
p := rq.URL.Path
|
|
for _, action := range actions {
|
|
if strings.HasPrefix(p, "/"+action+"/") {
|
|
return util.CanonicalName(strings.TrimPrefix(p, "/"+action+"/"))
|
|
}
|
|
}
|
|
log.Println("HyphaNameFromRq: this request is invalid, fallback to home hypha")
|
|
return cfg.HomeHypha
|
|
}
|
|
|
|
// geminiHyphaNameFromRq extracts hypha name from gemini request. You have to also pass the action which is embedded in the url or several actions. For url /hypha/hypha, the action would be "hypha".
|
|
func geminiHyphaNameFromRq(rq *gemini.Request, actions ...string) string {
|
|
p := rq.URL.Path
|
|
for _, action := range actions {
|
|
if strings.HasPrefix(p, "/"+action+"/") {
|
|
return util.CanonicalName(strings.TrimPrefix(p, "/"+action+"/"))
|
|
}
|
|
}
|
|
log.Fatal("HyphaNameFromRq: no matching action passed")
|
|
return ""
|
|
}
|