extra-life-node
Version:
Extra-Life API library for node
196 lines (174 loc) • 7.12 kB
Markdown
# extra-life-node
This is a clone of [https://github.com/ammuench/extra-life-api](extra-life-api)
noed-extra-life is a node module to integrate with the extra-life API, and extends it to provide additional info where possible.
## Installation
------
You can install the repo through NPM
```bash
npm i extra-life-node
```
```javascript
import { getTeamInfo, getTeamDonations } from 'extra-life-node';
import * as extraLifeAPI from 'extra-life-node';
```
## API
------
### Team & Participant IDs Parameters
Every method on the module will require an individual's 'Participant ID' or a team's 'Team ID'. These can be found by going to your personal profile page or team profile page, and checking the end of the URL:
**Participant ID**
extra-life.org/index.cfm?fuseaction=donordrive.participant&participantID=**[PARTICIPANT ID HERE]**
**Team ID**
extra-life.org/index.cfm?fuseaction=donorDrive.team&teamID=**[TEAM ID HERE]**
### Methods
* **getUserInfo( participantId )**
* Takes `participantId` as a parameter
* Returns a basic object of user info
**Returned object**
```javascript
{
displayName: 'Joe Smith',
fundraisingGoal: 400,
participantID: 506571,
teamName: 'My Awesome Team',
eventName: 'Extra Life 2018',
avatarImageURL: 'https://assets.donordrive.com/extralife/images/$avatars$/constituent_42BB6E88-C292-13D6-00FFFD8987560FD1538.jpg',
createdDateUTC: '2018-06-15T19:18:15.77+0000',
eventID: 539,
sumDonations: 250,
teamID: 38961,
isTeamCaptain: false,
numDonations: 17,
donateURL: 'https://www.extra-life.org/index.cfm?fuseaction=donate.participant&participantID=506571',
teamURL: 'https://www.extra-life.org/index.cfm?fuseaction=donorDrive.team&teamID=38961'
}
```
* **getUserDonations( participantId, limit?, page?)**
* Takes `participantId` as a parameter. `limit` and `page` are optional parameters. Page size is equal to your `limit` value.
* Returns information on page and count, and an array of donations, ordered from newest to oldest
**Returned object**
```javascript
{
countDonations: 73,
countPages: 1,
donations: [
{
displayName: 'Tony Stark',
message: 'Great job!',
participantID: 681675,
amount: 25,
donorID: '5D4DBFFF-B861-D42E-05E6F2B574189698F',
avatarImageURL: '//assets.donordrive.com/clients/extralife/img/avatar-constituent-default.gif',
createdDateUTC: '2018-09-04T04:54:16.953+0000'
},
]
}
```
* **getTeamInfo(teamId, fetchRoster?)**
* Takes `teamId` as a parameter and an optional `fetchRoster` boolean (defaults to TRUE)
* Returns a promise that contains an object with the basic team info and it's full roster (if `fetchRoster` is set to TRUE)
* Roster returns as array of user objects
**Returned object**
```javascript
{
fundraisingGoal: 50000,
eventName: 'Extra Life 2018',
avatarImageURL: 'http://assets.donordrive.com/extralife/images/$event539$/avatar_team_38961.jpg',
createdDateUTC: '2018-01-20T04:51:25.97+0000',
eventID: 539,
sumDonations: 1469,
teamID: 38961,
name: 'Extra Life Nerds',
numDonations: 51,
teamURL: 'https://www.extra-life.org/index.cfm?fuseaction=donorDrive.team&teamID=38961' },
members: [
{ displayName: 'Alex Muench',
fundraisingGoal: 1000,
participantID: 320706,
teamName: 'Extra Life Nerds',
eventName: 'Extra Life 2018',
avatarImageURL: 'https://assets.donordrive.com/extralife/images/$avatars$/constituent_0C07ECD7-C293-34EB-45A3F7B77F8BA043.jpg',
createdDateUTC: '2018-09-06T20:14:48.0+0000',
eventID: 539,
sumDonations: 0,
teamID: 38961,
isTeamCaptain: false,
numDonations: 0,
profileURL: 'https://www.extra-life.org/index.cfm?fuseaction=donorDrive.participants&participantID=320706',
URL: 'https://www.extra-life.org/index.cfm?fuseaction=donorDrive.participant&participantID=320706'
}
]
}
```
* **getTeamRoster(teamId)**
* Takes `teamId` as a parameter
* Returns information on page and count and an array of team members
**Returned object**
```javascript
{
countMembers: 73,
countPages: 1,
members: [
{ displayName: 'Alex Muench',
fundraisingGoal: 1000,
participantID: 320706,
teamName: 'Extra Life Nerds',
eventName: 'Extra Life 2018',
avatarImageURL: 'https://assets.donordrive.com/extralife/images/$avatars$/constituent_0C07ECD7-C293-34EB-45A3F7B77F8BA043.jpg',
createdDateUTC: '2018-09-06T20:14:48.0+0000',
eventID: 539,
sumDonations: 0,
teamID: 38961,
isTeamCaptain: false,
numDonations: 0,
profileURL: 'https://www.extra-life.org/index.cfm?fuseaction=donorDrive.participants&participantID=320706',
URL: 'https://www.extra-life.org/index.cfm?fuseaction=donorDrive.participant&participantID=320706'
}
]
}
```
* **getTeamDonations( teamId, limit, page )**
* Takes `teamId` as a parameter. `limit` and `page` are optional parameters. Page size is equal to your `limit` value.
* Returns information on page and count, and an array of donations given to the team, ordered from newest to oldest
* **NOTE** ExtraLife's API includes registrations as donations in this view. Donations of "null" are a user signing up for a team. Donations of 19 (assumedly) are users signing up as a Platinum User.
**Returned object**
```javascript
{
countDonations: 73,
countPages: 1,
donations: [
{
displayName: 'Joe Smith',
message: null,
participantID: 55555,
amount: 19,
donorID: 'ASDFF-AB7F-8295-1283655555F38D6D',
avatarImageURL: '//assets.donordrive.com/extralife/images/$avatars$/constituent_ASDFF-AB7F-8295-1283655555F38D6D.jpg',
createdDateUTC: '2018-01-22T14:39:04.783+0000',
teamID: 38961
},
{
displayName: 'Joan Smith',
message: null,
participantID: 55555,
amount: 19,
donorID: 'ASDFF-AB7F-8295-1283655555F38D6D',
avatarImageURL: '//assets.donordrive.com/extralife/images/$avatars$/constituent_ASDFF-AB7F-8295-1283655555F38D6D.jpg',
createdDateUTC: '2018-01-20T18:15:20.607+0000',
teamID: 38961
},
{
displayName: 'Joey Smith',
message: null,
participantID: 55555,
amount: 19,
donorID: 'ASDFF-AB7F-8295-1283655555F38D6D',
avatarImageURL: '//assets.donordrive.com/extralife/images/$avatars$/constituent_ASDFF-AB7F-8295-1283655555F38D6D.jpg',
createdDateUTC: '2018-01-20T17:47:14.630+0000',
teamID: 38961
}
]
}
```
License
------
[The MIT License (MIT)](https://tldrlegal.com/license/mit-license)