summaryrefslogtreecommitdiffstats
path: root/routers/api/v1
diff options
context:
space:
mode:
Diffstat (limited to 'routers/api/v1')
-rw-r--r--routers/api/v1/api.go4
-rw-r--r--routers/api/v1/swagger/options.go3
-rw-r--r--routers/api/v1/swagger/user.go7
-rw-r--r--routers/api/v1/user/settings.go83
4 files changed, 97 insertions, 0 deletions
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go
index 9efc2af244..87db804dcb 100644
--- a/routers/api/v1/api.go
+++ b/routers/api/v1/api.go
@@ -649,6 +649,10 @@ func Routes() *web.Route {
m.Group("/user", func() {
m.Get("", user.GetAuthenticatedUser)
+ m.Group("/settings", func() {
+ m.Get("", user.GetUserSettings)
+ m.Patch("", bind(api.UserSettingsOptions{}), user.UpdateUserSettings)
+ }, reqToken())
m.Combo("/emails").Get(user.ListEmails).
Post(bind(api.CreateEmailOption{}), user.AddEmail).
Delete(bind(api.DeleteEmailOption{}), user.DeleteEmail)
diff --git a/routers/api/v1/swagger/options.go b/routers/api/v1/swagger/options.go
index 11158fb86d..b5f34e86a3 100644
--- a/routers/api/v1/swagger/options.go
+++ b/routers/api/v1/swagger/options.go
@@ -161,4 +161,7 @@ type swaggerParameterBodies struct {
// in:body
CreateTagOption api.CreateTagOption
+
+ // in:body
+ UserSettingsOptions api.UserSettingsOptions
}
diff --git a/routers/api/v1/swagger/user.go b/routers/api/v1/swagger/user.go
index a2df40e4cf..a4d5201236 100644
--- a/routers/api/v1/swagger/user.go
+++ b/routers/api/v1/swagger/user.go
@@ -42,3 +42,10 @@ type swaggerResponseUserHeatmapData struct {
// in:body
Body []models.UserHeatmapData `json:"body"`
}
+
+// UserSettings
+// swagger:response UserSettings
+type swaggerResponseUserSettings struct {
+ // in:body
+ Body []api.UserSettings `json:"body"`
+}
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))
+}