From f133aebfe8d02c2127754306e5f1f61359d983e5 Mon Sep 17 00:00:00 2001 From: arc-alex Date: Wed, 6 Dec 2023 21:24:09 +0100 Subject: [PATCH] Revert "split url and searchParams allow for post option" This reverts commit 54ab8d4ffec36acaaf16caaca3398136240107b0. --- .../http/HttpSubscriptionRow.tsx | 24 ++-------------- .../integration-service/HttpIntegration.ts | 28 +++++++------------ apps/server/src/utils/parserFunctions.ts | 12 ++------ .../src/definitions/core/HttpSettings.type.ts | 3 +- 4 files changed, 17 insertions(+), 50 deletions(-) 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 {