Work towards fixing openapi spec

This commit is contained in:
Madeline 2023-03-24 04:16:58 +11:00
parent 1fd01fa000
commit 0f928e479c
No known key found for this signature in database
GPG Key ID: 1958E017C36F2E47
14 changed files with 72 additions and 48 deletions

Binary file not shown.

Binary file not shown.

View File

@ -85,13 +85,15 @@ function apiRoutes() {
.map((x) => ({ name: x }));
specification.components = specification.components || {};
specification.components.securitySchemes = {
bearer: {
type: "http",
scheme: "bearer",
description: "Bearer/Bot prefixes are not required.",
specification.components.securitySchemes = [
{
bearer: {
type: "http",
scheme: "bearer",
description: "Bearer/Bot prefixes are not required.",
},
},
};
];
routes.forEach((route, pathAndMethod) => {
const [p, method] = pathAndMethod.split("|");
@ -109,7 +111,7 @@ function apiRoutes() {
return x.test(path);
})
) {
obj.security = [{ bearer: true }];
obj.security = [{ bearer: [] }];
}
if (route.body) {

View File

@ -91,9 +91,9 @@ function main() {
if (!part) continue;
// this is a hack. want some want to check if its a @column, instead
if (part.properties)
Object.keys(part.properties)
.filter((key) =>
if (part.properties) {
for (let key in part.properties) {
if (
[
// BaseClass methods
"toJSON",
@ -104,9 +104,31 @@ function main() {
"recover",
"reload",
"assign",
].includes(key),
)
.forEach((key) => delete part.properties[key]);
].includes(key)
) {
delete part.properties[key];
continue;
}
if (part.properties[key].anyOf) {
const nullIndex = part.properties[key].anyOf.findIndex(
(x) => x.type == "null",
);
if (nullIndex != -1) {
part.properties[key].nullable = true;
part.properties[key].anyOf.splice(nullIndex, 1);
if (part.properties[key].anyOf.length == 1) {
Object.assign(
part.properties[key],
part.properties[key].anyOf[0],
);
delete part.properties[key].anyOf;
}
}
}
}
}
definitions = { ...definitions, [name]: { ...part } };
}

View File

@ -22,17 +22,6 @@ import { route, RouteOptions } from "@fosscord/api";
const router = Router();
export interface GatewayBotResponse {
url: string;
shards: number;
session_start_limit: {
total: number;
remaining: number;
reset_after: number;
max_concurrency: number;
};
}
const options: RouteOptions = {
test: {
response: {

View File

@ -22,10 +22,6 @@ import { route, RouteOptions } from "@fosscord/api";
const router = Router();
export interface GatewayResponse {
url: string;
}
const options: RouteOptions = {
test: {
response: {

View File

@ -18,9 +18,7 @@
import { Router, Request, Response } from "express";
import {
PublicConnectedAccount,
User,
UserPublic,
Member,
UserProfileModifySchema,
handleFile,
@ -32,13 +30,6 @@ import { route } from "@fosscord/api";
const router: Router = Router();
export interface UserProfileResponse {
user: UserPublic;
connected_accounts: PublicConnectedAccount;
premium_guild_since?: Date;
premium_since?: Date;
}
router.get(
"/",
route({ test: { response: { body: "UserProfileResponse" } } }),

View File

@ -22,16 +22,6 @@ import { route } from "@fosscord/api";
const router: Router = Router();
export interface UserRelationsResponse {
object: {
id?: string;
username?: string;
avatar?: string;
discriminator?: string;
public_flags?: number;
};
}
router.get(
"/",
route({ test: { response: { body: "UserRelationsResponse" } } }),

View File

@ -111,7 +111,7 @@ export class User extends BaseClass {
banner?: string; // hash of the user banner
@Column({ nullable: true, type: "simple-array" })
theme_colors?: number[]; // TODO: Separate `User` and `UserProfile` models
theme_colors?: [number, number]; // TODO: Separate `User` and `UserProfile` models
@Column({ nullable: true })
pronouns?: string;

View File

@ -0,0 +1,10 @@
export interface GatewayBotResponse {
url: string;
shards: number;
session_start_limit: {
total: number;
remaining: number;
reset_after: number;
max_concurrency: number;
};
}

View File

@ -0,0 +1,3 @@
export interface GatewayResponse {
url: string;
}

View File

@ -0,0 +1,8 @@
import { PublicConnectedAccount, UserPublic } from "..";
export interface UserProfileResponse {
user: UserPublic;
connected_accounts: PublicConnectedAccount;
premium_guild_since?: Date;
premium_since?: Date;
}

View File

@ -0,0 +1,9 @@
export interface UserRelationsResponse {
object: {
id?: string;
username?: string;
avatar?: string;
discriminator?: string;
public_flags?: number;
};
}

View File

@ -76,3 +76,7 @@ export * from "./VoiceVideoSchema";
export * from "./WebAuthnSchema";
export * from "./WebhookCreateSchema";
export * from "./WidgetModifySchema";
export * from "./UserRelationsResponse";
export * from "./GatewayResponse";
export * from "./GatewayBotResponse";
export * from "./UserProfileResponse";