nodepen-api
v0.1.1
Published
An experimental CodePen API
Downloads
4
Readme
nodepen
![Gitter](https://badges.gitter.im/Join Chat.svg)
An experimental CodePen API built with node
It's a simple api, currently with a limited support
What can nodepen do?
For now
- Get user info
- Get pen list (popular, picked, etc)
- Get recent activity
- Get pen data by URL or slug
- Love pen's and comments
- Post comments
Installation and usage
Installing with npm
$ npm install nodepen-api --save
Basic usage
var Nodepen = require('nodepen-api');
// Your username and the _codepen_session cookie.
// This is for now, until have a login function.
// If you don't pass arguments, then user is set to anon
var np = new Nodepen( String username, String cookie );
Example
var np = new Nodepen('mallendeo', '_codepen_session=DA34B...');
Get user data
All functions returns a promise, so you have to use .then() to retrieve data
// get mallendeo's user data
var user = np.getUserData('mallendeo');
user.then(function(data) {
// returns an object with user data
console.log(data);
});
Get pen data
You can pass either a pen url, or a slug followed by the username
// np.getPenData('gwAFk', 'mallendeo');
// or
// np.getPenData('http://codepen.io/mallendeo/pen/gwAFk');
var pen = np.getPenData('gwAFk', 'mallendeo');
pen.then(function(data) {
// returns an object with pen data
console.log(data);
});
Get pens list
You cant retrieve pens by category/source e.g. 'popular', 'picked', 'showcase', etc. First argument is the source, this can be the following values
[
'picked',
'popular',
'recent',
'showcase',
'public',
'private',
'forked',
'loved',
'following',
'collection'
]
Second argument is the username, if it's null
then
it'll show public pens, otherwise will show your pens.
start
and end
values are optional, they set the
initial page and the last page, if it's a large range
it'll take longer to retrieve the list.
var list = np.getPensList('showcase', 'mallendeo').then(function(data) {
console.log(data);
});
Get users recent activity
You can get other people activity (from rss), or your own private activity
var activity = np.getRecentActivity('chriscoyier');
activity.then(function(data) {
console.log(data);
});
POST actions (require login)
Check login
np.checkLogin().then(function(data){
console.log(data);
});
Post a comment
penUrl (String)
comment (String)
np.postComment('http://codepen.io/mallendeo/pen/penslug', 'Ok Hi! sooo...')
.then(function(data){
console.log('Comment posted!');
});
Love a comment
penSlug (String)
commentId (Number)
love (Boolean)
true = like
np.loveComment('penslug', 1234, true)
.then(function(data){
console.log('Comment loved!');
});
Love a pen
penId (Number)
pen ID
loves (Number)
from 0 to 3
np.lovePen(23452, 2)
.then(function(data){
console.log('Pen loved!');
});
TODO
- Make a login function that doesn't require a session cookie