DIYgod/RSSHub · warning · InvalidParameterError

Invalid category

Error message

Invalid category

What it means

The cybersecurityventures news route accepts a category path parameter that must be one of the predefined keys in the categories object (today, intrusion-daily-cyber-threat-alert, ransomware-minute, cryptocrime, hack-blotter, cybersecurity-venture-capital-vc-deals, mergers-and-acquisitions-report). If the provided category string does not match any key, an InvalidParameterError is thrown with a clear 'Invalid category' message.

Solutions

  1. Check the route's parameters.options in the route definition to see the list of valid category values.
  2. Use one of the valid categories: today, intrusion-daily-cyber-threat-alert, ransomware-minute, cryptocrime, hack-blotter, cybersecurity-venture-capital-vc-deals, mergers-and-acquisitions-report.
  3. If you need a new category, add it to the categories object with the correct scene and view numbers from the Knack API.
Defensive patterns

Strategy: validation

Validate before calling

const category = ctx.req.param('category') ?? 'today';
const validCategories = ['today', 'intrusion-daily-cyber-threat-alert', 'ransomware-minute', 'cryptocrime', 'hack-blotter', 'cybersecurity-venture-capital-vc-deals', 'mergers-and-acquisitions-report'];
if (!validCategories.includes(category)) {
    throw new InvalidParameterError(`Invalid category '${category}'. Valid options: ${validCategories.join(', ')}`);
}

Type guard

function isValidCategory(cat: string): cat is keyof typeof categories {
    return cat in categories;
}

Prevention

When it happens

Trigger: A user requests /cybersecurityventures/news/<category> where <category> is not a key in the categories dictionary. Object.hasOwn(categories, category) returns false. This is a pure input validation check before any API call is made.

Common situations: Typo in the category name (e.g., 'ransomware' instead of 'ransomware-minute'); user guesses a category name that doesn't exist; outdated documentation references a category that was removed; case sensitivity issue (e.g., 'Today' vs 'today').

Related errors


AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12). Data as JSON: /api/errors/d8dd4f0199b958c8. Report an issue: GitHub.

Appendix: source

Thrown at lib/routes/cybersecurityventures/news.ts:92

            })),
        },
    },
    handler,
    maintainers: ['KarasuShin'],
    features: {
        supportRadar: true,
    },
    view: ViewType.Articles,
};

async function handler(ctx: Context): Promise<Data> {
    const rootUrl = 'https://cybersecurityventures.com/';
    const apiUrl = 'https://us-east-1-renderer-read.knack.com/v1';
    const category = ctx.req.param('category') ?? 'today';
    const limit = ctx.req.query('limit') ?? 20;

    if (!Object.hasOwn(categories, category)) {
        throw new InvalidParameterError('Invalid category');
    }

    const { scene, view, label } = categories[category];

    const data = await ofetch<{
        records: RawRecord[];
    }>(`${apiUrl}/scenes/scene_${scene}/views/view_${view}/records?format=raw&page=1&rows_per_page=${limit}&sort_field=field_2&sort_order=desc`, {
        headers: {
            'X-Knack-Application-Id': '6013171b60be8f001cb27363',
            'X-Knack-Rest-Api-Key': 'renderer',
        },
    });

    return {
        title: `${label} - Cybercrime Magazine`,
        link: `${rootUrl}/${category}`,
        item: data.records.map((item) => {
            const $ = load(item.field_3, null, false);

View on GitHub (pinned to bed535e087)