Skip to content
This repository was archived by the owner on May 28, 2023. It is now read-only.

Commit 9f44e1b

Browse files
authored
Merge pull request #309 from patzick/bugfix/port-functionality-from-#302
Bugfix/port functionality from #302
2 parents ff82335 + 1a35f9b commit 9f44e1b

File tree

10 files changed

+179
-926
lines changed

10 files changed

+179
-926
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2525
- New payload for magento1 stock check endpoint (#261)
2626
- `yarn dev:inspect` command and extract nodemon config to nodemon.json @Tjitse-E, @cewald (#272, #279)
2727
- Include Magento Currency Code in mage2vs import and productsdelta if available @rain2o (#281)
28+
- Better handling of HTTP error codes provided by API client - pkarw (#3151)
2829

2930
## [1.9.5] - 2019.06.17
3031
- Dependencies security update against js-yaml flaws.

src/api/cart.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { apiStatus } from '../lib/util';
1+
import { apiStatus, apiError } from '../lib/util';
22
import { Router } from 'express';
33
import PlatformFactory from '../platform/factory';
44

@@ -21,7 +21,7 @@ export default ({ config, db }) => {
2121
cartProxy.create(req.query.token).then((result) => {
2222
apiStatus(res, result, 200);
2323
}).catch(err => {
24-
apiStatus(res, err, 500);
24+
apiError(res, err);
2525
})
2626
})
2727

@@ -41,7 +41,7 @@ export default ({ config, db }) => {
4141
cartProxy.update(req.query.token, req.query.cartId ? req.query.cartId : null, req.body.cartItem).then((result) => {
4242
apiStatus(res, result, 200);
4343
}).catch(err => {
44-
apiStatus(res, err, 500);
44+
apiError(res, err);
4545
})
4646
})
4747

@@ -59,7 +59,7 @@ export default ({ config, db }) => {
5959
cartProxy.applyCoupon(req.query.token, req.query.cartId ? req.query.cartId : null, req.query.coupon).then((result) => {
6060
apiStatus(res, result, 200);
6161
}).catch(err => {
62-
apiStatus(res, err, 500);
62+
apiError(res, err);
6363
})
6464
})
6565

@@ -73,7 +73,7 @@ export default ({ config, db }) => {
7373
cartProxy.deleteCoupon(req.query.token, req.query.cartId ? req.query.cartId : null).then((result) => {
7474
apiStatus(res, result, 200);
7575
}).catch(err => {
76-
apiStatus(res, err, 500);
76+
apiError(res, err);
7777
})
7878
})
7979

@@ -87,7 +87,7 @@ export default ({ config, db }) => {
8787
cartProxy.getCoupon(req.query.token, req.query.cartId ? req.query.cartId : null).then((result) => {
8888
apiStatus(res, result, 200);
8989
}).catch(err => {
90-
apiStatus(res, err, 500);
90+
apiError(res, err);
9191
})
9292
})
9393

@@ -107,7 +107,7 @@ export default ({ config, db }) => {
107107
cartProxy.delete(req.query.token, req.query.cartId ? req.query.cartId : null, req.body.cartItem).then((result) => {
108108
apiStatus(res, result, 200);
109109
}).catch(err => {
110-
apiStatus(res, err, 500);
110+
apiError(res, err);
111111
})
112112
})
113113

@@ -122,7 +122,7 @@ export default ({ config, db }) => {
122122
cartProxy.pull(req.query.token, req.query.cartId ? req.query.cartId : null, req.body).then((result) => {
123123
apiStatus(res, result, 200);
124124
}).catch(err => {
125-
apiStatus(res, err, 500);
125+
apiError(res, err);
126126
})
127127
})
128128

@@ -137,7 +137,7 @@ export default ({ config, db }) => {
137137
cartProxy.totals(req.query.token, req.query.cartId ? req.query.cartId : null, req.body).then((result) => {
138138
apiStatus(res, result, 200);
139139
}).catch(err => {
140-
apiStatus(res, err, 500);
140+
apiError(res, err);
141141
})
142142
})
143143

@@ -156,7 +156,7 @@ export default ({ config, db }) => {
156156
cartProxy.getShippingMethods(req.query.token, req.query.cartId ? req.query.cartId : null, req.body.address).then((result) => {
157157
apiStatus(res, result, 200);
158158
}).catch(err => {
159-
apiStatus(res, err, 500);
159+
apiError(res, err);
160160
})
161161
})
162162

@@ -171,7 +171,7 @@ export default ({ config, db }) => {
171171
cartProxy.getPaymentMethods(req.query.token, req.query.cartId ? req.query.cartId : null).then((result) => {
172172
apiStatus(res, result, 200);
173173
}).catch(err => {
174-
apiStatus(res, err, 500);
174+
apiError(res, err);
175175
})
176176
})
177177

