2022-09-30 05:39:11 +00:00

63 lines
1.7 KiB
JavaScript

var url = require('url');
var defaults = require('./defaults');
var lastfm = require('lastfm');
var LastFmNode = require('lastfm').LastFmNode;
var Album = require('./album');
var Artist = require('./artist');
var Auth = require('./auth');
var Chart = require('./chart');
var Geo = require('./geo');
var Library = require('./library');
var Tag = require('./tag');
var Track = require('./track');
var User = require('./user');
var LastfmAPI = module.exports = function (options) {
this.api = new LastFmNode(options);
this.sessionCredentials = null;
this.album = new Album(this);
this.artist = new Artist(this);
this.auth = new Auth(this);
this.chart = new Chart(this);
this.geo = new Geo(this);
this.library = new Library(this);
this.tag = new Tag(this);
this.track = new Track(this);
this.user = new User(this);
};
LastfmAPI.prototype.getAuthenticationUrl = function (params) {
if (!params) params = {};
var baseUrl = 'http://www.last.fm/api/auth',
urlParts = url.parse(baseUrl);
urlParts.query = {};;
urlParts.query.api_key = this.api.api_key;
if (params.cb) { urlParts.query.cb = params.cb; }
if (params.token) { urlParts.query.token = params.token; }
return url.format(urlParts);
};
LastfmAPI.prototype.setSessionCredentials = function (username, key) {
this.sessionCredentials = {
'username' : username,
'key' : key
};
};
LastfmAPI.prototype.authenticate = function (token, callback) {
if (typeof callback !== 'function') { callback = function () {}; }
var self = this;
this.auth.getSession(token, function (err, session) {
if (err) { return callback(err); }
if (!session.key) { return callback(new Error('Something fishy')); }
self.setSessionCredentials(session.name, session.key);
callback(null, self.sessionCredentials);
});
};