Edits history of script submission #11459 for ' HTTP trigger script with preprocessor template (windmill)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    /**
     * General Trigger Preprocessor
     *
     * ⚠️ This function runs BEFORE the main function.
     *
     * It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS) before passing it to `main()`.
     * Common tasks:
     * - Convert binary payloads to string/JSON
     * - Extract metadata
     * - Filter messages
     * - Add timestamps/context
     *
     * The returned object determines `main()` parameters:
     * - `{a: 1, b: 2}` → `main(a, b)`
     * - `{http}` → `main(http)`
     *
     * @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS)
     * @returns Processed data for `main()`
     */
    export async function preprocessor(
      event: {
        kind: 'http';
        body: any;
        raw_string: string | null;
        route: string;
        path: string;
        method: string;
        params: Record<string, string>; // path params
        query: Record<string, string>; // query params
        headers: Record<string, string>;
      }
    ) {
      if (event.kind === 'http') {
        return {
          body: event.body,
          params: event.params,
          query: event.query,
        };
      }
    
      throw new Error(`Expected http trigger kind, got: ${event.kind}`);
    }
    
    /**
     * Main Function - Handles processed trigger events
     *
     * ⚠️ Called AFTER `preprocessor()`, with its return values.
     *
     * @param body - HTTP request body
     * @param params - Path parameters from the HTTP request
     * @param query - Query parameters from the HTTP request
     */
    export async function main(
      body: any,
      params: Record<string, string>,
      query: Record<string, string>
    ) {
      // Implement the main function logic here
    }
    

    Submitted by hugo697 361 days ago

  • bun
    /**
     * General Trigger Preprocessor
     *
     * ⚠️ This function runs BEFORE the main function.
     *
     * It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS) before passing it to `main()`.
     * Common tasks:
     * - Convert binary payloads to string/JSON
     * - Extract metadata
     * - Filter messages
     * - Add timestamps/context
     *
     * The returned object determines `main()` parameters:
     * - `{a: 1, b: 2}` → `main(a, b)`
     * - `{http}` → `main(http)`
     *
     * @param event - Trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS)
     * @returns Processed data for `main()`
     */
    export async function preprocessor(
      event: {
        kind: 'http';
        body: any;
        route: string;
        path: string;
        method: string;
        params: Record<string, string>; // path params
        query: Record<string, string>; // query params
        headers: Record<string, string>;
      }
    ) {
      if (event.kind === 'http') {
        return {
          body: event.body,
          params: event.params,
          query: event.query,
        };
      }
    
      throw new Error(`Expected http trigger kind, got: ${event.kind}`);
    }
    
    /**
     * Main Function - Handles processed trigger events
     *
     * ⚠️ Called AFTER `preprocessor()`, with its return values.
     *
     * @param body - HTTP request body
     * @param params - Path parameters from the HTTP request
     * @param query - Query parameters from the HTTP request
     */
    export async function main(
      body: any,
      params: Record<string, string>,
      query: Record<string, string>
    ) {
      // Implement the main function logic here
    }
    

    Submitted by hugo697 369 days ago

  • bun
    /**
     * General Trigger Preprocessor
     *
     * ⚠️ This function runs BEFORE the main function.
     *
     * It processes raw trigger data (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS) before passing it to `main()`.
     * Common tasks:
     * - Convert binary payloads to string/JSON
     * - Extract metadata
     * - Filter messages
     * - Add timestamps/context
     *
     * The returned object determines `main()` parameters:
     * - `{a: 1, b: 2}` → `main(a, b)`
     * - `{http}` → `main(http)`
     *
     * @param wm_trigger - Trigger details (e.g., MQTT, HTTP, SQS, WebSocket, Kafka, NATS)
     * @returns Processed data for `main()`
     */
    export async function preprocessor(
      wm_trigger: {
        kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs',
        http?: {
          route: string;
          path: string;
          method: string;
          params: Record<string, string>;
          query: Record<string, string>;
          headers: Record<string, string>;
        };
      }
    ) {
      if (wm_trigger.kind === 'http' && wm_trigger.http) {
        return {
          http: wm_trigger.http
        };
      }
    
      throw new Error(`Expected http trigger kind, got: ${wm_trigger.kind}`);
    }
    
    /**
     * Main Function - Handles processed trigger events
     *
     * ⚠️ Called AFTER `preprocessor()`, with its return values.
     *
     * @param http - HTTP request details
     */
    export async function main(
      http: {
        route: string;
        path: string;
        method: string;
        params: Record<string, string>;
        query: Record<string, string>;
        headers: Record<string, string>;
      }
    ) {
      // Implement the main function logic here
    }
    

    Submitted by dieriba.pro916 435 days ago

  • bun
    /**
     * General Trigger Preprocessor
     *
     * ⚠️ This function runs BEFORE the main function.
     *
     * It processes raw trigger data (e.g., MQTT, HTTP, SQS) before passing it to `main()`.
     * Common tasks:
     * - Convert binary payloads to string/JSON
     * - Extract metadata
     * - Filter messages
     * - Add timestamps/context
     *
     * The returned object determines `main()` parameters:
     * - `{a: 1, b: 2}` → `main(a, b)`
     * - `{payload}` → `main(payload)`
     *
     * @param wm_trigger - Trigger details (e.g., MQTT, HTTP)
     * @returns Processed data for `main()`
     */
    export async function preprocessor(
      wm_trigger: {
        kind: 'http' | 'email' | 'webhook' | 'websocket' | 'kafka' | 'nats' | 'postgres' | 'sqs' | 'mqtt',
        http?: {
          route: string, // The route path, e.g., "/users/:id"
          path: string, // The actual path called, e.g., "/users/123"
          method: string,
          params: Record<string, string>,
          query: Record<string, string>,
          headers: Record<string, string>
        }
      }
    ) {
      if (wm_trigger.kind === 'http' && wm_trigger.http) {
        return {
          method: wm_trigger.http.method,
          route: wm_trigger.http.route,
          path: wm_trigger.http.path,
          params: wm_trigger.http.params,
          query: wm_trigger.http.query,
          headers: wm_trigger.http.headers
        };
      }
    
      throw new Error(`Expected http trigger kind got: ${wm_trigger.kind}`);
    }
    
    /**
     * Main Function - Handles processed trigger events
     *
     * ⚠️ Called AFTER `preprocessor()`, with its return values.
     *
     * @param method - HTTP method (GET, POST, etc.)
     * @param route - Defined route pattern
     * @param path - Actual request path
     * @param params - Route parameters
     * @param query - Query parameters
     * @param headers - Request headers
     */
    export async function main(
      method: string,
      route: string,
      path: string,
      params: Record<string, string>,
      query: Record<string, string>,
      headers: Record<string, string>
    ) {
      // Implement the main function logic here
    }
    

    Submitted by dieriba.pro916 435 days ago

  • bun
    /**
     * General Trigger Preprocessor
     *
     * ⚠️ This function runs BEFORE the main function.
     *
     * It processes raw trigger data (e.g., MQTT, HTTP, SQS) before passing it to `main()`.
     * Common tasks:
     * - Convert binary payloads to string/JSON
     * - Extract metadata
     * - Filter messages
     * - Add timestamps/context
     *
     * The returned object determines `main()` parameters:
     * - `{a: 1, b: 2}` → `main(a, b)`
     * - `{payload}` → `main(payload)`
     *
     * @param wm_trigger - Trigger details (e.g., MQTT, HTTP)
     * @returns Processed data for `main()`
     */
    export async function preprocessor(
      wm_trigger: {
        kind: 'http' | 'email' | 'webhook',
        http?: {
          route: string, // The route path, e.g., "/users/:id"
          path: string, // The actual path called, e.g., "/users/123"
          method: string,
          params: Record<string, string>,
          query: Record<string, string>,
          headers: Record<string, string>
        }
      }
    ) {
      if (wm_trigger.kind === 'http' && wm_trigger.http) {
        return {
          method: wm_trigger.http.method,
          route: wm_trigger.http.route,
          path: wm_trigger.http.path,
          params: wm_trigger.http.params,
          query: wm_trigger.http.query,
          headers: wm_trigger.http.headers
        };
      }
    
      throw new Error(`Expected http trigger kind got: ${wm_trigger.kind}`);
    }
    
    /**
     * Main Function - Handles processed trigger events
     *
     * ⚠️ Called AFTER `preprocessor()`, with its return values.
     *
     * @param method - HTTP method (GET, POST, etc.)
     * @param route - Defined route pattern
     * @param path - Actual request path
     * @param params - Route parameters
     * @param query - Query parameters
     * @param headers - Request headers
     */
    export async function main(
      method: string,
      route: string,
      path: string,
      params: Record<string, string>,
      query: Record<string, string>,
      headers: Record<string, string>
    ) {
      // Implement the main function logic here
    }
    

    Submitted by dieriba.pro916 435 days ago