Update /users/userpage to use querystring parameters
This commit is contained in:
parent
5f97315d49
commit
4448fcdfdb
|
@ -31,7 +31,7 @@ func Start(conf common.Conf, db *sql.DB) *gin.Engine {
|
||||||
gv1.GET("/users/self", Method(v1.UserSelfGET, db, common.PrivilegeRead))
|
gv1.GET("/users/self", Method(v1.UserSelfGET, db, common.PrivilegeRead))
|
||||||
gv1.GET("/users/whatid", Method(v1.UserWhatsTheIDGET, db, common.PrivilegeRead))
|
gv1.GET("/users/whatid", Method(v1.UserWhatsTheIDGET, db, common.PrivilegeRead))
|
||||||
gv1.GET("/users/full", Method(v1.UserFullGET, db, common.PrivilegeRead))
|
gv1.GET("/users/full", Method(v1.UserFullGET, db, common.PrivilegeRead))
|
||||||
gv1.GET("/users/userpage/:id", Method(v1.UserUserpageGET, db, common.PrivilegeRead))
|
gv1.GET("/users/userpage", Method(v1.UserUserpageGET, db, common.PrivilegeRead))
|
||||||
gv1.GET("/badges", Method(v1.BadgesGET, db, common.PrivilegeRead))
|
gv1.GET("/badges", Method(v1.BadgesGET, db, common.PrivilegeRead))
|
||||||
gv1.GET("/badges/:id", Method(v1.BadgeByIDGET, db, common.PrivilegeRead))
|
gv1.GET("/badges/:id", Method(v1.BadgeByIDGET, db, common.PrivilegeRead))
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ type userData struct {
|
||||||
|
|
||||||
// UsersGET is the API handler for GET /users
|
// UsersGET is the API handler for GET /users
|
||||||
func UsersGET(md common.MethodData) common.CodeMessager {
|
func UsersGET(md common.MethodData) common.CodeMessager {
|
||||||
shouldRet, whereClause, param := whereClauseUser(md)
|
shouldRet, whereClause, param := whereClauseUser(md, "users")
|
||||||
if shouldRet != nil {
|
if shouldRet != nil {
|
||||||
return *shouldRet
|
return *shouldRet
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ type userFullResponse struct {
|
||||||
|
|
||||||
// UserFullGET gets all of an user's information, with one exception: their userpage.
|
// UserFullGET gets all of an user's information, with one exception: their userpage.
|
||||||
func UserFullGET(md common.MethodData) common.CodeMessager {
|
func UserFullGET(md common.MethodData) common.CodeMessager {
|
||||||
shouldRet, whereClause, param := whereClauseUser(md)
|
shouldRet, whereClause, param := whereClauseUser(md, "users")
|
||||||
if shouldRet != nil {
|
if shouldRet != nil {
|
||||||
return *shouldRet
|
return *shouldRet
|
||||||
}
|
}
|
||||||
|
@ -240,11 +240,15 @@ type userpageResponse struct {
|
||||||
|
|
||||||
// UserUserpageGET gets an user's userpage, as in the customisable thing.
|
// UserUserpageGET gets an user's userpage, as in the customisable thing.
|
||||||
func UserUserpageGET(md common.MethodData) common.CodeMessager {
|
func UserUserpageGET(md common.MethodData) common.CodeMessager {
|
||||||
|
shouldRet, whereClause, param := whereClauseUser(md, "users_stats")
|
||||||
|
if shouldRet != nil {
|
||||||
|
return *shouldRet
|
||||||
|
}
|
||||||
var r userpageResponse
|
var r userpageResponse
|
||||||
err := md.DB.QueryRow("SELECT userpage_content FROM users_stats WHERE id = ? LIMIT 1", md.C.Param("id")).Scan(&r.Userpage)
|
err := md.DB.QueryRow("SELECT userpage_content FROM users_stats WHERE "+whereClause+" LIMIT 1", param).Scan(&r.Userpage)
|
||||||
switch {
|
switch {
|
||||||
case err == sql.ErrNoRows:
|
case err == sql.ErrNoRows:
|
||||||
return common.SimpleResponse(404, "No user with that user ID!")
|
return common.SimpleResponse(404, "No such user!")
|
||||||
case err != nil:
|
case err != nil:
|
||||||
md.Err(err)
|
md.Err(err)
|
||||||
return Err500
|
return Err500
|
||||||
|
@ -253,19 +257,19 @@ func UserUserpageGET(md common.MethodData) common.CodeMessager {
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func whereClauseUser(md common.MethodData) (*common.CodeMessager, string, interface{}) {
|
func whereClauseUser(md common.MethodData, tableName string) (*common.CodeMessager, string, interface{}) {
|
||||||
switch {
|
switch {
|
||||||
case md.C.Query("id") == "self":
|
case md.C.Query("id") == "self":
|
||||||
return nil, "users.id = ?", md.ID()
|
return nil, tableName + ".id = ?", md.ID()
|
||||||
case md.C.Query("id") != "":
|
case md.C.Query("id") != "":
|
||||||
id, err := strconv.Atoi(md.C.Query("id"))
|
id, err := strconv.Atoi(md.C.Query("id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
a := common.SimpleResponse(400, "please pass a valid user ID")
|
a := common.SimpleResponse(400, "please pass a valid user ID")
|
||||||
return &a, "", nil
|
return &a, "", nil
|
||||||
}
|
}
|
||||||
return nil, "users.id = ?", id
|
return nil, tableName + ".id = ?", id
|
||||||
case md.C.Query("name") != "":
|
case md.C.Query("name") != "":
|
||||||
return nil, "users.username = ?", md.C.Query("name")
|
return nil, tableName + ".username = ?", md.C.Query("name")
|
||||||
}
|
}
|
||||||
a := common.SimpleResponse(400, "you need to pass either querystring parameters name or id")
|
a := common.SimpleResponse(400, "you need to pass either querystring parameters name or id")
|
||||||
return &a, "", nil
|
return &a, "", nil
|
||||||
|
|
Loading…
Reference in New Issue
Block a user