管理账户偏好

读取当前账户的语言和时区,并提交调用方选择的新偏好。

准备

  1. 配置 SDK 和个人访问令牌。

  2. 语言和时区:先运行示例查看当前语言和时区,再选择需要调整的值;未指定的项目保持当前值。

需要更新时,在终端填写目标语言和时区;不设置则保持当前值:

export TARGET_LOCALE='<目标语言>'
export TARGET_TIMEZONE='<目标时区>'

读取并更新偏好

示例先读取当前值,再提交目标偏好并重新读取确认。此设置属于当前账户,不需要选择工作区。

import os

import moi_product_sdk as sdk

client = sdk.new_with_personal_access_token(
    os.environ["PRODUCT_API_BASE_URL"], os.environ["PRODUCT_API_KEY"]
)
before = client.account().preferences()
print("当前语言:", before.locale, "当前时区:", before.timezone)
locale = os.environ.get("TARGET_LOCALE", before.locale)
timezone = os.environ.get("TARGET_TIMEZONE", before.timezone)
client.account().update_preferences(sdk.AuthPreferencesRequest(locale=locale, timezone=timezone))
current = client.account().preferences()
print("保存后语言:", current.locale, "时区:", current.timezone)
if current.locale != locale or current.timezone != timezone:
    raise RuntimeError("重新读取的偏好与提交值不一致")
package main

import (
	"context"
	"fmt"
	"os"

	sdk "github.com/matrixorigin/matrixflow/sdk/go-sdk"
)

func main() {
	ctx := context.Background()
	client, err := sdk.NewWithPersonalAccessToken(os.Getenv("PRODUCT_API_BASE_URL"), os.Getenv("PRODUCT_API_KEY"))
	if err != nil {
		panic(err)
	}
	before, err := client.Account().Preferences(ctx)
	if err != nil {
		panic(err)
	}
	fmt.Println("当前语言:", before.GetLocale(), "当前时区:", before.GetTimezone())
	locale := os.Getenv("TARGET_LOCALE")
	if locale == "" {
		locale = before.GetLocale()
	}
	timezone := os.Getenv("TARGET_TIMEZONE")
	if timezone == "" {
		timezone = before.GetTimezone()
	}
	_, err = client.Account().UpdatePreferences(ctx, &sdk.AuthPreferencesRequest{Locale: &locale, Timezone: &timezone})
	if err != nil {
		panic(err)
	}
	current, err := client.Account().Preferences(ctx)
	if err != nil {
		panic(err)
	}
	fmt.Println("保存后语言:", current.GetLocale(), "时区:", current.GetTimezone())
	if current.GetLocale() != locale || current.GetTimezone() != timezone {
		panic("重新读取的偏好与提交值不一致")
	}
}

重新读取的语言和时区应与提交值一致;提交被拒绝时,按错误信息修正目标值。

最后更新于