Support access branch that contains slash character (#102) All checks were successful ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
So we can access branch that contain slash like `branch/name` with `username.codeberg.page/repo/@branch~name/`. Branch name cannot contain `~` character but it can be in a HTTP URL, so replace the `~` from URL to `/` could be a valid solution to me. Resolve #101 Co-authored-by: Gary Wang <wzc782970009@gmail.com> Reviewed-on: #102 Reviewed-by: 6543 <6543@noreply.codeberg.org> Co-authored-by: Gary Wang <blumia@noreply.codeberg.org> Co-committed-by: Gary Wang <blumia@noreply.codeberg.org>
This commit is contained in:
parent 48a49f69a7
commit 9076bc3f75
3 changed files with 16 additions and 1 deletions
| @ -18,7 +18,8 @@ Mapping custom domains is not static anymore, but can be done with DNS: | |||
first line will be the canonical domain/URL; all other occurrences will be redirected to it. | ||||
| ||||
2) add a CNAME entry to your domain, pointing to `[[{branch}.]{repo}.]{owner}.codeberg.page` (repo defaults to | ||||
"pages", "branch" defaults to the default branch if "repo" is "pages", or to "pages" if "repo" is something else): | ||||
"pages", "branch" defaults to the default branch if "repo" is "pages", or to "pages" if "repo" is something else. | ||||
If the branch name contains slash characters, you need to replace "/" in the branch name to "~"): | ||||
`www.example.org. IN CNAME main.pages.example.codeberg.page.` | ||||
| ||||
3) if a CNAME is set for "www.example.org", you can redirect there from the naked domain by adding an ALIAS record | ||||
| |
| @ -49,6 +49,16 @@ func TestGetContent(t *testing.T) { | |||
assert.EqualValues(t, "text/html; charset=utf-8", resp.Header.Get("Content-Type")) | ||||
assert.True(t, getSize(resp.Body) > 1000) | ||||
assert.Len(t, resp.Header.Get("ETag"), 42) | ||||
| ||||
// access branch name contains '/' | ||||
resp, err = getTestHTTPSClient().Get("https://blumia.localhost.mock.directory:4430/pages-server-integration-tests/@docs~main/") | ||||
assert.NoError(t, err) | ||||
if !assert.EqualValues(t, http.StatusOK, resp.StatusCode) { | ||||
t.FailNow() | ||||
} | ||||
assert.EqualValues(t, "text/html; charset=utf-8", resp.Header.Get("Content-Type")) | ||||
assert.True(t, getSize(resp.Body) > 100) | ||||
assert.Len(t, resp.Header.Get("ETag"), 42) | ||||
} | ||||
| ||||
func TestCustomDomain(t *testing.T) { | ||||
| |
| @ -89,6 +89,10 @@ func Handler(mainDomainSuffix, rawDomain []byte, | |||
return false | ||||
} | ||||
| ||||
// Replace "~" to "/" so we can access branch that contains slash character | ||||
// Branch name cannot contain "~" so doing this is okay | ||||
branch = strings.ReplaceAll(branch, "~", "/") | ||||
| ||||
// Check if the branch exists, otherwise treat it as a file path | ||||
branchTimestampResult := upstream.GetBranchTimestamp(giteaClient, targetOwner, repo, branch, branchTimestampCache) | ||||
if branchTimestampResult == nil { | ||||
| |
Loading…
Add table
Add a link
Reference in a new issue