From a9fa89107e40321a16dcda879c37bab2a03d5778 Mon Sep 17 00:00:00 2001 From: Anthony Correa Date: Sun, 10 Mar 2024 14:01:09 -0500 Subject: [PATCH] updates to teamsnapCallback --- src/controllers/event.js | 20 ++++++++++-------- src/controllers/team.js | 1 - src/lib/utils.js | 43 +++++++++++++-------------------------- src/routes/auth.js | 1 + src/routes/event.js | 10 ++++++--- src/routes/eventlineup.js | 17 ++++++++++++---- src/routes/eventsheet.js | 17 +++++++++++----- src/routes/opponent.js | 16 +++++++++------ src/routes/team.js | 15 ++++++++------ 9 files changed, 77 insertions(+), 63 deletions(-) diff --git a/src/controllers/event.js b/src/controllers/event.js index 4020121..6796e58 100644 --- a/src/controllers/event.js +++ b/src/controllers/event.js @@ -1,6 +1,7 @@ tsUtils = require("../lib/utils"); const path = require('path'); -const { teamsnapFailure, tsPromise } = require("../lib/utils"); +const { teamsnapFailure, tsPromise, teamsnapCallback } = require("../lib/utils"); +const {promisify} = require('util') exports.helpers = { @@ -23,8 +24,12 @@ exports.partials = path.join(__dirname, "../views/event/partials") exports.getEvents = async (req, res, next) => { const {user, team, layout} = req const bulkLoadTypes = ["event", "availabilitySummary"] - req.promises.push( - tsPromise('bulkLoad', {teamId: team.id, types: bulkLoadTypes}) + // const tsPromiseBulkload = promisify(teamsnap.bulkLoad) + const promise = teamsnap.bulkLoad( + {teamId: team.id, types: bulkLoadTypes}, + undefined, + (err,items) => {teamsnapCallback(err, items, {req, source: 'getEvents', method: 'bulkLoad'})} + ) .then(items=>tsUtils.groupTeamsnapItems(items)) .then(items=>{ items.events.forEach((event) => { @@ -34,13 +39,10 @@ exports.getEvents = async (req, res, next) => { req.events = items.events; } ) - .then(tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team.id, req)) - .catch((err) => { - teamsnapFailure(err,next) - }) - ) - await Promise.all(req.promises) + req.promises.push(promise) + all = await Promise.all(req.promises) + try { const context = { title: "Events", diff --git a/src/controllers/team.js b/src/controllers/team.js index efbdc5b..9c927ec 100644 --- a/src/controllers/team.js +++ b/src/controllers/team.js @@ -10,7 +10,6 @@ exports.getTeams = async (req, res, next) => { teamsnapCallback(err,items); req.teams = items; }) - .then(() => tsUtils.teamsnapLog('loadTeams', types=['teams'], null, req)) .fail( next ) diff --git a/src/lib/utils.js b/src/lib/utils.js index 329d210..dcb6ff2 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -61,40 +61,25 @@ exports.initTeamsnap = (req, res, next) => { }); }; -exports.teamsnapLog = (method, types, id, req, message="") => { - console.log( +exports.teamsnapCallback = (err,result, d) => { + if (Array.isArray(result)){ + types = new Set(result.map(i=>i.type)) + } + else { + types = [result?.type] + } + + if (d) { + console.log( '\x1b[33mTeamSnap:\x1b[0m', - `${method} for \x1b[33m\[${types}\]\x1b[0m on ${id}`, - `on url ${req.url}`, - `"${message}"` + `${d.source} using ${d.method ? "teamsnap."+d.method : "?"} \x1b[33m\[${Array.from(types).join(", ")}\]\x1b[0m` ) - return; -} - -exports.tsPromise = (func_name, params) => { - return new Promise(function(resolve, reject) { - teamsnap.bulkLoad( - params, - (err, data) => { - console.log(); - if (err !== null) { - reject(err); - } - else { - resolve(data); - } - } - ) - ; - }); -} - -exports.teamsnapCallback = (err,items) => { - if (err) { + } + if (err) { console.log(err.message); throw new Error(err) } - return items; + return result; } exports.teamsnapFailure = (err, next) => { diff --git a/src/routes/auth.js b/src/routes/auth.js index a5b46cd..b9c718c 100644 --- a/src/routes/auth.js +++ b/src/routes/auth.js @@ -18,6 +18,7 @@ passport.use( callbackURL: "/auth/teamsnap/callback", passReqToCallback: true, scope: ["read", "write"], + proxy: true }, async function (req, accessToken, refreshToken, profile, done) { json = JSON.parse(profile._raw); diff --git a/src/routes/event.js b/src/routes/event.js index 60f8b01..839767d 100644 --- a/src/routes/event.js +++ b/src/routes/event.js @@ -2,16 +2,20 @@ const express = require("express"); const eventsController = require("../controllers/event"); const router = express.Router(); const tsUtils = require("../lib/utils") +const {teamsnapCallback} = require("../lib/utils") // Middleware const loadEvent = (req,res,next) => { const {team_id, event_id} = req.params; const bulkLoadTypes = ["event", "availabilitySummary"] - tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req); - req.promises.push(teamsnap.bulkLoad({teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:event_id}, null, tsUtils.teamsnapCallback) + req.promises.push( + teamsnap.bulkLoad( + {teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:event_id}, + null, + (err, items) => {teamsnapCallback(err, items, {req, source:"loadEvent", method:'bulkLoad'})} + ) .then(bulkLoadItems=>{ const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes); - tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req); req.availabilitySummary = items.availabilitySummaries.find(e=>e.eventId==event_id); req.event = items.events.find(e=>e.id==event_id); } diff --git a/src/routes/eventlineup.js b/src/routes/eventlineup.js index a95662c..10d720a 100644 --- a/src/routes/eventlineup.js +++ b/src/routes/eventlineup.js @@ -5,6 +5,7 @@ const tsUtils = require('../lib/utils') const multer = require("multer"); const upload = multer() const { doubleCsrfProtection } = require('../middlewares/csrf'); +const {teamsnapCallback} = require("../lib/utils") // Middleware @@ -12,16 +13,24 @@ const loadEventLineup = (req,res,next) => { const {team_id, event_id} = req.params if (!req.event_lineup){ bulkLoadTypes = ['eventLineup', 'eventLineupEntry'] - req.promises.push(teamsnap.bulkLoad({teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:event_id}, null, tsUtils.teamsnapCallback) + req.promises.push( + teamsnap.bulkLoad( + {teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:event_id}, + null, + (err, items) => {teamsnapCallback(err, items, {req, source:"loadEventLineup", method:'bulkLoad'})} + ) .then(items => tsUtils.groupTeamsnapItems(items, bulkLoadTypes)) .then(items => { - tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req); req.event_lineup = items.eventLineups.pop(); req.event_lineup_entries = items.eventLineupEntries?.sort((a,b)=>a.sequence-b.sequence) || []; }) ) - tsUtils.teamsnapLog('loadAvailabilites', types=['availabilities'], team_id, req); - req.promises.push(teamsnap.loadAvailabilities({eventId: event_id}).then(availabilities => req.availabilities = availabilities)) + req.promises.push( + teamsnap.loadAvailabilities( + {eventId: event_id}, + (err, items) => {teamsnapCallback(err, items, {req, source:"loadEventLineup", method:'loadAvailabilities'})} + ) + .then(availabilities => req.availabilities = availabilities)) } else { // const {event_lineup} = req diff --git a/src/routes/eventsheet.js b/src/routes/eventsheet.js index 64bcdf9..a1a677d 100644 --- a/src/routes/eventsheet.js +++ b/src/routes/eventsheet.js @@ -5,6 +5,7 @@ const {loadEvent} = require("./event"); const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload") const router = express.Router(); const tsUtils = require('../lib/utils') +const {teamsnapCallback} = require('../lib/utils') const multer = require("multer"); const upload = multer() @@ -18,19 +19,25 @@ const loadEvents = async (req,res,next) => { const eventIds = [...recent_events.map(e=>e.id), event_id, ...upcoming_events.map(e=>e.id)] // if (!req.event_lineup){ bulkLoadTypes = ['event','eventLineup', 'eventLineupEntry'] - req.promises.push(teamsnap.bulkLoad({teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:eventIds}, null, tsUtils.teamsnapCallback) + req.promises.push( + teamsnap.bulkLoad( + {teamId: team_id, types: bulkLoadTypes, scopeTo:'event', event__id:eventIds}, + null, + (err, items) => {teamsnapCallback(err, items, {req, source:"loadEvents", method:'bulkLoad'})} + ) .then(items => tsUtils.groupTeamsnapItems(items, bulkLoadTypes)) .then(items => { - tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req); req.timeline.events = items.events; req.timeline.event_lineups = items.eventLineups; req.timeline.event_lineup_entries = items.eventLineupEntries; }) ) - tsUtils.teamsnapLog('loadAvailabilites', types=['availabilities'], team_id, req); req.promises.push( - teamsnap.loadAvailabilities({eventId: eventIds}).then(availabilities => { + teamsnap.loadAvailabilities( + {eventId: eventIds}, + (err, items) => {teamsnapCallback(err, items, {req, source:"loadEvents", method:'loadAvailabilities'})} + ).then(availabilities => { req.timeline.availabilities = availabilities } ) @@ -53,7 +60,7 @@ const linksForEventSheet = async (req, res, next) => { } router.use("/:team_id([0-9]+)/event/:event_id([0-9]+)/sheet", loadEventLineup) -router.get("/:team_id([0-9]+)/event/:event_id([0-9]+)/lineup/:event_lineup_id([0-9]+)/sheet", loadEventLineup, loadRecentAndUpcomingEvents, loadEvents, eventsSheetController.getEventSheet) +router.get("/:team_id([0-9]+)/event/:event_id([0-9]+)/lineup/:event_lineup_id([0-9]+)/sheet", loadRecentAndUpcomingEvents, loadEvents, eventsSheetController.getEventSheet) // Routes router.get("/:team_id([0-9]+)/event/:event_id([0-9]+)/sheet", async (req,res) => { diff --git a/src/routes/opponent.js b/src/routes/opponent.js index ff469ef..4bb78e6 100644 --- a/src/routes/opponent.js +++ b/src/routes/opponent.js @@ -5,21 +5,25 @@ var router = express.Router(); const multer = require("multer"); const upload = multer() const { doubleCsrfProtection } = require('../middlewares/csrf'); +const {teamsnapCallback} = require('../lib/utils') // Middleware const loadOpponent = (req,res,next) => { const {opponent_id} = req.params; const {team} = req req.promises.push( - teamsnap.loadOpponents(team.id, (err, opponents)=>{ - if (err) console.log("error in route/opponent.js", err); - }).then(opponents => {req.opponent=opponents.find(o=>o.id==opponent_id);}) + teamsnap.loadOpponents( + team.id, + (err, opponents) => {teamsnapCallback(err, opponents, {req, source:"loadOpponent", method:'loadOpponent'})} + ) + .then(opponents => {req.opponent=opponents.find(o=>o.id==opponent_id);}) ) req.promises.push( - teamsnap.loadTeamMedia(team.id, (err, team_media)=>{ - if (err) console.log("error in route/opponent.js", err); - }) + teamsnap.loadTeamMedia( + team.id, + (err, opponents) => {teamsnapCallback(err, opponents, {req, source:"loadOpponent", method:'teamMedia'})} + ) .then(team_media => { req.opponent_logo = team_media.find(tm=>tm.description==`opponent-logo-${opponent_id}.png`) } diff --git a/src/routes/team.js b/src/routes/team.js index 9b915a1..73fc6b8 100644 --- a/src/routes/team.js +++ b/src/routes/team.js @@ -4,28 +4,31 @@ const {loadRecentAndUpcomingEvents} = require("../middlewares/bulkload") const { load } = require("dotenv"); const router = express.Router(); const tsUtils = require('../lib/utils') +const {teamsnapCallback} = require('../lib/utils') // Middleware const loadTeam = async (req,res,next) => { const {team_id} = req.params; - req.team = await teamsnap.loadTeam(team_id) - tsUtils.teamsnapLog('loadTeam', types=["team"], team_id, req); + req.team = await teamsnap.loadTeam( + team_id, + (err, result) => {teamsnapCallback(err, result, {req, source: 'loadTeam', method: 'loadTeam'})} + ) const bulkLoadTypes = ['teamMediaGroup', 'teamPreferences', 'member']; const items = tsUtils.groupTeamsnapItems(teamsnap.getAllItems(), bulkLoadTypes) if (req.session.current_team_id == null || req.session.current_team_id != team_id || bulkLoadTypes.filter(t=> !items[t] || items[t].length==0).length > 0){ req.promises.push(teamsnap.bulkLoad( team_id, bulkLoadTypes, - tsUtils.teamsnapCallback - ).then(bulkLoadItems=>{ + (err,items) => {teamsnapCallback(err, items, {req, source: 'loadTeam', method: 'bulkLoad'})} + ) + .then(bulkLoadItems=>{ const items = tsUtils.groupTeamsnapItems(bulkLoadItems, bulkLoadTypes) req.members = items.members; req.team_media_group = items.teamMediaGroups?.pop(); req.team_preferences = items.teamsPreferences.pop(); - req.session.current_team_id = req.team.id + req.session.current_team_id = req.team.id; } ) - .then(() => tsUtils.teamsnapLog('bulkLoad', types=bulkLoadTypes, team_id, req)) ) } else {