code.gitea.io/gitea@v1.22.3/routers/api/v1/user/settings.go (about)

     1  // Copyright 2021 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package user
     5  
     6  import (
     7  	"net/http"
     8  
     9  	"code.gitea.io/gitea/modules/optional"
    10  	api "code.gitea.io/gitea/modules/structs"
    11  	"code.gitea.io/gitea/modules/web"
    12  	"code.gitea.io/gitea/services/context"
    13  	"code.gitea.io/gitea/services/convert"
    14  	user_service "code.gitea.io/gitea/services/user"
    15  )
    16  
    17  // GetUserSettings returns user settings
    18  func GetUserSettings(ctx *context.APIContext) {
    19  	// swagger:operation GET /user/settings user getUserSettings
    20  	// ---
    21  	// summary: Get user settings
    22  	// produces:
    23  	// - application/json
    24  	// responses:
    25  	//   "200":
    26  	//     "$ref": "#/responses/UserSettings"
    27  	ctx.JSON(http.StatusOK, convert.User2UserSettings(ctx.Doer))
    28  }
    29  
    30  // UpdateUserSettings returns user settings
    31  func UpdateUserSettings(ctx *context.APIContext) {
    32  	// swagger:operation PATCH /user/settings user updateUserSettings
    33  	// ---
    34  	// summary: Update user settings
    35  	// parameters:
    36  	// - name: body
    37  	//   in: body
    38  	//   schema:
    39  	//     "$ref": "#/definitions/UserSettingsOptions"
    40  	// produces:
    41  	// - application/json
    42  	// responses:
    43  	//   "200":
    44  	//     "$ref": "#/responses/UserSettings"
    45  
    46  	form := web.GetForm(ctx).(*api.UserSettingsOptions)
    47  
    48  	opts := &user_service.UpdateOptions{
    49  		FullName:            optional.FromPtr(form.FullName),
    50  		Description:         optional.FromPtr(form.Description),
    51  		Website:             optional.FromPtr(form.Website),
    52  		Location:            optional.FromPtr(form.Location),
    53  		Language:            optional.FromPtr(form.Language),
    54  		Theme:               optional.FromPtr(form.Theme),
    55  		DiffViewStyle:       optional.FromPtr(form.DiffViewStyle),
    56  		KeepEmailPrivate:    optional.FromPtr(form.HideEmail),
    57  		KeepActivityPrivate: optional.FromPtr(form.HideActivity),
    58  	}
    59  	if err := user_service.UpdateUser(ctx, ctx.Doer, opts); err != nil {
    60  		ctx.InternalServerError(err)
    61  		return
    62  	}
    63  
    64  	ctx.JSON(http.StatusOK, convert.User2UserSettings(ctx.Doer))
    65  }