MCPcopy Create free account
hub / github.com/gogs/gogs / UpdateAvatarSetting

Function UpdateAvatarSetting

internal/route/repo/setting.go:353–384  ·  view source on GitHub ↗

FIXME: limit upload size

(c *context.Context, f form.Avatar, ctxRepo *database.Repository)

Source from the content-addressed store, hash-verified

351
352// FIXME: limit upload size
353func UpdateAvatarSetting(c *context.Context, f form.Avatar, ctxRepo *database.Repository) error {
354 ctxRepo.UseCustomAvatar = true
355 if f.Avatar != nil {
356 r, err := f.Avatar.Open()
357 if err != nil {
358 return errors.Newf("open avatar reader: %v", err)
359 }
360 defer r.Close()
361
362 data, err := io.ReadAll(r)
363 if err != nil {
364 return errors.Newf("read avatar content: %v", err)
365 }
366 if !tool.IsImageFile(data) {
367 return errors.New(c.Tr("settings.uploaded_avatar_not_a_image"))
368 }
369 if err = ctxRepo.UploadAvatar(data); err != nil {
370 return errors.Newf("upload avatar: %v", err)
371 }
372 } else {
373 // No avatar is uploaded and reset setting back.
374 if !com.IsFile(ctxRepo.CustomAvatarPath()) {
375 ctxRepo.UseCustomAvatar = false
376 }
377 }
378
379 if err := database.UpdateRepository(ctxRepo, false); err != nil {
380 return errors.Newf("update repository: %v", err)
381 }
382
383 return nil
384}
385
386func SettingsCollaboration(c *context.Context) {
387 c.Data["Title"] = c.Tr("repo.settings")

Callers 1

SettingsAvatarPostFunction · 0.70

Calls 5

IsImageFileFunction · 0.92
UpdateRepositoryFunction · 0.92
TrMethod · 0.80
UploadAvatarMethod · 0.80
CustomAvatarPathMethod · 0.80

Tested by

no test coverage detected