vk_api_wrapper
Version:
91 lines (87 loc) • 2.74 kB
JavaScript
(function() {
"use strict";
const VKsdk = require('vksdk');
const fields = 'bdate, sex, country, city, home_town, site, education, universities, schools, status, relation, personal, activities, interests, music, movies, tv, books, games, about, quotes';
module.exports = function(config) {
const VK = new VKsdk({
appId: config.id,
appSecret: config.secret,
language: config.language || 'ru',
https: config.https || false,
secure: config.secure || false
});
return class VKApi {
static all(user_id, arr) {
return new Promise(function(done, reject) {
Promise.all(arr).then(
function(data) {
return done({
"_id": user_id,
"vkid": user_id,
"profile": data[0],
"posts": data[1],
"group_ids": data[2],
"friends": data[3]
});
},
function(err) {
return reject(err);
});
});
}
static getUserInfo(user, fields) {
return new Promise(function(done, reject) {
VK.request('users.get', {
'user_ids': user,
'fields': fields || ''
}, function(data) {
return data.error ? reject(data.error) : done(data.response[0]);
});
});
}
static getUserGroups(user) {
return new Promise(function(done, reject) {
VK.request('users.getSubscriptions', {
'user_id': user,
'extended': 1
}, function(data) {
return data.error ? reject(data.error) : done(data.response);
});
});
}
static getUserPosts(user_id, offset) {
return new Promise(function(done, reject) {
VK.request('wall.get', {
'owner_id': user_id,
'offset': offset || 0,
'filter': 'owner',
'extended': 0
}, function(data) {
return data.error ? reject(data.error) : done(data.response);
});
});
}
static getUserFriends(user, offset) {
return new Promise(function(done, reject) {
VK.request('friends.get', {
'user_id': user,
'offset': offset || 0,
'count': 999
}, function(data) {
return data.error ? reject(data.error) : done(data.response);
});
});
}
static getUserVideos(user) { // auth
return new Promise(function(done, reject) {
VK.request('video.getUserVideos', {
'owner_id': user,
'count': 100
}, function(data) {
return data.error ? reject(data.error) : done(data.response);
});
});
}
};
};
}());