sbis3-bl-request
Advanced tools
Comparing version 0.0.8 to 0.1.0
@@ -22,3 +22,3 @@ 'use strict'; | ||
function doRequest(connection, reqParams) { | ||
function doRequest(connection, params, ext) { | ||
var urlInfo = url.parse(connection.hostname); | ||
@@ -28,3 +28,2 @@ var isHTTPS = urlInfo.protocol == 'https:'; | ||
var deferred = q.defer(); | ||
var sid, ua; | ||
@@ -35,18 +34,5 @@ connection.hostname = urlInfo.hostname; | ||
if (reqParams.sid) { | ||
sid = reqParams.sid; | ||
delete reqParams.sid; | ||
} | ||
var post = _preparePackage(params, ext); | ||
connection.headers = post.headers; | ||
if (reqParams.ua) { | ||
ua = reqParams.ua; | ||
delete reqParams.ua; | ||
} | ||
var params = _preparePackage(reqParams.method, reqParams.data); | ||
connection.headers = params.reqHeaders; | ||
sid ? (connection.headers['X-SBISSessionID'] = sid) : false; | ||
connection.headers['User-Agent'] = ua ? ua : 'SbisBLRequest'; | ||
var req = protocol.request(connection, function (res) { | ||
@@ -93,4 +79,4 @@ if (res.statusCode in humanReadableErrors) { | ||
// write data to request body | ||
if (params.reqBody) { | ||
req.write(params.reqBody); | ||
if (post.body) { | ||
req.write(post.body); | ||
} | ||
@@ -102,3 +88,3 @@ req.end(); | ||
function _preparePackage(method, params, id) { | ||
function _preparePackage(data, ext) { | ||
var | ||
@@ -108,18 +94,22 @@ body = { | ||
protocol: 3, | ||
method: method, | ||
params: params, | ||
id: id !== undefined ? id : 1 | ||
method: data.method, | ||
params: data.params, | ||
id: data.id !== undefined ? data.id : 1 | ||
}, | ||
stringifyBody = JSON.stringify(body), | ||
headers = { | ||
'X-CalledMethod': _transliterate("" + method), | ||
'X-OriginalMethodName': new Buffer("" + method).toString('base64'), | ||
'X-CalledMethod': _transliterate("" + data.method), | ||
'X-OriginalMethodName': new Buffer("" + data.method).toString('base64'), | ||
'Accept-Language': ';q=0.8,en-US;q=0.5,en;q=0.3', | ||
'Content-Type': 'application/json; charset=utf-8', | ||
'Content-Length': Buffer.byteLength(stringifyBody), | ||
'Connection': 'keep-alive' | ||
'Connection': 'keep-alive', | ||
'User-Agent': 'SbisBLRequest' | ||
}; | ||
if (ext) { | ||
headers = merge(headers, ext); | ||
} | ||
return { | ||
reqBody: stringifyBody, | ||
reqHeaders: headers | ||
body: stringifyBody, | ||
headers: headers | ||
}; | ||
@@ -192,4 +182,23 @@ } | ||
function merge(dst, ext) { | ||
for (var key in ext) { | ||
if (ext.hasOwnProperty(key)) { | ||
var value = ext[key]; | ||
if (typeof value == 'object') { | ||
if (value) { | ||
dst[key] = value instanceof Array ? [] : {}; | ||
merge(dst[key], value); | ||
} else { | ||
dst[key] = value; | ||
} | ||
} else { | ||
dst[key] = value; | ||
} | ||
} | ||
} | ||
return dst; | ||
} | ||
module.exports = { | ||
doRequest: doRequest | ||
}; |
{ | ||
"name": "sbis3-bl-request", | ||
"version": "0.0.8", | ||
"version": "0.1.0", | ||
"dependencies": { | ||
@@ -5,0 +5,0 @@ "q": "^1.1.2" |
@@ -32,6 +32,8 @@ # WI.SBIS BL Request Helper | ||
'Каталог': '' | ||
}, | ||
sid: '00000000-00000000-0000-0000000000000000' | ||
} | ||
}, | ||
ext = { | ||
'X-NewHeader': '0010100101' | ||
}; | ||
bl.doRequest(options, params).then(function (response) { | ||
bl.doRequest(options, params, ext).then(function (response) { | ||
if (response.error) { | ||
@@ -38,0 +40,0 @@ return new Error(response.error.message); |
6000
176
44