All checks were successful
Galvanic Corrosion Cross-Compile / build (push) Successful in 1m50s
* Commit hash shipped with builds
* Post & pre-build events
* Objective fixes
* Orientation challenge filler
* Custom Rooms base
- Currently cannot save rooms (CDN not set up)
* Moved root path to path.ts
* Room cloning
* Rewrote instances - the whole thing
* Relationships are still untested
* Charades Words
* AG Room fetch
* Private room matchmaking
* Socket fixes
82 lines
2.2 KiB
TypeScript
82 lines
2.2 KiB
TypeScript
/* Galvanic Corrosion - Rec Room custom server for communities.
|
|
<https://gitea.proxnet.dev/zombieb/galvanic-corrosion>
|
|
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 <https://www.gnu.org/licenses/>. */
|
|
|
|
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<NoBody, NoBody, AvatarSettings>, 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
|
|
|
|
); |