code.gitea.io/gitea@v1.21.7/routers/api/v1/user/avatar.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package user
     5  
     6  import (
     7  	"encoding/base64"
     8  	"net/http"
     9  
    10  	"code.gitea.io/gitea/modules/context"
    11  	api "code.gitea.io/gitea/modules/structs"
    12  	"code.gitea.io/gitea/modules/web"
    13  	user_service "code.gitea.io/gitea/services/user"
    14  )
    15  
    16  // UpdateAvatar updates the Avatar of an User
    17  func UpdateAvatar(ctx *context.APIContext) {
    18  	// swagger:operation POST /user/avatar user userUpdateAvatar
    19  	// ---
    20  	// summary: Update Avatar
    21  	// produces:
    22  	// - application/json
    23  	// parameters:
    24  	// - name: body
    25  	//   in: body
    26  	//   schema:
    27  	//     "$ref": "#/definitions/UpdateUserAvatarOption"
    28  	// responses:
    29  	//   "204":
    30  	//     "$ref": "#/responses/empty"
    31  	form := web.GetForm(ctx).(*api.UpdateUserAvatarOption)
    32  
    33  	content, err := base64.StdEncoding.DecodeString(form.Image)
    34  	if err != nil {
    35  		ctx.Error(http.StatusBadRequest, "DecodeImage", err)
    36  		return
    37  	}
    38  
    39  	err = user_service.UploadAvatar(ctx.Doer, content)
    40  	if err != nil {
    41  		ctx.Error(http.StatusInternalServerError, "UploadAvatar", err)
    42  	}
    43  
    44  	ctx.Status(http.StatusNoContent)
    45  }
    46  
    47  // DeleteAvatar deletes the Avatar of an User
    48  func DeleteAvatar(ctx *context.APIContext) {
    49  	// swagger:operation DELETE /user/avatar user userDeleteAvatar
    50  	// ---
    51  	// summary: Delete Avatar
    52  	// produces:
    53  	// - application/json
    54  	// responses:
    55  	//   "204":
    56  	//     "$ref": "#/responses/empty"
    57  	err := user_service.DeleteAvatar(ctx.Doer)
    58  	if err != nil {
    59  		ctx.Error(http.StatusInternalServerError, "DeleteAvatar", err)
    60  	}
    61  
    62  	ctx.Status(http.StatusNoContent)
    63  }