/* Galvanic Corrosion - Rec Room custom server for communities. Copyright (C) 2025 @zombieb (Discord / proxnet Gitea) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ import { z } from "zod"; import { APIUtils, NoBody } from "../../apiutils.ts"; import { AuthType } from "../../data/users.ts"; import express from "express"; import { AvatarSettings } from "../../data/profile/avatar.ts"; export const route = APIUtils.createRouter("/avatar"); route.router.get('/v2', APIUtils.Authentication, APIUtils.AuthenticationType(AuthType.Game), async (_rq, rs) => { rs.json(await rs.locals.profile.Avatar.getAvatar()); }, ); const AvatarSettingsSchema = z.object({ OutfitSelections: z.string(), HairColor: z.string(), SkinColor: z.string(), FaceFeatures: z.string() }); route.router.post('/v2/set', APIUtils.Authentication, APIUtils.AuthenticationType(AuthType.Game), express.json(), APIUtils.validateRequestBody(AvatarSettingsSchema), (rq: express.Request, rs: express.Response) => { rs.locals.profile.Avatar.setAvatar(rq.body); rs.sendStatus(200); }, ); route.router.get('/v4/items', APIUtils.Authentication, APIUtils.AuthenticationType(AuthType.Game), APIUtils.emptyArrayResponse ); route.router.get('/v3/saved', APIUtils.Authentication, APIUtils.AuthenticationType(AuthType.Game), APIUtils.emptyArrayResponse ); route.router.get('/v2/gifts', APIUtils.Authentication, APIUtils.AuthenticationType(AuthType.Game), APIUtils.emptyArrayResponse );