Example #1
0
  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);
      }
    });
  }
Example #2
0
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);
    });
});
Example #3
0
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);
     }
   });
 }
Example #5
0
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);
        }
    })
});
Example #6
0
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));

            }
        });

    },
Example #8
0
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);