mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	feat(server): add endpoint to get supported media types on the server (#3284)
* feat(server): add endpoint to get supported media types on the server * api generation * remove xmp format * change dto * openapi * dev
This commit is contained in:
		| @@ -3040,6 +3040,27 @@ | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "/server-info/media-types": { | ||||
|       "get": { | ||||
|         "operationId": "getSupportedMediaTypes", | ||||
|         "parameters": [], | ||||
|         "responses": { | ||||
|           "200": { | ||||
|             "description": "", | ||||
|             "content": { | ||||
|               "application/json": { | ||||
|                 "schema": { | ||||
|                   "$ref": "#/components/schemas/ServerMediaTypesResponseDto" | ||||
|                 } | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         "tags": [ | ||||
|           "Server Info" | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|     "/server-info/ping": { | ||||
|       "get": { | ||||
|         "operationId": "pingServer", | ||||
| @@ -6118,6 +6139,34 @@ | ||||
|           "diskAvailable" | ||||
|         ] | ||||
|       }, | ||||
|       "ServerMediaTypesResponseDto": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|           "video": { | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|               "type": "string" | ||||
|             } | ||||
|           }, | ||||
|           "image": { | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|               "type": "string" | ||||
|             } | ||||
|           }, | ||||
|           "sidecar": { | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|               "type": "string" | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         "required": [ | ||||
|           "video", | ||||
|           "image", | ||||
|           "sidecar" | ||||
|         ] | ||||
|       }, | ||||
|       "ServerPingResponse": { | ||||
|         "type": "object", | ||||
|         "properties": { | ||||
|   | ||||
| @@ -25,3 +25,9 @@ export class ServerStatsResponseDto { | ||||
|   }) | ||||
|   usageByUser: UsageByUserDto[] = []; | ||||
| } | ||||
|  | ||||
| export class ServerMediaTypesResponseDto { | ||||
|   video!: string[]; | ||||
|   image!: string[]; | ||||
|   sidecar!: string[]; | ||||
| } | ||||
|   | ||||
| @@ -1,9 +1,15 @@ | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import { serverVersion } from '../domain.constant'; | ||||
| import { mimeTypes, serverVersion } from '../domain.constant'; | ||||
| import { asHumanReadable } from '../domain.util'; | ||||
| import { IStorageRepository, StorageCore, StorageFolder } from '../storage'; | ||||
| import { IUserRepository, UserStatsQueryResponse } from '../user'; | ||||
| import { ServerInfoResponseDto, ServerPingResponse, ServerStatsResponseDto, UsageByUserDto } from './response-dto'; | ||||
| import { | ||||
|   ServerInfoResponseDto, | ||||
|   ServerMediaTypesResponseDto, | ||||
|   ServerPingResponse, | ||||
|   ServerStatsResponseDto, | ||||
|   UsageByUserDto, | ||||
| } from './response-dto'; | ||||
|  | ||||
| @Injectable() | ||||
| export class ServerInfoService { | ||||
| @@ -60,4 +66,12 @@ export class ServerInfoService { | ||||
|  | ||||
|     return serverStats; | ||||
|   } | ||||
|  | ||||
|   getSupportedMediaTypes(): ServerMediaTypesResponseDto { | ||||
|     return { | ||||
|       video: [...Object.keys(mimeTypes.video)], | ||||
|       image: [...Object.keys(mimeTypes.image)], | ||||
|       sidecar: [...Object.keys(mimeTypes.sidecar)], | ||||
|     }; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| import { | ||||
|   ServerInfoResponseDto, | ||||
|   ServerInfoService, | ||||
|   ServerMediaTypesResponseDto, | ||||
|   ServerPingResponse, | ||||
|   ServerStatsResponseDto, | ||||
|   ServerVersionReponseDto, | ||||
| @@ -39,4 +40,10 @@ export class ServerInfoController { | ||||
|   getStats(): Promise<ServerStatsResponseDto> { | ||||
|     return this.service.getStats(); | ||||
|   } | ||||
|  | ||||
|   @PublicRoute() | ||||
|   @Get('/media-types') | ||||
|   getSupportedMediaTypes(): ServerMediaTypesResponseDto { | ||||
|     return this.service.getSupportedMediaTypes(); | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user