camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
43 lines (42 loc) • 1.57 kB
JavaScript
import { addParametersToPath } from './utils';
export class ProxyClient {
client;
getProxyUrl;
constructor(client, getProxyUrl) {
this.client = client;
this.getProxyUrl = getProxyUrl;
}
get = (proxy, ...args) => {
const [path, parameters, headers] = args;
const url = addParametersToPath(path, parameters);
const { realUrl, realHeaders } = this.getReal(proxy, url, headers);
return this.client.get(realUrl, {}, realHeaders);
};
post = (proxy, ...args) => {
const [path, data, parameters, headers] = args;
const url = addParametersToPath(path, parameters);
const { realUrl, realHeaders } = this.getReal(proxy, url, headers);
return this.client.post(realUrl, data, {}, realHeaders);
};
getReal = (proxy, url, headers) => {
if (proxy !== null) {
return {
realUrl: this.getProxyUrl(),
realHeaders: {
...(headers ?? {}),
'x-target-camera-protocol': proxy.port === 443 ? 'https' : 'http',
'x-target-camera-path': url,
'x-target-camera-ip': proxy.ip,
'x-target-camera-mdns': proxy.mdnsName,
'x-target-camera-port': String(proxy.port),
'x-target-camera-pass': proxy.pass,
'x-target-camera-user': proxy.user,
},
};
}
return {
realUrl: url,
realHeaders: headers,
};
};
}