mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-10 01:05:14 +00:00
feat: improve URI parsing in webfinger endpoint
This commit is contained in:
parent
855d75d0bc
commit
8273f8b756
|
@ -70,13 +70,57 @@ func WebfingerQuery(ctx *context.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
parts := strings.Split(resource.Path, "/")
|
||||
if len(parts) < 2 { // fragment[0] is empty space, fragment[1] may be username
|
||||
ctx.Error(http.StatusBadRequest)
|
||||
p, _ := strings.CutPrefix(resource.Path, "/")
|
||||
p, _ = strings.CutSuffix(p, "/")
|
||||
if len(p) == 0 {
|
||||
ctx.Error(http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
u, err = user_model.GetUserByName(ctx, parts[1])
|
||||
parts := strings.Split(p, "/")
|
||||
|
||||
switch len(parts) {
|
||||
case 1: // user
|
||||
u, err = user_model.GetUserByName(ctx, parts[0])
|
||||
// case 2: // repository
|
||||
// ctx.Error(http.StatusNotFound)
|
||||
// return
|
||||
//
|
||||
// case 3:
|
||||
// switch parts[2] {
|
||||
// case "issues":
|
||||
// ctx.Error(http.StatusNotFound)
|
||||
// return
|
||||
//
|
||||
// case "pulls":
|
||||
// ctx.Error(http.StatusNotFound)
|
||||
// return
|
||||
//
|
||||
// case "projects":
|
||||
// ctx.Error(http.StatusNotFound)
|
||||
// return
|
||||
//
|
||||
// default:
|
||||
// ctx.Error(http.StatusNotFound)
|
||||
// return
|
||||
//
|
||||
// }
|
||||
// case 4:
|
||||
// if parts[3] == "teams" {
|
||||
// ctx.Error(http.StatusNotFound)
|
||||
// return
|
||||
//
|
||||
// } else {
|
||||
// ctx.Error(http.StatusNotFound)
|
||||
// return
|
||||
// }
|
||||
|
||||
default:
|
||||
ctx.Error(http.StatusNotFound)
|
||||
return
|
||||
|
||||
}
|
||||
|
||||
default:
|
||||
ctx.Error(http.StatusBadRequest)
|
||||
return
|
||||
|
|
Loading…
Reference in a new issue