Skip to content

Commit 09a4bd7

Browse files
authoredMay 27, 2020
Fix encodeURI params and some clean up (#98)
* v2.7.7 * fix encodeURI issue * version bump
1 parent f275408 commit 09a4bd7

File tree

4 files changed

+65
-78
lines changed

4 files changed

+65
-78
lines changed
 

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ebay-node-api",
3-
"version": "2.8.5",
3+
"version": "2.8.6",
44
"description": "Ebay node api client",
55
"main": "./src/index.js",
66
"homepage": "https://github.com/pajaydev/ebay-node-api",

‎src/finding.js

+1-13
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ const findItemsByKeywords = function (options) {
1414
throw new Error('INVALID_REQUEST_PARMS --> Keyword is missing, Keyword is required');
1515
}
1616
this.options.operationName = FIND_ITEMS_BY_KEYWORD;
17-
this.options.param = 'keywords';
1817
// support only keyword string.
1918
if (!options.keywords) options = { keywords: options };
20-
options.keywords = encodeURIComponent(options.keywords);
2119
this.options.additionalParam = utils.constructAdditionalParams(options);
2220
const url = urlObject.buildSearchUrl(this.options);
2321
return getRequest(url).then((data) => {
@@ -46,9 +44,6 @@ const findItemsByCategory = function (categoryID) {
4644
const findCompletedItems = function (options) {
4745
if (!options) throw new Error('INVALID_REQUEST_PARMS --> Keyword or category ID are required.');
4846
if (!options.keywords && !options.categoryId) throw new Error('Keyword or category ID are required.');
49-
if (options.keywords) {
50-
options.keywords = encodeURIComponent(options.keywords);
51-
}
5247
this.options.operationName = FIND_COMPLETED_ITEMS;
5348
this.options.additionalParam = utils.constructAdditionalParams(options);
5449
const url = urlObject.buildSearchUrl(this.options);
@@ -67,13 +62,9 @@ const findCompletedItems = function (options) {
6762
*/
6863
const findItemsAdvanced = function (options) {
6964
if (!options) throw new Error('INVALID_REQUEST_PARMS --> check here for input fields https://developer.ebay.com/DevZone/finding/CallRef/findItemsAdvanced.html#Input');
70-
if (options.keywords) {
71-
options.keywords = encodeURIComponent(options.keywords);
72-
}
7365
this.options.operationName = FIND_ITEMS_ADV;
7466
this.options.additionalParam = utils.constructAdditionalParams(options);
7567
const url = urlObject.buildSearchUrl(this.options);
76-
console.log(url);
7768
return getRequest(url).then((data) => {
7869
return JSON.parse(data).findItemsAdvancedResponse;
7970
}, console.error // eslint-disable-line no-console
@@ -100,9 +91,7 @@ const findItemsByProduct = function (options) {
10091
let type = options.type ? options.type : 'ReferenceID';
10192
this.options.operationName = 'findItemsByProduct';
10293
this.options.additionalParam = utils.constructAdditionalParams(options);
103-
let url = urlObject.buildSearchUrl(this.options);
104-
url = `${url}&productId.@type=${type}`;
105-
console.log(url);
94+
let url = `${urlObject.buildSearchUrl(this.options)}&productId.@type=${type}`;
10695
return getRequest(url).then((data) => {
10796
return JSON.parse(data).findItemsByProductResponse;
10897

@@ -115,7 +104,6 @@ const findItemsIneBayStores = function (options) {
115104
if (!options.storeName) throw new Error('INVALID_REQUEST_PARMS --> Store name is required.');
116105
this.options.operationName = FIND_EBAY_STORES;
117106
this.options.additionalParam = utils.constructAdditionalParams(options);
118-
console.log(urlObject.buildSearchUrl(this.options));
119107
return getRequest(urlObject.buildSearchUrl(this.options)).then((data) => {
120108
return JSON.parse(data).findItemsIneBayStoresResponse;
121109

‎test/common.test.js

+62-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22
const expect = require('chai').expect;
3-
const should = require('chai').should();
43
const { parseObj } = require('../src/common-utils/index');
4+
const { constructAdditionalParams } = require('../src/common-utils/index');
55

66
describe('test common util methods', () => {
77
it('test parse object to query params', () => {
@@ -16,4 +16,65 @@ describe('test common util methods', () => {
1616
expect(parseObj(emptyOptions)).to.be.equal('');
1717
expect(parseObj(options, 'userName=ebay')).to.be.equal(`userName=ebay${expectedParam}`);
1818
});
19+
20+
describe('test constructAdditionalParams', () => {
21+
it('test constructAdditionalParams with required params', () => {
22+
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest';
23+
const options = {
24+
keywords: 'iphone',
25+
categoryId: '111',
26+
sortOrder: 'PricePlusShippingLowest'
27+
};
28+
const emptyOptions = {};
29+
expect(constructAdditionalParams(options)).to.be.equal(expectedParam);
30+
expect(constructAdditionalParams(emptyOptions)).to.be.equal('');
31+
});
32+
33+
it('test constructAdditionalParams with affiliate params', () => {
34+
let expectedParamWithAffiliate = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&affiliate.trackingId=1234567899&affiliate.networkId=123';
35+
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest';
36+
const options = {
37+
keywords: 'iphone',
38+
categoryId: '111',
39+
sortOrder: 'PricePlusShippingLowest',
40+
affiliate: {
41+
trackingId: 1234567899,
42+
networkId: 123
43+
}
44+
};
45+
46+
const optionsWithNoAffiliate = {
47+
keywords: 'iphone',
48+
categoryId: '111',
49+
sortOrder: 'PricePlusShippingLowest'
50+
};
51+
const emptyOptions = {};
52+
expect(constructAdditionalParams(options)).to.be.equal(expectedParamWithAffiliate);
53+
expect(constructAdditionalParams(optionsWithNoAffiliate)).to.be.equal(expectedParam);
54+
expect(constructAdditionalParams(emptyOptions)).to.be.equal('');
55+
});
56+
57+
it('test constructAdditionalParams with additional params', () => {
58+
let expectedParam = 'keywords=iphone%206s&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&storeName=addidas%20store';
59+
let expectedPaginationParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&paginationInput.entriesPerPage=2';
60+
const options = {
61+
keywords: 'iphone 6s',
62+
categoryId: '111',
63+
sortOrder: 'PricePlusShippingLowest',
64+
Condition: 3000,
65+
SoldItemsOnly: true,
66+
storeName: 'addidas store'
67+
};
68+
const optionsWithPagination = {
69+
keywords: 'iphone',
70+
categoryId: '111',
71+
sortOrder: 'PricePlusShippingLowest',
72+
Condition: 3000,
73+
SoldItemsOnly: true,
74+
entriesPerPage: 2
75+
};
76+
expect(constructAdditionalParams(options)).to.be.equal(expectedParam);
77+
expect(constructAdditionalParams(optionsWithPagination)).to.be.equal(expectedPaginationParam);
78+
});
79+
});
1980
});

‎test/finding.test.js

+1-63
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
'use strict';
22
const expect = require('chai').expect;
3-
const should = require('chai').should();
43
const nock = require('nock');
54
const Ebay = require('../src/index');
6-
const { constructAdditionalParams } = require('../src/common-utils/index');
75
const nockFindingApi = nock('https://svcs.ebay.com/');
86

97
describe('test ebay finding Api', () => {
@@ -24,66 +22,6 @@ describe('test ebay finding Api', () => {
2422
});
2523
});
2624

27-
describe('test constructAdditionalParams', () => {
28-
it('test constructAdditionalParams with required params', () => {
29-
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest';
30-
const options = {
31-
keywords: 'iphone',
32-
categoryId: '111',
33-
sortOrder: 'PricePlusShippingLowest'
34-
};
35-
const emptyOptions = {};
36-
expect(constructAdditionalParams(options)).to.be.equal(expectedParam);
37-
expect(constructAdditionalParams(emptyOptions)).to.be.equal('');
38-
});
39-
40-
it('test constructAdditionalParams with affiliate params', () => {
41-
let expectedParamWithAffiliate = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&affiliate.trackingId=1234567899&affiliate.networkId=123';
42-
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest';
43-
const options = {
44-
keywords: 'iphone',
45-
categoryId: '111',
46-
sortOrder: 'PricePlusShippingLowest',
47-
affiliate: {
48-
trackingId: 1234567899,
49-
networkId: 123
50-
}
51-
};
52-
53-
const optionsWithNoAffiliate = {
54-
keywords: 'iphone',
55-
categoryId: '111',
56-
sortOrder: 'PricePlusShippingLowest'
57-
};
58-
const emptyOptions = {};
59-
expect(constructAdditionalParams(options)).to.be.equal(expectedParamWithAffiliate);
60-
expect(constructAdditionalParams(optionsWithNoAffiliate)).to.be.equal(expectedParam);
61-
expect(constructAdditionalParams(emptyOptions)).to.be.equal('');
62-
});
63-
64-
it('test constructAdditionalParams with additional params', () => {
65-
let expectedParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true';
66-
let expectedPaginationParam = 'keywords=iphone&categoryId=111&sortOrder=PricePlusShippingLowest&itemFilter(0).name=Condition&itemFilter(0).value=3000&itemFilter(1).name=SoldItemsOnly&itemFilter(1).value=true&paginationInput.entriesPerPage=2';
67-
const options = {
68-
keywords: 'iphone',
69-
categoryId: '111',
70-
sortOrder: 'PricePlusShippingLowest',
71-
Condition: 3000,
72-
SoldItemsOnly: true
73-
};
74-
const optionsWithPagination = {
75-
keywords: 'iphone',
76-
categoryId: '111',
77-
sortOrder: 'PricePlusShippingLowest',
78-
Condition: 3000,
79-
SoldItemsOnly: true,
80-
entriesPerPage: 2
81-
};
82-
expect(constructAdditionalParams(options)).to.be.equal(expectedParam);
83-
expect(constructAdditionalParams(optionsWithPagination)).to.be.equal(expectedPaginationParam);
84-
});
85-
});
86-
8725
describe('test all get apis', () => {
8826
it('test findItemsAdvanced', () => {
8927
let ebay = new Ebay({
@@ -98,7 +36,7 @@ describe('test ebay finding Api', () => {
9836
}).then((data) => {
9937
expect(data.findItemsAdvancedResponse).not.null;
10038
}, (error) => {
101-
console.log(error);
39+
console.log(error); // eslint-disable-line no-console
10240
});
10341
});
10442
});

0 commit comments

Comments
 (0)