fix gemini git routing
This commit is contained in:
parent
8e3f1e83c1
commit
3d02a271f4
32
gemini.go
32
gemini.go
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
sr "tildegit.org/tjp/sliderule"
|
||||
"tildegit.org/tjp/sliderule/contrib/cgi"
|
||||
|
@ -96,13 +97,7 @@ func addGeminiRoute(router *sr.Router, route RouteDirective) {
|
|||
return GeminiAuthMiddleware(route.Auth)(handler)
|
||||
})
|
||||
case "git":
|
||||
buildAndAddRoute(router, route, func(route RouteDirective) sr.Handler {
|
||||
var handler sr.Handler = syw.GeminiRouter(route.FsPath, nil)
|
||||
if route.Modifiers.AutoAtom {
|
||||
handler = atomconv.Auto(handler)
|
||||
}
|
||||
return GeminiAuthMiddleware(route.Auth)(handler)
|
||||
})
|
||||
addGeminiGitRoute(router, route)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -149,3 +144,26 @@ func addGeminiStaticRoute(router *sr.Router, route RouteDirective) {
|
|||
return handler
|
||||
})
|
||||
}
|
||||
|
||||
func addGeminiGitRoute(router *sr.Router, route RouteDirective) {
|
||||
buildAndAddRoute(router, route, func(route RouteDirective) sr.Handler {
|
||||
handler := sr.HandlerFunc(func(ctx context.Context, request *sr.Request) *sr.Response {
|
||||
subrouter := syw.GeminiRouter(route.FsPath, nil)
|
||||
|
||||
reqclone := cloneRequest(request)
|
||||
reqclone.Path = strings.TrimPrefix(reqclone.Path, route.URLPath)
|
||||
|
||||
fmt.Printf("original %s, relative %s\n", request.Path, reqclone.Path)
|
||||
|
||||
handler, params := subrouter.Match(reqclone)
|
||||
if handler == nil {
|
||||
return nil
|
||||
}
|
||||
return handler.Handle(context.WithValue(ctx, sr.RouteParamsKey, params), request)
|
||||
})
|
||||
if route.Modifiers.AutoAtom {
|
||||
handler = atomconv.Auto(handler)
|
||||
}
|
||||
return GeminiAuthMiddleware(route.Auth)(handler)
|
||||
})
|
||||
}
|
||||
|
|
4
go.mod
4
go.mod
|
@ -4,8 +4,8 @@ go 1.21.0
|
|||
|
||||
require (
|
||||
github.com/go-kit/log v0.2.1
|
||||
tildegit.org/tjp/sliderule v1.4.0
|
||||
tildegit.org/tjp/syw v0.9.1
|
||||
tildegit.org/tjp/sliderule v1.4.1
|
||||
tildegit.org/tjp/syw v0.9.2
|
||||
)
|
||||
|
||||
require github.com/go-logfmt/logfmt v0.6.0 // indirect
|
||||
|
|
8
go.sum
8
go.sum
|
@ -10,7 +10,7 @@ github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKs
|
|||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
tildegit.org/tjp/sliderule v1.4.0 h1:upukklvJ2Jh781zb9AUjoLJtwFS1JeEMLaa+Dn9MwMk=
|
||||
tildegit.org/tjp/sliderule v1.4.0/go.mod h1:opdo8E25iS9X9pNismM8U7pCH8XO0PdRIIhdADn8Uik=
|
||||
tildegit.org/tjp/syw v0.9.1 h1:yciiupIOXP3HCql1MJ7u4fB8b4/WP8xA1nccwwRjmMM=
|
||||
tildegit.org/tjp/syw v0.9.1/go.mod h1:Rb1MeYlKK8dcZivujzRvdo9DQhoQf6R4UToQP5KB6WI=
|
||||
tildegit.org/tjp/sliderule v1.4.1 h1:L1evSiVqhiHSVgWBCFgDXhT30OZdWUHRq8CahCDkd+I=
|
||||
tildegit.org/tjp/sliderule v1.4.1/go.mod h1:opdo8E25iS9X9pNismM8U7pCH8XO0PdRIIhdADn8Uik=
|
||||
tildegit.org/tjp/syw v0.9.2 h1:bwLRXJqC5RHes2dfntgePHYnh6iIQC9FZpFBTReemQ0=
|
||||
tildegit.org/tjp/syw v0.9.2/go.mod h1:Oo05KA7QibiXxoPh5jzpKUq/RG4U3nz7qs6QVitZw8I=
|
||||
|
|
Loading…
Reference in New Issue