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