summaryrefslogtreecommitdiffstats
path: root/routers/api/v1/user/settings.go
diff options
context:
space:
mode:
Diffstat (limited to 'routers/api/v1/user/settings.go')
-rw-r--r--routers/api/v1/user/settings.go83
1 files changed, 83 insertions, 0 deletions
diff --git a/routers/api/v1/user/settings.go b/routers/api/v1/user/settings.go
new file mode 100644
index 0000000000..b4548e7443
--- /dev/null
+++ b/routers/api/v1/user/settings.go
@@ -0,0 +1,83 @@
+// Copyright 2021 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package user
+
+import (
+ "net/http"
+
+ "code.gitea.io/gitea/models"
+ "code.gitea.io/gitea/modules/context"
+ "code.gitea.io/gitea/modules/convert"
+ api "code.gitea.io/gitea/modules/structs"
+ "code.gitea.io/gitea/modules/web"
+)
+
+// GetUserSettings returns user settings
+func GetUserSettings(ctx *context.APIContext) {
+ // swagger:operation GET /user/settings user getUserSettings
+ // ---
+ // summary: Get user settings
+ // produces:
+ // - application/json
+ // responses:
+ // "200":
+ // "$ref": "#/responses/UserSettings"
+ ctx.JSON(http.StatusOK, convert.User2UserSettings(ctx.User))
+}
+
+// UpdateUserSettings returns user settings
+func UpdateUserSettings(ctx *context.APIContext) {
+ // swagger:operation PATCH /user/settings user updateUserSettings
+ // ---
+ // summary: Update user settings
+ // parameters:
+ // - name: body
+ // in: body
+ // schema:
+ // "$ref": "#/definitions/UserSettingsOptions"
+ // produces:
+ // - application/json
+ // responses:
+ // "200":
+ // "$ref": "#/responses/UserSettings"
+
+ form := web.GetForm(ctx).(*api.UserSettingsOptions)
+
+ if form.FullName != nil {
+ ctx.User.FullName = *form.FullName
+ }
+ if form.Description != nil {
+ ctx.User.Description = *form.Description
+ }
+ if form.Website != nil {
+ ctx.User.Website = *form.Website
+ }
+ if form.Location != nil {
+ ctx.User.Location = *form.Location
+ }
+ if form.Language != nil {
+ ctx.User.Language = *form.Language
+ }
+ if form.Theme != nil {
+ ctx.User.Theme = *form.Theme
+ }
+ if form.DiffViewStyle != nil {
+ ctx.User.DiffViewStyle = *form.DiffViewStyle
+ }
+
+ if form.HideEmail != nil {
+ ctx.User.KeepEmailPrivate = *form.HideEmail
+ }
+ if form.HideActivity != nil {
+ ctx.User.KeepActivityPrivate = *form.HideActivity
+ }
+
+ if err := models.UpdateUser(ctx.User); err != nil {
+ ctx.InternalServerError(err)
+ return
+ }
+
+ ctx.JSON(http.StatusOK, convert.User2UserSettings(ctx.User))
+}