修复路径回退的问题

This commit is contained in:
dragon
2025-05-15 17:29:30 +08:00
parent 433501e044
commit 70706fe969
2 changed files with 51 additions and 6 deletions

View File

@@ -52,19 +52,22 @@ func (p *PageDomain) ParseDomainMeta(domain, path, branch string) (*PageDomainCo
} }
owner := strings.TrimSuffix(domain, "."+p.baseDomain) owner := strings.TrimSuffix(domain, "."+p.baseDomain)
repo := pathArr[0] repo := pathArr[0]
var returnMeta *PageDomainContent
var err error
if repo == "" { if repo == "" {
// 回退到默认仓库 // 回退到默认仓库 (路径未包含仓库)
repo = p.baseDomain zap.L().Debug("fail back to default repo", zap.String("repo", domain))
zap.L().Debug("fail back to default repo", zap.String("repo", repo)) returnMeta, err = p.ReturnMeta(owner, domain, branch, pathArr)
} else {
returnMeta, err = p.ReturnMeta(owner, repo, branch, pathArr[1:])
} }
returnMeta, err := p.ReturnMeta(owner, repo, branch, pathArr[1:])
if err != nil && !errors.Is(err, os.ErrNotExist) { if err != nil && !errors.Is(err, os.ErrNotExist) {
return nil, err return nil, err
} else if err == nil { } else if err == nil {
return returnMeta, nil return returnMeta, nil
} }
// 回退到默认页面 // 发现 repo 的情况下回退到默认页面
return p.ReturnMeta(owner, repo, domain, pathArr) return p.ReturnMeta(owner, domain, branch, pathArr)
} }
func (p *PageDomain) ReturnMeta(owner string, repo string, branch string, path []string) (*PageDomainContent, error) { func (p *PageDomain) ReturnMeta(owner string, repo string, branch string, path []string) (*PageDomainContent, error) {

View File

@@ -54,6 +54,48 @@ alias:
assert.Equal(t, resp.Header.Get("Location"), "https://zzz.example.top/index.html") assert.Equal(t, resp.Header.Get("Location"), "https://zzz.example.top/index.html")
} }
func Test_fail_back(t *testing.T) {
t.Run("default", func(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/org1.example.com/gh-pages/index.html", "hello world")
data, _, err := server.OpenFile("https://org1.example.com/")
assert.NoError(t, err)
assert.Equal(t, "hello world", string(data))
})
t.Run("child_default", func(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/org1.example.com/gh-pages/index.html", "hello world 1")
server.AddFile("org1/org1.example.com/gh-pages/child/index.html", "hello world 2")
data, _, err := server.OpenFile("https://org1.example.com/child/")
assert.NoError(t, err)
assert.Equal(t, "hello world 2", string(data))
})
t.Run("child_exist", func(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/org1.example.com/gh-pages/index.html", "hello world 1")
server.AddFile("org1/org1.example.com/gh-pages/child/index.html", "hello world 2")
server.AddFile("org1/child/gh-pages/index.html", "hello world 3")
data, _, err := server.OpenFile("https://org1.example.com/child/")
assert.NoError(t, err)
assert.Equal(t, "hello world 3", string(data))
})
t.Run("child_exist_failback", func(t *testing.T) {
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/org1.example.com/gh-pages/index.html", "hello world 1")
server.AddFile("org1/org1.example.com/gh-pages/child/index.html", "hello world 2")
server.AddFile("org1/child/gh-pages/no.html", "hello world 3")
data, _, err := server.OpenFile("https://org1.example.com/child/")
assert.NoError(t, err)
assert.Equal(t, "hello world 2", string(data))
})
}
func Test_get_v_route(t *testing.T) { func Test_get_v_route(t *testing.T) {
server := core.NewDefaultTestServer() server := core.NewDefaultTestServer()
defer server.Close() defer server.Close()