created a new branch with alert functionality and added the compose files etc ..
This commit is contained in:
38
utils/cronhost.ts
Normal file
38
utils/cronhost.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
// NOTE: Real cronhost API integration pending official REST docs.
|
||||
// These stubs simulate scheduling/canceling and should be replaced with actual fetch calls.
|
||||
|
||||
export interface ScheduleParams {
|
||||
apiKey: string;
|
||||
runAt: number; // epoch seconds
|
||||
method: 'POST' | 'GET';
|
||||
url: string;
|
||||
body?: any;
|
||||
headers?: Record<string, string>;
|
||||
}
|
||||
|
||||
export interface ScheduleResult {
|
||||
jobId: string;
|
||||
scheduledRunAtUtc: number;
|
||||
}
|
||||
|
||||
export async function scheduleOneTimeJob(params: ScheduleParams): Promise<ScheduleResult> {
|
||||
const { apiKey, runAt, method, url } = params;
|
||||
if (!apiKey) throw new Error('Missing cronhost API key');
|
||||
if (!url) throw new Error('Missing target URL');
|
||||
if (!runAt || runAt < Math.floor(Date.now() / 1000)) throw new Error('runAt must be in the future');
|
||||
|
||||
console.warn('[cronhost] scheduleOneTimeJob is a stub. Replace with real API call.');
|
||||
// Example real call outline:
|
||||
// await fetch('https://api.cronho.st/schedules', { method: 'POST', headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({...}) })
|
||||
|
||||
return {
|
||||
jobId: `stub_${Math.random().toString(36).slice(2)}`,
|
||||
scheduledRunAtUtc: runAt,
|
||||
};
|
||||
}
|
||||
|
||||
export async function cancelJob(apiKey: string, jobId: string): Promise<void> {
|
||||
if (!apiKey || !jobId) return;
|
||||
console.warn('[cronhost] cancelJob is a stub. Replace with real API call.', { jobId });
|
||||
// Example: await fetch(`https://api.cronho.st/jobs/${jobId}`, { method: 'DELETE', headers: { Authorization: `Bearer ${apiKey}` } })
|
||||
}
|
||||
Reference in New Issue
Block a user