This commit is contained in:
Boki 2025-06-22 13:16:49 -04:00
parent c6c55e2979
commit acf66dbfb6
3 changed files with 13 additions and 10 deletions

View file

@ -4,7 +4,7 @@ import {
ScheduledOperation, ScheduledOperation,
type IServiceContainer type IServiceContainer
} from '@stock-bot/handlers'; } from '@stock-bot/handlers';
import { fetch, getRandomUserAgent } from '@stock-bot/utils'; import { getRandomUserAgent } from '@stock-bot/utils';
@Handler('ceo') @Handler('ceo')
export class CeoHandler extends BaseHandler { export class CeoHandler extends BaseHandler {
@ -17,18 +17,22 @@ export class CeoHandler extends BaseHandler {
immediately: true, immediately: true,
description: 'Get all CEO symbols and exchanges' description: 'Get all CEO symbols and exchanges'
}) })
async updateCeoChannels(payload: number | undefined): Promise<unknown> { async updateCeoChannels(payload: number | undefined, handler: BaseHandler): Promise<unknown> {
const proxy = this.proxy.getProxy();; const proxy = this.proxy?.getProxy();
if(!proxy) {
this.logger.warn('No proxy available for CEO channels update');
return;
}
let page; let page;
if(payload === undefined) { if(payload === undefined) {
page = 1 page = 1
}else{ }else{
page = payload; page = payload;
} }
this.logger.info(`Fetching CEO channels for page ${page} with proxy ${proxy}`); this.logger.info(`Fetching CEO channels for page ${page} with proxy ${proxy}`);
const response = await fetch('https://api.ceo.ca/api/home?exchange=all&sort_by=symbol&sector=All&tab=companies&page='+page, { const response = await this.http.get('https://api.ceo.ca/api/home?exchange=all&sort_by=symbol&sector=All&tab=companies&page='+page, {
method: 'GET',
proxy: proxy, proxy: proxy,
headers: { headers: {
'User-Agent': getRandomUserAgent() 'User-Agent': getRandomUserAgent()
@ -69,7 +73,7 @@ export class CeoHandler extends BaseHandler {
if(page === 1) { if(page === 1) {
for( let i = 2; i <= totalPages; i++) { for( let i = 2; i <= totalPages; i++) {
this.logger.info(`Scheduling next page ${i} for CEO channels`); this.logger.info(`Scheduling page ${i} of ${totalPages} for CEO channels`);
this.scheduleOperation('update-ceo-channels', i) this.scheduleOperation('update-ceo-channels', i)
} }
} }

View file

@ -114,10 +114,9 @@ async function initializeServices() {
logger.debug('Initializing data handlers with Awilix DI pattern...'); logger.debug('Initializing data handlers with Awilix DI pattern...');
// Auto-register all handlers with the service container from Awilix // Auto-register all handlers with the service container from Awilix
// TODO: Fix handler registration await initializeAllHandlers(serviceContainer);
// await initializeAllHandlers(serviceContainer);
logger.info('Data handlers initialization skipped for testing'); logger.info('Data handlers initialized with new DI pattern');
// Create scheduled jobs from registered handlers // Create scheduled jobs from registered handlers
logger.debug('Creating scheduled jobs from registered handlers...'); logger.debug('Creating scheduled jobs from registered handlers...');

View file

@ -1,6 +1,6 @@
import type { Logger } from '@stock-bot/core/logger'; import type { Logger } from '@stock-bot/core/logger';
import { Collection, Db, MongoClient } from 'mongodb';
import type { OptionalUnlessRequiredId } from 'mongodb'; import type { OptionalUnlessRequiredId } from 'mongodb';
import { Collection, Db, MongoClient } from 'mongodb';
import type { ConnectionEvents, DocumentBase, DynamicPoolConfig, MongoDBClientConfig, PoolMetrics } from './types'; import type { ConnectionEvents, DocumentBase, DynamicPoolConfig, MongoDBClientConfig, PoolMetrics } from './types';
/** /**