fix serverurl in openapi docs for self hosted instance (#4390)

* fix serverurl in openapi docs for self hosted instance

* fixed server url slash, moved calculation to enviroment function, fixed openapi path hardcoded api.twenty.com
This commit is contained in:
brendanlaschke
2024-03-13 12:13:45 +01:00
committed by GitHub
parent d8b370720c
commit f847b64fd1
8 changed files with 43 additions and 22 deletions

View File

@ -22,9 +22,7 @@ export class ApiRestService {
request: Request,
data: ApiRestQuery,
): Promise<ApiRestResponse> {
const baseUrl =
this.environmentService.getServerUrl() ||
`${request.protocol}://${request.get('host')}`;
const baseUrl = this.environmentService.getBaseUrl(request);
try {
return await this.httpService.axiosRef.post(`${baseUrl}/graphql`, data, {

View File

@ -18,9 +18,7 @@ export class ApiRestMetadataService {
) {}
async callMetadata(request, data: ApiRestQuery) {
const baseUrl =
this.environmentService.getServerUrl() ||
`${request.protocol}://${request.get('host')}`;
const baseUrl = this.environmentService.getBaseUrl(request);
try {
return await this.httpService.axiosRef.post(`${baseUrl}/metadata`, data, {

View File

@ -23,7 +23,7 @@ export class OpenApiController {
@Req() request: Request,
@Res() res: Response,
) {
const data = await this.openApiService.generateMetaDataSchema();
const data = await this.openApiService.generateMetaDataSchema(request);
res.send(data);
}

View File

@ -25,16 +25,20 @@ import {
getSingleResultSuccessResponse,
} from 'src/core/open-api/utils/responses.utils';
import { getRequestBody } from 'src/core/open-api/utils/request-body.utils';
import { EnvironmentService } from 'src/integrations/environment/environment.service';
@Injectable()
export class OpenApiService {
constructor(
private readonly tokenService: TokenService,
private readonly environmentService: EnvironmentService,
private readonly objectMetadataService: ObjectMetadataService,
) {}
async generateCoreSchema(request: Request): Promise<OpenAPIV3_1.Document> {
const schema = baseSchema('core');
const baseUrl = this.environmentService.getBaseUrl(request);
const schema = baseSchema('core', baseUrl);
let objectMetadataItems;
@ -86,9 +90,12 @@ export class OpenApiService {
return schema;
}
async generateMetaDataSchema(): Promise<OpenAPIV3_1.Document> {
//TODO Add once Rest MetaData api is ready
const schema = baseSchema('metadata');
async generateMetaDataSchema(
request: Request,
): Promise<OpenAPIV3_1.Document> {
const baseUrl = this.environmentService.getBaseUrl(request);
const schema = baseSchema('metadata', baseUrl);
schema.tags = [{ name: 'placeholder' }];

View File

@ -4,6 +4,7 @@ import { computeOpenApiPath } from 'src/core/open-api/utils/path.utils';
export const baseSchema = (
schemaName: 'core' | 'metadata',
serverUrl: string,
): OpenAPIV3_1.Document => {
return {
openapi: '3.0.3',
@ -23,9 +24,7 @@ export const baseSchema = (
// Testing purposes
servers: [
{
url: `https://api.twenty.com/rest/${
schemaName !== 'core' ? schemaName : ''
}`,
url: `${serverUrl}/rest/${schemaName !== 'core' ? schemaName : ''}`,
description: 'Production Development',
},
],
@ -49,6 +48,6 @@ export const baseSchema = (
description: 'Find out more about **Twenty**',
url: 'https://twenty.com',
},
paths: { [`/open-api/${schemaName}`]: computeOpenApiPath() },
paths: { [`/open-api/${schemaName}`]: computeOpenApiPath(serverUrl) },
};
};

View File

@ -95,7 +95,9 @@ export const computeSingleResultPath = (
} as OpenAPIV3_1.PathItemObject;
};
export const computeOpenApiPath = (): OpenAPIV3_1.PathItemObject => {
export const computeOpenApiPath = (
serverUrl: string,
): OpenAPIV3_1.PathItemObject => {
return {
get: {
tags: ['General'],
@ -103,7 +105,7 @@ export const computeOpenApiPath = (): OpenAPIV3_1.PathItemObject => {
operationId: 'GetOpenApiSchema',
servers: [
{
url: 'https://api.twenty.com/',
url: serverUrl,
},
],
responses: {