
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Supports API functionality for all API endpoints from oauth
to uploads
:
oauth
athlete
athletes
activities
clubs
gear
routes
segments
segment_efforts
streams
uploads
npm install strava-v3
access_token
$ npm install strava-v3
$ mkdir data
$ cp node_modules/strava-v3/strava_config data/strava_config
data/strava_config
in your favorite text editor and supply your applications access_token
to the access_token
field var strava = require('strava-v3');
strava.athlete.get({},function(err,payload) {
if(!err) {
console.log(payload);
}
else {
console.log(err);
}
});
The template strava_config
file can be found at the modules root directory and has the following structure
{
"access_token" :"Your apps access token (Required for Quickstart)"
, "client_id" :"Your apps Client ID (Required for oauth)"
, "client_secret" :"Your apps Client Secret (Required for oauth)"
, "redirect_uri" :"Your apps Authorization Redirection URI (Required for oauth)"
}
You may alternatively supply the values via environment variables named following the convention STRAVA_<keyName>
, so
STRAVA_ACCESS_TOKEN
= access_token
STRAVA_CLIENT_ID
= client_id
STRAVA_CLIENT_SECRET
= client_secret
STRAVA_REDIRECT_URI
= redirect_uri
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
});
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
});
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
});
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
});
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)
strava.athlete.listRoutes(args,done)
strava.athlete.listClubs(args,done)
Athletes:
strava.athletes.get(args,done)
strava.athletes.listFriends(args,done)
strava.athletes.listFollowers(args,done)
strava.athletes.stats(args,done)
strava.athletes.listKoms(args,done)
strava.athletes.stats(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)
strava.activities.listRelated(args,done)
Clubs:
strava.clubs.get(args,done)
strava.clubs.listMembers(args,done)
strava.clubs.listActivities(args,done)
strava.clubs.listAnnouncements(args,done)
strava.clubs.listEvents(args,done)
strava.clubs.listAdmins(args,done)
strava.clubs.joinClub(args,done)
strava.clubs.leaveClub(args,done)
Gear:
strava.gear.get(args,done)
Routes:
strava.routes.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)
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.
You'll first need to supply data/strava_config
with an access_token
that has both private read and write permissions:
data/strava_config
.strava.oauth.getRequestAccessURL({scope:"view_private write"})
to generate the request url and query it via your browser.code
will be included in the redirection url.code
for a new access_token
: strava.oauth.getToken(code,function(err,payload) {
console.log(payload);
});
access_token
to data/strava_config
and go run some tests:grunt jshint simplemocha
or npm test
.
Using the provided access_token
tests will access each endpoint individually:
GET
endpoints) checks to ensure the correct type has been returned from the Strava.PUT
in athlete.update
) changes some athlete properties, then changes them back.POST/PUT/DELETE
in activities.create/update/delete
) first creates an activity, runs some operations on it, then deletes it.FAQs
Simple wrapper for Strava v3 API
The npm package strava-v3 receives a total of 3,359 weekly downloads. As such, strava-v3 popularity was classified as popular.
We found that strava-v3 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.