gitea源码

email.go 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package admin
  4. import (
  5. "net/http"
  6. user_model "code.gitea.io/gitea/models/user"
  7. api "code.gitea.io/gitea/modules/structs"
  8. "code.gitea.io/gitea/routers/api/v1/utils"
  9. "code.gitea.io/gitea/services/context"
  10. "code.gitea.io/gitea/services/convert"
  11. )
  12. // GetAllEmails
  13. func GetAllEmails(ctx *context.APIContext) {
  14. // swagger:operation GET /admin/emails admin adminGetAllEmails
  15. // ---
  16. // summary: List all emails
  17. // produces:
  18. // - application/json
  19. // parameters:
  20. // - name: page
  21. // in: query
  22. // description: page number of results to return (1-based)
  23. // type: integer
  24. // - name: limit
  25. // in: query
  26. // description: page size of results
  27. // type: integer
  28. // responses:
  29. // "200":
  30. // "$ref": "#/responses/EmailList"
  31. // "403":
  32. // "$ref": "#/responses/forbidden"
  33. listOptions := utils.GetListOptions(ctx)
  34. emails, maxResults, err := user_model.SearchEmails(ctx, &user_model.SearchEmailOptions{
  35. Keyword: ctx.PathParam("email"),
  36. ListOptions: listOptions,
  37. })
  38. if err != nil {
  39. ctx.APIErrorInternal(err)
  40. return
  41. }
  42. results := make([]*api.Email, len(emails))
  43. for i := range emails {
  44. results[i] = convert.ToEmailSearch(emails[i])
  45. }
  46. ctx.SetLinkHeader(int(maxResults), listOptions.PageSize)
  47. ctx.SetTotalCountHeader(maxResults)
  48. ctx.JSON(http.StatusOK, &results)
  49. }
  50. // SearchEmail
  51. func SearchEmail(ctx *context.APIContext) {
  52. // swagger:operation GET /admin/emails/search admin adminSearchEmails
  53. // ---
  54. // summary: Search all emails
  55. // produces:
  56. // - application/json
  57. // parameters:
  58. // - name: q
  59. // in: query
  60. // description: keyword
  61. // type: string
  62. // - name: page
  63. // in: query
  64. // description: page number of results to return (1-based)
  65. // type: integer
  66. // - name: limit
  67. // in: query
  68. // description: page size of results
  69. // type: integer
  70. // responses:
  71. // "200":
  72. // "$ref": "#/responses/EmailList"
  73. // "403":
  74. // "$ref": "#/responses/forbidden"
  75. ctx.SetPathParam("email", ctx.FormTrim("q"))
  76. GetAllEmails(ctx)
  77. }