import * as provider from './provider'; import type { GFGRating, SubmissionsQuery, GFGSubmissionsResponse, UserPostsQuery, LeaderboardQuery, PromotionalEventsQuery } from './types'; export async function getUserRating(username: string): Promise { try { const data = await provider.fetchUserRating(username); return { username, platform: 'gfg', rating: data.rating, level: data.stars, }; } catch (error: any) { console.error(`GFG Error for ${username}:`, error.message); throw new Error('Error fetching GFG user data'); } } export async function getUserSubmissions(query: SubmissionsQuery): Promise { try { return await provider.fetchUserSubmissions(query); } catch (error: any) { console.error(`GFG Submissions Error for ${query.handle}:`, error.message); throw new Error('Error fetching GFG submissions'); } } export async function getUserPosts(query: UserPostsQuery): Promise { try { return await provider.fetchUserPosts(query); } catch (error: any) { console.error(`GFG Posts Error for ${query.username}:`, error.message); throw new Error('Error fetching GFG user posts'); } } export async function getPromotionalEvents(query: PromotionalEventsQuery): Promise { try { return await provider.fetchPromotionalEvents(query); } catch (error: any) { console.error('GFG Promotional Events Error:', error.message); throw new Error('Error fetching GFG promotional events'); } } export async function getContestLeaderboard(query: LeaderboardQuery): Promise { try { return await provider.fetchContestLeaderboard(query); } catch (error: any) { console.error('GFG Leaderboard Error:', error.message); throw new Error('Error fetching GFG contest leaderboard'); } }