mirror of https://github.com/go-gitea/gitea
add admin API email endpoints (#22792)
add email endpoint to admin API to ensure API parity with admin dashboard.pull/23421/head^2
parent
03591f0f95
commit
d56bb74201
@ -0,0 +1,87 @@ |
||||
// Copyright 2023 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package admin |
||||
|
||||
import ( |
||||
"net/http" |
||||
|
||||
user_model "code.gitea.io/gitea/models/user" |
||||
"code.gitea.io/gitea/modules/context" |
||||
api "code.gitea.io/gitea/modules/structs" |
||||
"code.gitea.io/gitea/routers/api/v1/utils" |
||||
"code.gitea.io/gitea/services/convert" |
||||
) |
||||
|
||||
// GetAllEmails
|
||||
func GetAllEmails(ctx *context.APIContext) { |
||||
// swagger:operation GET /admin/emails admin adminGetAllEmails
|
||||
// ---
|
||||
// summary: List all emails
|
||||
// produces:
|
||||
// - application/json
|
||||
// parameters:
|
||||
// - name: page
|
||||
// in: query
|
||||
// description: page number of results to return (1-based)
|
||||
// type: integer
|
||||
// - name: limit
|
||||
// in: query
|
||||
// description: page size of results
|
||||
// type: integer
|
||||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/EmailList"
|
||||
// "403":
|
||||
// "$ref": "#/responses/forbidden"
|
||||
|
||||
listOptions := utils.GetListOptions(ctx) |
||||
|
||||
emails, maxResults, err := user_model.SearchEmails(&user_model.SearchEmailOptions{ |
||||
Keyword: ctx.Params(":email"), |
||||
ListOptions: listOptions, |
||||
}) |
||||
if err != nil { |
||||
ctx.Error(http.StatusInternalServerError, "GetAllEmails", err) |
||||
return |
||||
} |
||||
|
||||
results := make([]*api.Email, len(emails)) |
||||
for i := range emails { |
||||
results[i] = convert.ToEmailSearch(emails[i]) |
||||
} |
||||
|
||||
ctx.SetLinkHeader(int(maxResults), listOptions.PageSize) |
||||
ctx.SetTotalCountHeader(maxResults) |
||||
ctx.JSON(http.StatusOK, &results) |
||||
} |
||||
|
||||
// SearchEmail
|
||||
func SearchEmail(ctx *context.APIContext) { |
||||
// swagger:operation GET /admin/emails/search admin adminSearchEmails
|
||||
// ---
|
||||
// summary: Search all emails
|
||||
// produces:
|
||||
// - application/json
|
||||
// parameters:
|
||||
// - name: q
|
||||
// in: query
|
||||
// description: keyword
|
||||
// type: string
|
||||
// - name: page
|
||||
// in: query
|
||||
// description: page number of results to return (1-based)
|
||||
// type: integer
|
||||
// - name: limit
|
||||
// in: query
|
||||
// description: page size of results
|
||||
// type: integer
|
||||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/EmailList"
|
||||
// "403":
|
||||
// "$ref": "#/responses/forbidden"
|
||||
|
||||
ctx.SetParams(":email", ctx.FormTrim("q")) |
||||
GetAllEmails(ctx) |
||||
} |
Loading…
Reference in new issue