app/portainer/helpers/webhookHelper.ts
import uuid from 'uuid';
import {
API_ENDPOINT_EDGE_STACKS,
API_ENDPOINT_STACKS,
API_ENDPOINT_WEBHOOKS,
} from '@/constants';
import { baseHref } from './pathHelper';
const baseUrl = getBaseUrl();
export function dockerWebhookUrl(token: string) {
return `${baseUrl}${API_ENDPOINT_WEBHOOKS}/${token}`;
}
export function baseStackWebhookUrl() {
return `${baseUrl}${API_ENDPOINT_STACKS}/webhooks`;
}
export function stackWebhookUrl(token: string) {
return `${baseStackWebhookUrl()}/${token}`;
}
export function createWebhookId() {
return uuid();
}
export function baseEdgeStackWebhookUrl() {
return `${baseUrl}${API_ENDPOINT_EDGE_STACKS}/webhooks`;
}
/* @ngInject */
export function WebhookHelperFactory() {
return {
returnWebhookUrl: dockerWebhookUrl,
getBaseStackWebhookUrl: baseStackWebhookUrl,
returnStackWebhookUrl: stackWebhookUrl,
};
}
function getBaseUrl() {
const protocol = window.location.protocol.toLowerCase().replace(':', '');
if (protocol === 'file') {
return baseHref();
}
const { hostname } = window.location;
const port = parseInt(window.location.port, 10);
const displayPort =
(protocol === 'http' && port === 80) ||
(protocol === 'https' && port === 443) ||
Number.isNaN(port)
? ''
: `:${port}`;
return `${protocol}://${hostname}${displayPort}${baseHref()}`;
}