diff --git a/apps/client/src/features/modals/integration-modal/http/HttpSubscriptionRow.tsx b/apps/client/src/features/modals/integration-modal/http/HttpSubscriptionRow.tsx
index 6b89e9366..3e7349cef 100644
--- a/apps/client/src/features/modals/integration-modal/http/HttpSubscriptionRow.tsx
+++ b/apps/client/src/features/modals/integration-modal/http/HttpSubscriptionRow.tsx
@@ -1,5 +1,5 @@
import { Control, useFieldArray, UseFormRegister } from 'react-hook-form';
-import { Button, IconButton, Input, Select, Switch } from '@chakra-ui/react';
+import { Button, IconButton, Input, Switch } from '@chakra-ui/react';
import { FiChevronUp } from '@react-icons/all-files/fi/FiChevronUp';
import { IoRemove } from '@react-icons/all-files/io5/IoRemove';
import { HttpSettings, TimerLifeCycle } from 'ontime-types';
@@ -40,10 +40,8 @@ export default function SubscriptionRow(props: SubscriptionRowProps) {
return;
}
append({
- url: '',
- options: '',
+ message: '',
enabled: false,
- method: 'GET',
});
};
@@ -72,26 +70,10 @@ export default function SubscriptionRow(props: SubscriptionRowProps) {
size='xs'
variant='ontime-filled-on-light'
autoComplete='off'
- {...register(`subscriptions.${cycle}.${index}.url`, {
+ {...register(`subscriptions.${cycle}.${index}.message`, {
pattern: { value: startsWithHttpOrS, message: 'Request address must start with http://' },
})}
/>
-
-
))}
diff --git a/apps/server/src/services/integration-service/HttpIntegration.ts b/apps/server/src/services/integration-service/HttpIntegration.ts
index ddeb03d74..8e38f2fee 100644
--- a/apps/server/src/services/integration-service/HttpIntegration.ts
+++ b/apps/server/src/services/integration-service/HttpIntegration.ts
@@ -79,15 +79,14 @@ export class HttpIntegration implements IIntegration {
}
// check subscriptions for action
- const eventSubscriptions = (this.subscriptions?.[action] as HttpSubscriptionOptions[]) || [];
+ const eventSubscriptions = this.subscriptions?.[action] || [];
eventSubscriptions.forEach((sub) => {
- const { enabled, url, options, method } = sub;
- if (enabled && url) {
- const templateUrl = parseTemplateNested(url, state || {});
- const templateOptions = parseTemplateNested(options, state || {});
+ const { enabled, message } = sub;
+ if (enabled && message) {
+ const parsedMessage = parseTemplateNested(message, state || {});
try {
- const parsedUrl = new globalThis.URL(templateUrl);
+ const parsedUrl = new globalThis.URL(parsedMessage);
// if (parsedUrl.protocol != 'http:') {
// logger.error(LogOrigin.Tx, `HTTP Integration: Only HTTP allowed, got ${parsedUrl.protocol}`);
// return {
@@ -95,7 +94,7 @@ export class HttpIntegration implements IIntegration {
// message: `Only HTTP allowed, got ${parsedUrl.protocol}`,
// };
// }
- this.emit(templateUrl, templateOptions, method);
+ this.emit(parsedUrl);
} catch (err) {
logger.error(LogOrigin.Tx, `HTTP Integration: ${err}`);
return {
@@ -107,18 +106,11 @@ export class HttpIntegration implements IIntegration {
});
}
- async emit(path: string, options: string, method: 'GET' | 'POST') {
+ async emit(path: globalThis.URL) {
try {
- if (method === 'GET') {
- await got.get(path, {
- searchParams: options,
- retry: { limit: this.retryCount },
- });
- } else if (method === 'POST') {
- await got.post(path, {
- retry: { limit: this.retryCount },
- });
- }
+ await got.get(path, {
+ retry: { limit: this.retryCount },
+ });
} catch (err) {
logger.error(LogOrigin.Tx, `HTTP integration: ${err}`);
}
diff --git a/apps/server/src/utils/parserFunctions.ts b/apps/server/src/utils/parserFunctions.ts
index 4d0aea0e5..3e73820e3 100644
--- a/apps/server/src/utils/parserFunctions.ts
+++ b/apps/server/src/utils/parserFunctions.ts
@@ -227,15 +227,9 @@ export const parseOsc = (data: { osc?: Partial }): OSCSettings => {
*/
export const validateHttpSubscriptionCycle = (data: HttpSubscriptionOptions[]): boolean => {
for (const subscriptionOption of data) {
- const isHttp = subscriptionOption.url?.startsWith('http://') || subscriptionOption.url?.startsWith('https://');
- const ishttpMethod = subscriptionOption.method == 'GET' || subscriptionOption.method == 'POST';
- if (
- typeof subscriptionOption.url !== 'string' ||
- typeof subscriptionOption.options !== 'string' ||
- !isHttp ||
- !ishttpMethod ||
- typeof subscriptionOption.enabled !== 'boolean'
- ) {
+ const isHttp =
+ subscriptionOption.message?.startsWith('http://') || subscriptionOption.message?.startsWith('https://');
+ if (typeof subscriptionOption.message !== 'string' || !isHttp || typeof subscriptionOption.enabled !== 'boolean') {
return false;
}
}
diff --git a/packages/types/src/definitions/core/HttpSettings.type.ts b/packages/types/src/definitions/core/HttpSettings.type.ts
index cd133d840..2f38b12bd 100644
--- a/packages/types/src/definitions/core/HttpSettings.type.ts
+++ b/packages/types/src/definitions/core/HttpSettings.type.ts
@@ -1,7 +1,6 @@
import { Subscription } from './Subscription.type.js';
-type httpMethod = 'GET' | 'POST';
-export type HttpSubscriptionOptions = { url: string; options: string; enabled: boolean; method: httpMethod };
+export type HttpSubscriptionOptions = { message: string; enabled: boolean };
export type HttpSubscription = Subscription;
export interface HttpSettings {