forked from NYANDEV/forgejo
254a82842a
This adds an API for uploading and Deleting Avatars for of Users, Repos and Organisations. I'm not sure, if this should also be added to the Admin API. Resolves #25344 --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Giteabot <teabot@gitea.io>
74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package org
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"net/http"
|
|
|
|
"code.gitea.io/gitea/modules/context"
|
|
api "code.gitea.io/gitea/modules/structs"
|
|
"code.gitea.io/gitea/modules/web"
|
|
user_service "code.gitea.io/gitea/services/user"
|
|
)
|
|
|
|
// UpdateAvatarupdates the Avatar of an Organisation
|
|
func UpdateAvatar(ctx *context.APIContext) {
|
|
// swagger:operation POST /orgs/{org}/avatar organization orgUpdateAvatar
|
|
// ---
|
|
// summary: Update Avatar
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: org
|
|
// in: path
|
|
// description: name of the organization
|
|
// type: string
|
|
// required: true
|
|
// - name: body
|
|
// in: body
|
|
// schema:
|
|
// "$ref": "#/definitions/UpdateUserAvatarOption"
|
|
// responses:
|
|
// "204":
|
|
// "$ref": "#/responses/empty"
|
|
form := web.GetForm(ctx).(*api.UpdateUserAvatarOption)
|
|
|
|
content, err := base64.StdEncoding.DecodeString(form.Image)
|
|
if err != nil {
|
|
ctx.Error(http.StatusBadRequest, "DecodeImage", err)
|
|
return
|
|
}
|
|
|
|
err = user_service.UploadAvatar(ctx.Org.Organization.AsUser(), content)
|
|
if err != nil {
|
|
ctx.Error(http.StatusInternalServerError, "UploadAvatar", err)
|
|
}
|
|
|
|
ctx.Status(http.StatusNoContent)
|
|
}
|
|
|
|
// DeleteAvatar deletes the Avatar of an Organisation
|
|
func DeleteAvatar(ctx *context.APIContext) {
|
|
// swagger:operation DELETE /orgs/{org}/avatar organization orgDeleteAvatar
|
|
// ---
|
|
// summary: Delete Avatar
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: org
|
|
// in: path
|
|
// description: name of the organization
|
|
// type: string
|
|
// required: true
|
|
// responses:
|
|
// "204":
|
|
// "$ref": "#/responses/empty"
|
|
err := user_service.DeleteAvatar(ctx.Org.Organization.AsUser())
|
|
if err != nil {
|
|
ctx.Error(http.StatusInternalServerError, "DeleteAvatar", err)
|
|
}
|
|
|
|
ctx.Status(http.StatusNoContent)
|
|
}
|