修复路径回退的问题
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user