1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-19 21:39:40 +02:00
portainer/app/react/docker/proxy/queries/buildDockerProxyUrl.ts
LP B 6a8e6734f3
Some checks are pending
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
ci / build_images (map[arch:arm platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:s390x platform:linux version:]) (push) Waiting to run
ci / build_manifests (push) Blocked by required conditions
/ triage (push) Waiting to run
Lint / Run linters (push) Waiting to run
Test / test-client (push) Waiting to run
Test / test-server (map[arch:amd64 platform:linux]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
Test / test-server (map[arch:arm64 platform:linux]) (push) Waiting to run
feat(app): limit the docker API version supported by the frontend (#11855)
2024-06-10 20:54:31 +02:00

50 lines
1.4 KiB
TypeScript

import { compact } from 'lodash';
import { EnvironmentId } from '@/react/portainer/environments/types';
/**
* Build docker proxy URL for Environment
*
* @param environmentId
* @param action
* @param subSegments Sub segments are only added to the URL when they are not `undefined`.
* @returns `/endpoints/{environmentId}/docker/{action}/{subSegments[0]}/{subSegments[1]}/...`
*
* @example
* // all calls return /endpoints/1/docker/action/sub1/sub2
* buildDockerProxyUrl(1, 'action', 'sub1', 'sub2');
* buildDockerProxyUrl(1, 'action', undefined, 'sub1', undefined, 'sub2');
*
* @example
* function buildUrl(endpointId: EnvironmentId, id?: ServiceId, action?: string) {
* return buildDockerProxyUrl(endpointId, 'services', id, action);
*}
*
* // returns /endpoints/1/docker/services/ubx3r/update
* buildUrl(1, 'ubx3r', 'update')
*
* // returns /endpoints/1/docker/services/update
* buildUrl(1, undefined, 'update')
*
* // returns /endpoints/1/docker/services/ubx3r
* buildUrl(1, 'ubx3r') // = buildUrl(1, 'ubx3r', undefined)
*
* // returns /endpoints/1/docker/services
* buildUrl(1) // = buildUrl(1, undefined, undefined)
*
*/
export function buildDockerProxyUrl(
environmentId: EnvironmentId,
action: string,
...subSegments: unknown[]
) {
let url = `/endpoints/${environmentId}/docker/${action}`;
const joined = compact(subSegments).join('/');
if (joined) {
url += `/${joined}`;
}
return url;
}