valid_data: function(callback) { strava.athlete.listActivities({},function(err,payload) { if(!err) { var miles_today = 0; var miles_thisweek = 0; for (var i=0;i<payload.length;i++) { var activity = payload[i]; if (activity['type'] == 'Run') { var activity_date = new Date(activity['start_date'].replace('T', ' ')); if (date_comp.today(activity_date)) { miles_today += payload[i]['distance']*meterToMile; } if (date_comp.thisweek(activity_date)) { miles_thisweek += payload[i]['distance']*meterToMile; } } } data = { "today": miles_today, "thisweek": miles_thisweek } callback(data) } else { console.log(err); } }); }
app.get('/activities', function(req, res){ strava.athlete.listActivities({'access_token': req.cookies.access_token}, function(err, payload){ if(!err){ res.render('activities', {activityArr: payloadToActivityArr(payload)}); } else console.log(err); }); });
app.get('/', function (req, res) { strava.athlete.listActivities({id:627105},function(err, activities) { if(!err) { res.render('index', { activities: activities }); } }); });
get: function (req, res/*, next*/) { strava.athlete.get({ 'access_token': req.headers.authorization }, function (err, payload) { if (!err) { res.json(payload); } else { res.json(err); } }); }
router.get('/routes/', authenticationMiddleware(), (req, res ) => { log.print("STRAVA: Get Routes"); strava.athlete.listRoutes({access_token: req.session.accessToken, id: req.session.athlete.id}, function (err, payload) { try { if (err) { res.end(JSON.stringify(false)); return; } res.end(JSON.stringify(payload)); } catch (error) { log.error(error.toString()); log.error(error.stack); } }) });
router.get('/friends/:id', authenticationMiddleware(), (req, res ) => { log.print("STRAVA: List of friends, page: " + req.params.id); strava.athlete.listFriends({ access_token: req.session.accessToken, page: req.params.id, id: req.session.athlete.id }, function (err, payload) { try { if (err) { res.end(JSON.stringify(false)); return; } var friends = payload.map(function (item) { if (!item.profile_medium || item.profile_medium === "avatar/athlete/medium.png") { item.profile_medium = "/images/medium.png"; } return { 'id': item.id, 'name': item.firstname + " " + item.lastname, 'profile_medium': item.profile_medium, 'sex': item.sex === null ? "M" : item.sex } }); res.end(JSON.stringify(friends)); } catch (error) { log.error(error.toString()); log.error(error.stack); } }) });
getStravaActivities: function(stravaToken, successCallback, errorCallback) { // Example input: // var activities = [ { id: 540164876, // resource_state: 2, // external_id: 'A07BF513-B26D-416F-A1C7-6946CFA00E9C', // upload_id: 593065117, // athlete: { id: 2914941, resource_state: 1 }, // name: 'Afternoon Ride', // distance: 63905.3, // moving_time: 9831, // elapsed_time: 10933, // total_elevation_gain: 946.6, // type: 'Ride', // start_date: '2016-04-09T11:05:15Z', // start_date_local: '2016-04-09T14:05:15Z', // timezone: '(GMT+02:00) Europe/Helsinki', // start_latlng: [ 60.223029, 24.816933 ], // end_latlng: [ 60.223178, 24.81664 ], // location_city: 'Espoo', // location_state: 'Uusimaa', // location_country: 'Finland', // start_latitude: 60.223029, // start_longitude: 24.816933, // achievement_count: 12, // kudos_count: 0, // comment_count: 0, // athlete_count: 2, // photo_count: 0, // map: // { id: 'a540164876', // summary_polyline: '{hqnJy`nvCfMlGzEzsAaRjg@yB_@cB`hAaKxe@qAna@hCr|BcAl~@~GliBgBtt@fNrfH~Jb`@rXpUbElKb]rpAvHto@rA`CtI_O|Bt@rJjZ|EpDvVxs@lRhy@~OjYjj@zxB`BrPoH|PmQhqAtI|q@fWfQjDpYlJxLxRrr@jj@{BlUtd@zo@hX`[de@oI`^gHdu@fQriA`@zw@sFblA~Ajc@`Mxm@zJ`PvHdn@hZrMh[yV`GfZzD|DJ|PnJxe@|ZnVsAn_AtEta@oIvc@{KhJiLoEcPjSgLrAk\\lk@cQxLyO~l@mW|g@_{@dJob@s]{PosAdFiv@o@}PtEyPiAcSqGqIkLbHkNyFsFuj@oHsFqGiYaXidCk^kw@_NiyAya@qn@yBsX{HgJxB}a@qCk]rTkiBp@u`CvUqgBZkY_KglAxVyn@dEou@bFmTCcUaE_]}M{Tmk@arBgGmF{IqYqCq@mI|N_Msy@k\\ynA}Ze[wOqc@bAul@wN_}FjB{v@mGicBjBiz@kE_{BdAu`@tL{s@dCw}ArLkq@aAsNkOvDcAeVnE{DM_K', // resource_state: 2 }, // trainer: false, // commute: false, // manual: false, // private: false, // flagged: false, // gear_id: null, // average_speed: 6.5, // max_speed: 16.4, // average_watts: 252.4, // kilojoules: 2481.3, // device_watts: false, // has_heartrate: false, // elev_high: 57, // elev_low: 4.9, // total_photo_count: 0, // has_kudoed: false, // workout_type: 10 } ]; // Get activities from last five days but not before 1st of may. var d = new Date(); var after = (new Date(d.getFullYear(), d.getMonth(), d.getDate() - 5)).getTime() / 1000; var earliestTime = 1462060800; // 1st of may if (after < earliestTime) after = earliestTime; strava.athlete.listActivities({access_token: stravaToken, after: after}, function(err, activities) { if(!err && typeof(activities.errors) == "undefined") { var response = {}; for (var i in activities) { if (activities[i]["type"] == "Ride") { // Format date. var date = new Date(activities[i]["start_date_local"]); var dateFormatted = date.getFullYear() + "-" + ("0" + date.getMonth()).slice(-2) + "-" + ("0" + date.getDay()).slice(-2); dateFormatted = activities[i]["start_date_local"].replace(/T.*/, ""); // Init date. if (typeof(response[dateFormatted]) == "undefined") { response[dateFormatted] = 0; } // Append kilometers. response[dateFormatted] += (parseFloat(activities[i]["distance"]) / 1000); } } // Round to 2 decimals. for (var date in response) { response[date] = Math.round(response[date] * 100) / 100; } successCallback(response); } else { errorCallback(JSON.stringify(activities)); } }); },
setInterval(function getData(){ var result = {}; var actList = []; var username; var email; // // Get User Profile // strava.athlete.get({}, function(err, payload){ if(!err){ console.log("============ PROFILE ============"); console.log("My Profile:"+ JSON.stringify(payload)); username = payload.firstname+"_"+payload.lastname; email = payload.email; } else{ console.log(err); } }); // // Get Latest Activity Info // var start = moment("2015 07 06","YYYY MM DD"); //var start = moment().subtract(2,'days'); var end = moment(); console.log("====== QUERY PERIOD ======"); console.log("start:"+start.format()); console.log("end:"+end.format()); strava.athlete.listActivities({'after':start/1000}, function(err, payload){ if(err){ console.log("Error retrieving activities "); } else{ //var startDateMill = new Date("7/1/2015").getTime();//.getMilliseconds(); //var endDateMill = new Date("7/7/2015").getTime();//.getMilliseconds() //var start = new Date(Date.yesterday).getTime(); for (var i = 0; i < payload.length; i++) { var activity = payload[i]; // supplement addition fields activity.username = username; activity.email = email; if(activity.distance == 0 && activity.type === "Run") activity.type = 'Strength'; console.log("=========== Activity : "+ activity.type +" ==============") if(activity.type === "Run"){ // data format conversion activity.distance_in_kilometer = activity.distance / 1000; console.log("activity id :"+activity.id+", type: Run, distance:"+ activity.distance/1000); console.log("data:" + JSON.stringify(activity)); strava.streams.activity({ 'id':activity.id, 'types':['time','heartrate', 'velocity_smooth'] }, function(err,data){ if(err){ console.log("error getting stream data"); }else { var act = getHeartRateDistribution(data, payload[i]); postActivity(act); } }); }else { console.log('non-run data:' + JSON.stringify(activity)); postActivity(activity); } } } }); return getData; } (), checkInterval);