node-plurk
Easy-to-use library for Plurk API 2.0. Parses JSON data automatically and handles comet channel.
Installation
npm install plurk
Features
- JSON data returned by Plurk API are parsed automatically
- Helpers for comet channel API
- Handle JSONP from comet channel (CometChannel.scriptCallback({});)
- Instantiate new plurk client from json file
- Parse limited_to property ("|id1||id2|") of plurk data to array
- Base36 converter for plurk_id in Plurk URL
- Extract user_id and plurk_id from Plurk URL
QuickStart
Instead of this:
oauth.post("http://www.plurk.com/APP/Profile/getPublicProfile",
"ACCESS_TOKEN", "ACCESS_TOKEN_SECRET",
{"user_id": "plurkapi"},
function (err, json) {
if (err) return;
var data;
try {
data = JSON.parse(json);
} catch (e) {
return;
}
console.log(data);
});
You can do this:
plurkClient.rq("Profile/getPublicProfile", {"user_id": "plurkapi"}, function (err, data) {
if (err) return;
console.log(data);
});
Getting Started
Initialize Client
var PlurkClient = require('plurk').PlurkClient;
var client = new PlurkClient(https, consumerKey, consumerSecret, accessToken, accessTokenSecret);
client.accessToken = "MY_ACCESS_TOKEN";
client.accessTokenSecret = "MY_ACCESS_TOKEN_SECRET";
Or you can instantiate client from json config file:
var client = require('plurk').fromFileSync('config.json')
config.json:
{
"https": true
, "consumerKey": "MY_CONSUMER_KEY"
, "consumerSecret": "MY_CONSUMER_SECRET"
, "accessToken": "MY_ACCESS_TOKEN"
, "accessTokenSecret": "MY_ACCESS_TOKEN_SECRET"
}
Again, accessToken and accessTokenSecret are optional.
Async read method is also available:
require('plurk').fromFile('config.json', function (err, client) {
if (!err) {
}
});
Obtaining Request Token and Access Token
See examples/getToken.js for example usage.
PlurkClient.prototype.getRequestToken
PlurkClient.prototype.getAccessToken
These two methods are as same as methods on @ciaranj/node-oauth.
Calling Plurk API
See examples/getPublicProfile.js for example usage.
PlurkClient.prototype.rq = function(api, obj, callback [, accessToken, accessTokenSecret])
client.rq('Profile/getPublicProfile', {'user_id': "plurkapi"}, function(err, data) {
if (!err) console.log(data);
});
API path can be one of following styles:
- "/APP/Profile/getPublicProfile"
- "APP/Profile/getPublicProfile"
- "/Profile/getPublicProfile"
- "Profile/getPublicProfile"
Note:
- For callback: function (err, data) { ... }
- Error object (err, data) is returned by node-oauth. This is null if no error occurred.
- For data (err, data), if JSON.parse failed internally, data would be null if err was null.
- And SyntaxError from JSON.parse would be catched and not to be rethrown.
- Instead, this exception (SyntaxError) would be assigned to err if err was null.
- However, normally invalid JSON and err (400, 404, 500) are presenting simultaneously.
- If so, err is not null and won't be changed by the presence of SyntaxError.
Short Version:
- If you successfully called API. The function would automatically parse JSON for you.
- On the other hand, if failed, err would be an object and the error JSON might not be parsed.
Helpers
Interacting with Comet Channel
Helper functions were created for handling data of comet API.
See examples/basic_comet.js for example usage.
Also check out examples/robot.js which demonstrates how to make a simple Plurk robot.
Parsing Plurk limited_to
var limitedTo = require('plurk').limitedTo;
limitedTo.parse("|1||2|");
limitedTo.stringify([1, 2]);
Extract plurk_id and user_id from URL
var urlMatch = require('plurk').urlMatch;
var userId = urlMatch.user('http://www.plurk.com/ChronoPlurk');
var plainPlurkId = urlMatch.plurk('http://www.plurk.com/p/foo3ly')
var plurkId = urlMatch.plurk('http://www.plurk.com/p/foo3ly', true)
Mobile version of URL works, too.
var userId = urlMatch.user('http://www.plurk.com/m/u/ChronoPlurk');
var plurkId = urlMatch.plurk('http://www.plurk.com/m/p/foo3ly', true)