@@ -190,7 +190,7 @@ export default ({ config, db }) => {
190190
cartProxy.setShippingInformation(req.query.token, req.query.cartId ? req.query.cartId : null, req.body).then((result) => {
191191
apiStatus(res, result, 200);
192192
}).catch(err => {
193-
apiStatus(res, err, 500);
193+
apiError(res, err);
194194
})
195195
})
196196

@@ -209,7 +209,7 @@ export default ({ config, db }) => {
209209
cartProxy.collectTotals(req.query.token, req.query.cartId ? req.query.cartId : null, req.body.methods).then((result) => {
210210
apiStatus(res, result, 200);
211211
}).catch(err => {
212-
apiStatus(res, err, 500);
212+
apiError(res, err);
213213
})
214214
})
215215

src/api/order.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import resource from 'resource-router-middleware';
2-
import { apiStatus } from '../lib/util';
3-
import { merge } from 'lodash';
2+
import { apiStatus, apiError } from '../lib/util';import { merge } from 'lodash';
43
import PlatformFactory from '../platform/factory';
54

65
const Ajv = require('ajv'); // json validator
@@ -68,7 +67,7 @@ export default ({ config, db }) => resource({
6867
const job = queue.create('order', incomingOrder).save( function(err){
6968
if(err) {
7069
console.error(err)
71-
apiStatus(res, err, 500);
70+
apiError(res, err);
7271
} else {
7372
apiStatus(res, job.id, 200);
7473
}
@@ -81,7 +80,7 @@ export default ({ config, db }) => resource({
8180
orderProxy.create(req.body).then((result) => {
8281
apiStatus(res, result, 200);
8382
}).catch(err => {
84-
apiStatus(res, err.toString(), 500);
83+
apiError(res, err);
8584
})
8685
}
8786
},

src/api/product.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { apiStatus, sgnSrc } from '../lib/util';
1+
import { apiStatus, sgnSrc, apiError } from '../lib/util';
22
import { Router } from 'express';
33
import PlatformFactory from '../platform/factory';
44

@@ -28,7 +28,7 @@ export default ({ config, db }) => {
2828
productProxy.list(req.query.skus.split(',')).then((result) => {
2929
apiStatus(res, result, 200);
3030
}).catch(err=> {
31-
apiStatus(res, err, 500);
31+
apiError(res, err);
3232
})
3333
})
3434

@@ -56,7 +56,7 @@ export default ({ config, db }) => {
5656
})
5757
apiStatus(res, result, 200);
5858
}).catch(err=> {
59-
apiStatus(res, err, 500);
59+
apiError(res, err);
6060
})
6161
})
6262

src/api/review.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { apiStatus } from '../lib/util';
2-
import { Router } from 'express';
1+
import { apiStatus, apiError } from '../lib/util';import { Router } from 'express';
32
import PlatformFactory from '../platform/factory'
43

54
const Ajv = require('ajv'); // json validator
@@ -28,7 +27,7 @@ export default ({config, db}) => {
2827
reviewProxy.create(req.body.review).then((result) => {
2928
apiStatus(res, result, 200);
3029
}).catch(err=> {
31-
apiStatus(res, err, 500);
30+
apiError(res, err);
3231
})
3332
})
3433

src/api/stock.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { apiStatus } from '../lib/util';
2-
import { Router } from 'express';
1+
import { apiStatus, apiError } from '../lib/util';import { Router } from 'express';
32
import PlatformFactory from '../platform/factory'
43

54
export default ({ config, db }) => {
@@ -78,7 +77,7 @@ export default ({ config, db }) => {
7877
Promise.all(promisesList).then((results) => {
7978
apiStatus(res, results, 200);
8079
}).catch(err=> {
81-
apiStatus(res, err, 500);
80+
apiError(res, err);
8281
})
8382
})
8483

src/api/sync.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { apiStatus } from '../lib/util';
2-
import { Router } from 'express';
1+
import { apiStatus, apiError } from '../lib/util';import { Router } from 'express';
32

43
export default ({ config, db }) => {
54

@@ -24,7 +23,7 @@ export default ({ config, db }) => {
2423
if (orderMetaData) {
2524
orderMetaData.order = null // for security reasons we're just clearing out the real order data as it's set by `order_2_magento2.js`
2625
}
27-
apiStatus(res, err ? err : orderMetaData, err ? 500 :200);
26+
apiStatus(res, err ? err : orderMetaData, err ? 500 : 200);
2827
})
2928
})
3029

