Skip to content

About

API wrapper for Strava's v3 API, in Node

Resources

Stars

0 stars

Watchers

1 watching

Forks

 
 

Latest commit

 

History

48 Commits

Folders and files

Repository files navigation

strava-v3: Simple Node wrapper for Strava's v3 API

NPM Version NPM Downloads Build Status

###Status Supports API functionality for all API endpoints from oauth to uploads:

  • oauth
  • athlete
  • athletes
  • activities
  • clubs
  • gear
  • segments
  • segment_efforts
  • streams
  • uploads

Installation

		npm install strava-v3

##Quick start

  • Create an application at strava.com/developers and make note of your access_token
  • from the root of your node application: $ npm install strava-v3
  • $ mkdir data
  • $ cp node_modules/strava-v3/strava_config data/strava_config
  • Open data/strava_config in your favorite text editor and supply your applications access_token to the access_token field
  • Use it!
		var strava = require('strava-v3');
		strava.athlete.get({},function(err,payload) {
			if(!err) {			
				console.log(payload);
			}	
			else {
				console.log(err);
			}
		});

##Resources

##Usage

###General

API access is designed to be as closely similar in layout as possible to Strava's own architecture, with the general call definition being

		var strava = require('strava-v3')
		strava.<api endpoint>.<api endpoint option>(args,callback)

Example usage:

		var strava = require('strava-v3');
		strava.athletes.get({id:12345},function(err,payload) {
			//do something with your payload
		});

###Overriding the default access_token

You'll probably want to do this with every call once your app is in production, using an access_token specific to a validated user allows for detailed athlete information, as well as the option for additional PUT/POST/DELETE privileges.

Just add the property 'access_token':'your access_token' to the args parameter of your call, the wrapper will use the provided access_token instead of the default in data/strava_config.

Example usage:

		var strava = require('strava-v3');
		strava.athlete.get({'access_token':'abcde'},function(err,payload) {
			//do something with your payload
		});

###Dealing with pagination

For those API calls that support pagination, you can control both the page being retrieved and the number of responses to return per_page by adding the corresponding properties to args.

Example usage:

		var strava = require('strava-v3');
		strava.athlete.getFollowers({
			'page':1
			, 'per_page':2
		},function(err,payload) {
			//do something with your payload
		});

###Uploading files To upload a file you'll have to pass in the data_type as specified in Strava's API reference as well as a string file designating the <filepath>/<filename>. If you want to get updates on the status of your upload pass in statusCallback along with the rest of your args - the wrapper will check on the upload once a second until complete.

Example usage:

		var strava = require('strava-v3');
		strava.uploads.post({
			'data_type':'gpx'
			, 'file': 'data/your_file.gpx'
			, 'name': 'Epic times'
			, 'statusCallback': function(err,payload) {
				//do something with your payload
			}
		},function(err,payload) {
			//do something with your payload
		});

###Supported API Endpoints

Oauth:

  • strava.oauth.getRequestAccessURL(args)
  • strava.oauth.getToken(code,done)
  • strava.oauth.deauthorize(args,done)

Athlete:

  • strava.athlete.get(args,done)
  • strava.athlete.update(args,done)
  • strava.athlete.listFriends(args,done)
  • strava.athlete.listFollowers(args,done)
  • strava.athlete.listActivities(args,done)

Athletes:

  • strava.athletes.get(args,done)
  • strava.athletes.listFriends(args,done)
  • strava.athletes.listFollowers(args,done)
  • strava.athletes.listKoms(args,done)

Activities:

  • strava.activities.get(args,done)
  • strava.activities.create(args,done)
  • strava.activities.update(args,done)
  • strava.activities.delete(args,done)
  • strava.activities.listFriends(args,done)
  • strava.activities.listZones(args,done)
  • strava.activities.listLaps(args,done)
  • strava.activities.listComments(args,done)
  • strava.activities.listKudos(args,done)
  • strava.activities.listPhotos(args,done)

Clubs:

  • strava.clubs.get(args,done)
  • strava.clubs.listMembers(args,done)
  • strava.clubs.listActivities(args,done)

Gear:

  • strava.gear.get(args,done)

Segments:

  • strava.segments.get(args,done)
  • strava.segments.listStarred(args,done)
  • strava.segments.listEfforts(args,done)
  • strava.segments.listLeaderboard(args,done)
  • strava.segments.explore(args,done)

Segment Efforts:

  • strava.segmentEfforts.get(args,done)

Streams:

  • strava.streams.activity(args,done)
  • strava.streams.effort(args,done)
  • strava.streams.segment(args,done)

Uploads:

  • strava.uploads.post(args,done)

##Development

This package includes a full test suite runnable via grunt jshint simplemocha or npm test, and will both delint and run shallow tests on API endpoints.

###Running the tests

You'll first need to supply data/strava_config with an access_token that has both private read and write permissions:

  • Make sure you've filled out all the fields in data/strava_config.
  • Use strava.oauth.getRequestAccessURL({scope:"view_private write"}) to generate the request url and query it via your browser.
  • Strava will prompt you (the user) to allow access, say yes and you'll be sent to your Authorization Redirection URI - the parameter code will be included in the redirection url.
  • Exchange the code for a new access_token:
		strava.oauth.getToken(code,function(err,payload) {
			console.log(payload);
		});
  • You're done! Paste the new access_token to data/strava_config and go run some tests:

grunt jshint simplemocha or npm test.

###How the tests work

Using the provided access_token tests will access each endpoint individually:

  • (For all GET endpoints) checks to ensure the correct type has been returned from the Strava.
  • (For PUT in athlete.update) changes some athlete properties, then changes them back.
  • (For POST/PUT/DELETE in activities.create/update/delete) first creates an activity, runs some operations on it, then deletes it.

About

API wrapper for Strava's v3 API, in Node

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages