Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 22 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
nodejs-vksdk
promise-vksdk
============
Small SDK for vk.com API.

This is form of vksdk, with Promise

# Installation
npm install vksdk
npm install promise-vksdk

# Example
```js
// Setup
var VK = require('vksdk');
var VK = require('promise-vksdk');
var vk = new VK({
'appId' : 2807970,
'appSecret' : 'L14ZKpgQPalJdumI6vFK',
Expand All @@ -29,25 +31,28 @@ vk.on('serverTokenReady', function(_o) {
vk.setSecureRequests(true);

// Request server API method
vk.request('secure.getSMSHistory', {}, function(_dd) {
console.log(_dd);
let vksdk = require('promise-vksdk');
const vk = new vksdk({
'appId' : 2807970,
'appSecret' : 'L14ZKpgQPalJdumI6vFK',
'lang' : 'ru'
});

vk.request("users.get", {user_id:1}).then(o=>console.log(o));

/**
* Request client methods
*/
// First you have to pass access_token from client side JS code
vk.setToken(access_token);

// Request 'users.get' method
vk.request('users.get', {'user_id' : 1}, function(_o) {
console.log(_o);
});
vk.request("users.get", {user_id:1}).then(o=>console.log(o));
```

# Setup
```js
var VK = require('vksdk');
var VK = require('promise-vksdk');

var vk = new VK({
'appId' : [Your application ID here],
Expand Down Expand Up @@ -84,9 +89,9 @@ For vk.com API requests you have to use method *request(_method, _requestParams,
* **[string] _method** — name of vk.com API method,
* **[mixed] _requestParams** - object with values of params for api method. This param is not required. You also can pass empty object *{}*
* **[mixed] _response** — special response handler (not required), function or event name.

Request method gets data from API and returns result. There are 3 ways to get data from API


## Callback
```js
vk.setSecureRequests(false);
Expand Down Expand Up @@ -118,6 +123,7 @@ vk.on('myCustomEvent', function(_o) {
});
```


# Server access token
For some api methods you need server access token

Expand All @@ -131,7 +137,12 @@ vk.on('serverTokenReady', function(_o) {
});
```

You also can get tokeb with callback or custom event
You also can get token with callback or custom event
#Errors:

```js
vk.request("users.get", {user_id:1}).then(o=>console.log(o)).catch(err=>console.error(err));
```

# HTTP errors
SDK emits 'http-error' event in case of http errors.
Expand Down
12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "vksdk",
"description": "SDK for API of vk.com",
"name": "promise-vksdk",
"description": "SDK for API of vk.com with Promise",
"version": "5.3.2",
"homepage": "https://github.com/57uff3r/nodejs-vksdk",
"homepage": "https://github.com/DuckerMan/promise-vksdk",
"email": "57uff3r@gmail.com",
"license": "BSD-3-Clause",
"main": "sdk.js",
Expand All @@ -11,16 +11,16 @@
},
"repository": {
"type": "git",
"url": "https://github.com/57uff3r/nodejs-vksdk.git"
"url": "https://github.com/DuckerMan/promise-vksdk.git"
},
"keywords": [
"vk",
"vkontakte",
"sdk"
],
"author": "Andrey Korchak <57uff3r@gmail.com> (http://57uff3r.ru/)",
"author": "DuckerMan | Andrey Korchak",
"bugs": {
"url": "https://github.com/57uff3r/nodejs-vksdk/issues"
"url": "https://github.com/DuckerMan/promise-vksdk/issues"
},
"devDependencies": {
"chai": "^3.4.0",
Expand Down
44 changes: 26 additions & 18 deletions sdk.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,41 +230,42 @@ VK.prototype.oldRequest = function(_method, _requestParams, _response) {
* Request API method
* @param {string} _method
* @param {mixed} _params
* @param {mixed} _response
* @returns {mixed}
*
* @see https://vk.com/pages?oid=-17680044&p=Application_Interaction_with_API
*/
VK.prototype.request = function(_method, _requestParams, _response) {
var responseType = 'event';
let thats = this;
var self = this;
return new Promise(function(resolve,reject){
var responseType = 'event';

if ( typeof(_response) === 'function') {
responseType = 'callback';
}
if ( typeof(_response) === 'function') {
responseType = 'callback';
}

var self = this;

var params = {
'lang' : this.options.lang,
'v' : this.options.version,
'https' : (this.options.https) ? 1 : 0
'lang' : thats.options.lang,
'v' : thats.options.version,
'https' : (thats.options.https) ? 1 : 0
};

if (this.isEmpty(_requestParams) === false) {
if (thats.isEmpty(_requestParams) === false) {
for (var i in _requestParams) {
params[i] = _requestParams[i];
}
}

var requestString = this.buildQuery(params);
var requestString = thats.buildQuery(params);

if (this.options.secure) {
if (this.token) {
requestString = requestString + '&access_token=' + this.token;
if (thats.options.secure) {
if (thats.token) {
requestString = requestString + '&access_token=' + thats.token;
}

if (this.options.appSecret) {
requestString = requestString + '&client_secret=' + this.options.appSecret;
if (thats.options.appSecret) {
requestString = requestString + '&client_secret=' + thats.options.appSecret;
}
}

Expand All @@ -279,7 +280,7 @@ VK.prototype.request = function(_method, _requestParams, _response) {
}
};

this.waitForNextRequest(function () {
thats.waitForNextRequest(function () {
self.requestingNow = true;
var post_req = https.request(options, function(res) {
var apiResponse = "";
Expand All @@ -295,26 +296,33 @@ VK.prototype.request = function(_method, _requestParams, _response) {
try {
var o = JSON.parse(apiResponse);
} catch(e) {
return self.emit('parse-error', apiResponse);
self.emit('parse-error', apiResponse);
reject('parse-error', apiResponse);
}

if (responseType === 'callback' && typeof _response === 'function') {
_response(o);
resolve(o)
} else {
if (responseType === 'event' && !!_response) {
return self.emit(_response, o);
}
return self.emit('done:' + _method, o);
}

resolve(o);
});
}).on('error', function (e) {
self.requestingNow = false;
self.emit('http-error', e);
reject('http-error', e);
});

post_req.write(requestString);
post_req.end();
})
});

};

/**
Expand Down