feat: improve URI parsing in webfinger endpoint
This commit is contained in:
parent
855d75d0bc
commit
8273f8b756
1 changed files with 48 additions and 4 deletions
|
@ -70,13 +70,57 @@ func WebfingerQuery(ctx *context.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
parts := strings.Split(resource.Path, "/")
|
p, _ := strings.CutPrefix(resource.Path, "/")
|
||||||
if len(parts) < 2 { // fragment[0] is empty space, fragment[1] may be username
|
p, _ = strings.CutSuffix(p, "/")
|
||||||
ctx.Error(http.StatusBadRequest)
|
if len(p) == 0 {
|
||||||
|
ctx.Error(http.StatusNotFound)
|
||||||
return
|
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:
|
default:
|
||||||
ctx.Error(http.StatusBadRequest)
|
ctx.Error(http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in a new issue