src/api/user.js

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { apiStatus, encryptToken, decryptToken } from '../lib/util';
1+
import { apiStatus, encryptToken, decryptToken, apiError } from '../lib/util';
22
import { Router } from 'express';
33
import PlatformFactory from '../platform/factory';
44
import jwt from 'jwt-simple';
@@ -46,8 +46,7 @@ export default ({config, db}) => {
4646
const validate = ajv.compile(merge(userRegisterSchema, userRegisterSchemaExtension))
4747

4848
if (!validate(req.body)) { // schema validation of upcoming order
49-
console.dir(validate.errors);
50-
apiStatus(res, validate.errors, 200);
49+
apiStatus(res, validate.errors, 400);
5150
return;
5251
}
5352

@@ -56,7 +55,7 @@ export default ({config, db}) => {
5655
userProxy.register(req.body).then((result) => {
5756
apiStatus(res, result, 200);
5857
}).catch(err => {
59-
apiStatus(res, err, 500);
58+
apiError(res, err);
6059
})
6160
})
6261

@@ -74,13 +73,13 @@ export default ({config, db}) => {
7473
userProxy.me(result).then((resultMe) => {
7574
apiStatus(res, result, 200, {refreshToken: encryptToken(jwt.encode(req.body, config.authHashSecret ? config.authHashSecret : config.objHashSecret), config.authHashSecret ? config.authHashSecret : config.objHashSecret)});
7675
}).catch(err => {
77-
apiStatus(res, err, 500);
76+
apiError(res, err);
7877
})
7978
} else {
80-
apiStatus(res, result, 200, {refreshToken: encryptToken(jwt.encode(req.body, config.authHashSecret ? config.authHashSecret : config.objHashSecret), config.authHashSecret ? config.authHashSecret : config.objHashSecret)});
79+
apiStatus(res, result, 200, {refreshToken: encryptToken(jwt.encode(req.body, config.authHashSecret ? config.authHashSecret : config.objHashSecret), config.authHashSecret ? config.authHashSecret : config.objHashSecret)});
8180
}
8281
}).catch(err => {
83-
apiStatus(res, err, 500);
82+
apiError(res, err);
8483
})
8584
});
8685

@@ -103,10 +102,10 @@ export default ({config, db}) => {
103102
userProxy.login(decodedToken).then((result) => {
104103
apiStatus(res, result, 200, {refreshToken: encryptToken(jwt.encode(decodedToken, config.authHashSecret ? config.authHashSecret : config.objHashSecret), config.authHashSecret ? config.authHashSecret : config.objHashSecret)});
105104
}).catch(err => {
106-
apiStatus(res, err, 500);
105+
apiError(res, err);
107106
})
108107
} catch (err) {
109-
return apiStatus(res, err.message, 500);
108+
apiError(res, err);
110109
}
111110
});
112111

@@ -123,7 +122,7 @@ export default ({config, db}) => {
123122
userProxy.resetPassword({ email: req.body.email, template: "email_reset", websiteId: 1 }).then((result) => {
124123
apiStatus(res, result, 200);
125124
}).catch(err=> {
126-
apiStatus(res, err, 500);
125+
apiError(res, err);
127126
})
128127
});
129128

@@ -140,7 +139,7 @@ export default ({config, db}) => {
140139
userProxy.resetPassword({ email: req.body.email, template: "email_reset", websiteId: 1 }).then((result) => {
141140
apiStatus(res, result, 200);
142141
}).catch(err=> {
143-
apiStatus(res, err, 500);
142+
apiError(res, err);
144143
})
145144
});
146145

@@ -153,7 +152,7 @@ export default ({config, db}) => {
153152
addUserGroupToken(config, result)
154153
apiStatus(res, result, 200);
155154
}).catch(err => {
156-
apiStatus(res, err, 500);
155+
apiError(res, err);
157156
})
158157
});
159158

@@ -165,7 +164,7 @@ export default ({config, db}) => {
165164
userProxy.orderHistory(req.query.token).then((result) => {
166165
apiStatus(res, result, 200);
167166
}).catch(err => {
168-
apiStatus(res, err, 500);
167+
apiError(res, err);
169168
})
170169
});
171170

src/lib/util.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ export function apiStatus(res, result = 'OK', code = 200, meta = null) {
4646
return result;
4747
}
4848

49+
50+
/** Creates a api error status Express Response object.
51+
* @param {express.Response} res Express HTTP Response
52+
* @param {number} [code=200] Status code to send on success
53+
* @param {json} [result='OK'] Text message or result information object
54+
*/
55+
export function apiError(res, errorObj, code = 500) {
56+
return apiStatus(res, errorObj.errorMessage ? errorObj.errorMessage : errorObj, errorObj.code ? errorObj.code : 500)
57+
}
58+
4959
export function encryptToken(textToken, secret) {
5060
const cipher = crypto.createCipher(algorithm, secret)
5161
let crypted = cipher.update(textToken, 'utf8', 'hex')

0 commit comments

Comments
 (0)