| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /**
- * Example: Webhook server with custom callbacks
- * This demonstrates how to extend the server with custom event handlers
- */
- import { WebhookServer } from '../src/server.js';
- import logger from '../src/logger.js';
- const server = new WebhookServer({
- port: 3000,
- path: '/webhook'
- });
- const handler = server.getHandler();
- // Handle push events
- handler.on('push', async (payload, headers) => {
- logger.info('Processing push event');
- const { repository, pusher, commits, ref } = payload;
- console.log('\nPush Details:');
- console.log(` Repository: ${repository?.full_name || repository?.name}`);
- console.log(` Pusher: ${pusher?.username || pusher?.name}`);
- console.log(` Branch: ${ref}`);
- console.log(` Commits: ${commits?.length || 0}`);
- if (commits && commits.length > 0) {
- console.log('\n Recent commits:');
- commits.slice(0, 3).forEach(commit => {
- console.log(` - ${commit.id?.substring(0, 7)}: ${commit.message}`);
- });
- }
- });
- // Handle create events (new branch or tag)
- handler.on('create', async (payload, headers) => {
- logger.info('Processing create event');
- const { ref, ref_type, repository } = payload;
- console.log(`\nCreated ${ref_type}: ${ref} in ${repository?.name}`);
- });
- // Handle delete events
- handler.on('delete', async (payload, headers) => {
- logger.info('Processing delete event');
- const { ref, ref_type, repository } = payload;
- console.log(`\nDeleted ${ref_type}: ${ref} from ${repository?.name}`);
- });
- // Handle pull request events
- handler.on('pull_request', async (payload, headers) => {
- logger.info('Processing pull request event');
- const { action, pull_request, repository } = payload;
- console.log(`\nPull Request ${action}:`);
- console.log(` #${pull_request?.number}: ${pull_request?.title}`);
- console.log(` Repository: ${repository?.name}`);
- console.log(` Author: ${pull_request?.user?.username}`);
- });
- // Global callback for all events
- handler.onAny(async (eventType, payload, headers) => {
- // You can add analytics, logging to external services, etc.
- const delivery = headers['x-gogs-delivery'];
- console.log(`\n[Analytics] Event: ${eventType}, Delivery ID: ${delivery}`);
- });
- // Start the server
- server.start();
- console.log('\nServer started with custom callbacks!');
- console.log('Registered callbacks:', handler.getStats());
|