adn
Version:
App.net API for Node
77 lines (56 loc) • 1.68 kB
JavaScript
// Dependencies
var request = require("request"),
yoyaku = require("yoyaku");
// API components
var ADNAuth = require("./auth");
// Uncommenting these as they get written.
// ADNPost = require("./post");
// ADNUser = require("./user");
// ADNChannel = require("./channel");
// ADNMessage = require("./message");
// ADNFile = require("./file");
// ADNStream = require("./stream");
// ADNFilter = require("./filter");
function ADN(options) {
options = options || {};
this.clientID = options.clientID;
this.clientSecret = options.clientSecret;
this.authKind = null;
this.authenticated = false;
this.appTokens = null;
this.userToken = null;
this.username = null;
this.openStreams = [];
return this;
}
ADN.prototype.auth =
yoyaku(
{
"success": function() {},
"authfail": function(e) { throw e; },
"renderclient": function(e) { throw e; },
"error": function(e) { throw e; }
},
function() {
var promises = [].pop.call(arguments),
parameters = arguments.length >= 1 && arguments[0];
var kind = parameters.kind || this.authKind || "appToken";
if (kind === "appToken") {
if (!parameters.clientSecret || !parameters.clientID)
return promises.error(
new Error("You provide a client ID and secret for appToken authentication."));
ADNAuth.appToken(
parameters.clientID,
parameters.clientSecret
)
.nope(promises.error)
.yep(promises.success);
}
if (kind === "serverSide") {
}
if (kind === "password") {
}
new Error("Unspecified or unimplemented auth-type.");
});
module.exports = ADN;
module.exports.Auth = ADNAuth;