diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5008ddf..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index 6f1f0d8..ef5df0f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ node_modules .prettierrc.json .eslintrc.json .nyc_output -coverage/ \ No newline at end of file +coverage/ +.DS_Store \ No newline at end of file diff --git a/documentation/transactions.md b/documentation/transactions.md index c1c4d93..a1c2d6b 100644 --- a/documentation/transactions.md +++ b/documentation/transactions.md @@ -11,7 +11,7 @@ Manage user transactions via any of these methods: 2. [Get transaction fee](#get-transaction-fee) 3. [Resend transaction webhook](#resend-transaction-webhook) 4. [Verify transaction](#verify-transaction) -5. [Verify transaction with reference](#verify-transaction) +5. [Verify transaction with reference](#verify-transaction-with-reference) 6. [Create a transaction refund](#create-a-transaction-refund) 7. [View transaction timeline](#view-transaction-timeline) diff --git a/index.js b/index.js index 19e21ee..938da2a 100644 --- a/index.js +++ b/index.js @@ -7,7 +7,7 @@ const ebills = require('./lib/rave.ebills'); const misc = require('./lib/rave.misc'); const mobile_money = require('./lib/rave.mobile_money'); const security = require('./lib/security'); -// const custom = require("./lib/rave.custom"); +const custom = require('./lib/rave.custom'); const otps = require('./lib/rave.otps'); const payment_plan = require('./lib/rave.payment_plan'); const settlement = require('./lib/rave.settlements'); @@ -34,7 +34,7 @@ const Rave = function (public_key, public_secret, base_url_or_production_flag) { this.Misc = new misc(ravebase); this.MobileMoney = new mobile_money(ravebase); this.security = security; - // this.CustomRequest = new custom(ravebase); + this.CustomRequest = new custom(ravebase); this.Otp = new otps(ravebase); this.PaymentPlan = new payment_plan(ravebase); this.Settlement = new settlement(ravebase); diff --git a/lib/rave.base.js b/lib/rave.base.js index 81d2b34..ec8cbc5 100644 --- a/lib/rave.base.js +++ b/lib/rave.base.js @@ -1,4 +1,3 @@ -var q = require('q'); const querystring = require('querystring'); var RaveUtils = require('../utils/rave.utils'); var Security = require('./security'); @@ -38,10 +37,10 @@ var RaveBase = function (public_key, secret_key, _base_url) { var requestOptions = {}; var requestMethod = RaveUtils.initDefaultValue( payload.method, - 'POST' || 'PUT', + 'POST', ); - var datakey = requestMethod == 'POST' || 'PUT' ? 'body' : 'qs'; - var requestJSON = datakey == 'body' ? true : false; + var datakey = (requestMethod === 'POST' || requestMethod === 'PUT') ? 'body' : 'qs'; + var requestJSON = datakey === 'body'; var includeQueryParams = RaveUtils.initDefaultValue( payload.excludeQuery, false, diff --git a/lib/rave.custom.js b/lib/rave.custom.js index 19a7808..6dfe318 100644 --- a/lib/rave.custom.js +++ b/lib/rave.custom.js @@ -1,11 +1,9 @@ -// var customRequest = require('../services/rave.custom.request'); +var customRequest = require('../services/rave.custom.request'); -// function Custom(RaveBase) { +function Custom(RaveBase) { + this.custom = function (path, data) { + return customRequest(path, data, RaveBase); + }; +} -// this.custom = function (path, data) { - -// return customRequest(path, data, RaveBase); -// } -// } - -// module.exports = Custom; +module.exports = Custom; diff --git a/package.json b/package.json index 7e0671b..7b44145 100644 --- a/package.json +++ b/package.json @@ -23,22 +23,19 @@ "author": "Flutterwave Developers", "license": "MIT", "dependencies": { - "axios": "1.13.3", - "bluebird": "^3.7.2", - "chai-as-promised-also-chain": "^1.0.2", - "eslint-config-prettier": "^8.6.0", "joi": "17.8.3", "md5": "^2.3.0", - "node-forge": "1.3.2", - "q": "^1.5.1", + "node-forge": "^1.3.3", "winston": "^3.8.2" }, "devDependencies": { + "bluebird": "^3.7.2", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "dotenv": "^10.0.0", "eslint": "^8.57.0", "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-prettier": "^8.6.0", "eslint-plugin-import": "^2.27.5", "mocha": "^11.3.0", "nyc": "^15.1.0", @@ -53,10 +50,10 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/Flutterwave/Flutterwave-node-v3.git" + "url": "git+https://github.com/Flutterwave/Node-v3.git" }, "bugs": { - "url": "https://github.com/Flutterwave/Flutterwave-node-v3/issues" + "url": "https://github.com/Flutterwave/Node-v3/issues" }, - "homepage": "https://github.com/Flutterwave/Flutterwave-node-v3#readme" + "homepage": "https://github.com/Flutterwave/Node-v3#readme" } diff --git a/services/charge/rave.voucher.js b/services/charge/rave.voucher.js index e96a0a3..f86ec86 100644 --- a/services/charge/rave.voucher.js +++ b/services/charge/rave.voucher.js @@ -1,63 +1,13 @@ -// const morx = require('morx'); -// const q = require('q'); -// const encrypt = require('./encryp'); -// const axios = require('axios'); -// const package = require('../../package.json'); - -// var spec = morx.spec() -// .build('currency', 'required:true, eg:GBP') -// .build('account_bank', 'required:false') -// .build('amount', 'required:true, eg:10') -// .build('phone_number', 'required:false, eg:08030930236') -// .build('email', 'required:true, eg:debowalefaulkner@gmail.com') -// .build('fullname', 'required:false, eg:lawal garba') -// .build('client_ip', 'required:false, eg:127.0.0.1') -// .build('tx_ref', 'required:false, eg:FLW_y-443342') -// .build('subaccounts', 'required:false') -// .build('meta', 'required:false') -// .build('pin', 'required:true') -// .build('country', 'required:false') -// .build('redirect_url', 'required:false') -// .build('device_fingerprint', 'required:false') -// .build('type', 'required:true eg:ussd') -// .end(); - -// function service(data, _rave) { -// axios.post('https://kgelfdz7mf.execute-api.us-east-1.amazonaws.com/staging/sendevent', { -//  "publicKey": _rave.getPublicKey(), -//  "language": "NodeJs v3", -//  "version": package.version, -//  "title": "Incoming call", -//      "message": "Initiate Voucher payment" -// }) - -// var d = q.defer(); - -// q.fcall(() => { - -// var validated = morx.validate(data, spec, _rave.MORX_DEFAULT, {throw_error:true}); -// var params = validated.params; - -// return (params); - -// }) -// .then(params => { - -// return _rave.request('v3/charges?type=voucher_payment', params) -// }) -// .then(response => { - -// d.resolve(response.body); - -// }) -// .catch(err => { - -// d.reject(err); - -// }) - -// return d.promise; - -// } -// service.morxspc = spec; -// module.exports = service; +const { validator } = require('../../utils/validator'); +const { chargeSchema } = require('../schema/create'); + +async function service(data, _rave) { + validator(chargeSchema, data); + const { body: response } = await _rave.request( + `v3/charges?type=voucher_payment`, + data, + ); + return response; +} + +module.exports = service; diff --git a/services/rave.custom.request.js b/services/rave.custom.request.js index b11b784..e6306ba 100644 --- a/services/rave.custom.request.js +++ b/services/rave.custom.request.js @@ -1,27 +1,10 @@ -// var morx = require('morx'); +async function service(path, data, _rave) { + if (!path) { + throw new Error('A valid path is required for custom requests'); + } -// var q = require('q'); + const { body: response } = await _rave.request(path, data); + return response; +} -// function newRefund(path, data, _rave) { -// var d = q.defer(); - -// q.fcall(() => { -// path = path || 'NO PATH PASSED, PLEASE PASS A VALID PATH'; - -// if (path == 'NO PATH PASSED, PLEASE PASS A VALID PATH') { -// throw path; -// } - -// return _rave.request(path, data); -// }) -// .then((response) => { -// d.resolve(response); -// }) -// .catch((err) => { -// d.reject(err); -// }); - -// return d.promise; -// } - -// module.exports = newRefund; +module.exports = service;