Skip to content

Commit 366447b

Browse files
author
Shlok Gilda
authored
Merge pull request #63 from ostdotcom/develop
Redemptions API.
2 parents ff54174 + 08fbbab commit 366447b

File tree

11 files changed

+341
-10
lines changed

11 files changed

+341
-10
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ notifications:
1212
on_success: always
1313
on_failure: always
1414
node_js:
15+
- "10"
1516
- "9"
1617
- "8"
17-
- "7"
1818
before_install:
1919
- sudo apt-get update
2020
- sudo apt-get install nodejs

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
[OST Javascript SDK v2.2.3](https://github.com/ostdotcom/ost-sdk-js/tree/v2.2.3)
2+
---
3+
4+
* Added redemptions module to call user redemptions management OST APIs.
5+
* Added redeemable SKUs module to call redeemable SKUs OST APIs.
6+
17
[OST Javascript SDK v2.2.2](https://github.com/ostdotcom/ost-sdk-js/tree/v2.2.2)
28
---
39

README.md

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ The preferred way to install the OST JavaScript SDK is to use the npm package ma
121121
.then(function(res) { console.log(JSON.stringify(res)); })
122122
.catch(function(err) { console.log(JSON.stringify(err)); });
123123
```
124-
124+
125125
### Devices Module
126126

127127
* Initialize Devices service object to perform device specific actions.
@@ -737,3 +737,95 @@ For executing transactions, you need to understand the 4 modules described below
737737
let resp = webhooksService.verifySignature(version, stringifiedData,requestTimestamp, signature, webhookSecret);
738738
console.log(resp);
739739
```
740+
741+
### Redemption Modules
742+
743+
Two modules of redemption, "Redeemable SKUs" and "User Redemptions", are described below.
744+
745+
#### Redeemable SKUs Module
746+
747+
* Initialize Redeemable SKUs service object to perform redeemable skus specific actions.
748+
749+
```js
750+
const redeemableSkusService = ostObj.services.redeemable_skus;
751+
```
752+
* Get Redeemable SKU detail using the redeemable sku id.
753+
754+
```js
755+
// Mandatory API parameters
756+
757+
// Fetch details of following redeemable sku.
758+
let redeemableSkuId = 'c2c__';
759+
760+
redeemableSkusService.get({ redeemable_sku_id: redeemableSkuId })
761+
.then(function(res) { console.log(JSON.stringify(res)); })
762+
.catch(function(err) { console.log(JSON.stringify(err)); });
763+
```
764+
765+
* Get Redeemable SKUs List. Pagination is supported by this API.
766+
767+
```js
768+
// Mandatory API parameters
769+
// NOTE: No mandatory parameters.
770+
771+
// Optional API parameters
772+
773+
// Limit.
774+
let limit = 10;
775+
776+
// Array of redeemable SKU ids.
777+
let redeemableSkuIds = ['1001', '1002'];
778+
779+
// Pagination identifier from the previous API call response. Not needed for page one.
780+
let paginationIdentifier = 'e77y___';
781+
782+
redeemableSkusService.getList({limit: limit, pagination_identifier: paginationIdentifier, redeemable_sku_ids: redeemableSkuIds })
783+
.then(function(res) { console.log(JSON.stringify(res)); })
784+
.catch(function(err) { console.log(JSON.stringify(err)); });
785+
```
786+
787+
#### User Redemptions Module
788+
789+
* Initialize Redemptions service object to perform user redemption specific actions.
790+
791+
```js
792+
const redemptionsService = ostObj.services.redemptions;
793+
```
794+
795+
* Get User redemption details using the userId and redemptionId.
796+
797+
```js
798+
// Mandatory API parameters
799+
800+
// UserId of user for whom redemption details needs to be fetched.
801+
let userId = 'c2c__';
802+
803+
// Unique identifier of the redemption of user.
804+
let redemptionId = 'c2c__';
805+
806+
redemptionsService.get({ user_id: userId, redemption_id: redemptionId })
807+
.then(function(res) { console.log(JSON.stringify(res)); })
808+
.catch(function(err) { console.log(JSON.stringify(err)); });
809+
```
810+
811+
* Get User Redemptions List. Pagination is supported by this API.
812+
813+
```js
814+
// Mandatory API parameters
815+
let userId = 'c2c__';
816+
817+
// Optional API parameters
818+
819+
// Limit.
820+
let limit = 10;
821+
822+
// Array of user redemption uuids.
823+
let redemptionIds = ['a743___', 'a743___'];
824+
825+
// Pagination identifier from the previous API call response. Not needed for page one.
826+
let paginationIdentifier = 'e77y___';
827+
828+
redemptionsService.getList({ user_id: userId, limit: limit, pagination_identifier: paginationIdentifier, redemption_ids: redemptionIds })
829+
.then(function(res) { console.log(JSON.stringify(res)); })
830+
.catch(function(err) { console.log(JSON.stringify(err)); });
831+
```

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.2.2
1+
2.2.3

lib/validate.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,40 @@ ValidateKlass.prototype = {
7171
}
7272
},
7373

74+
/**
75+
* Get redeemable sku id from params.
76+
*
77+
* @param {object} params
78+
* @param {string} params.redeemable_sku_id
79+
*/
80+
getRedeemableSkuId: function (params) {
81+
const oThis = this;
82+
if (oThis.isValid(params.redeemable_sku_id)) {
83+
var redeemableSkuId = params.redeemable_sku_id;
84+
delete params.redeemable_sku_id;
85+
return redeemableSkuId
86+
} else {
87+
throw new Error('redeemable_sku_id missing or invalid in request params');
88+
}
89+
},
90+
91+
/**
92+
* Get redemption uid from params.
93+
*
94+
* @param {object} params
95+
* @param {string} params.redemption_id
96+
*/
97+
getRedemptionId: function (params) {
98+
const oThis = this;
99+
if (oThis.isValid(params.redemption_id)) {
100+
let redemption_id = params.redemption_id;
101+
delete params.redemption_id;
102+
return redemption_id
103+
} else {
104+
throw new Error('redemption_id missing or invalid in request params.');
105+
}
106+
},
107+
74108

75109
/**
76110
* Get webhook id from params.
@@ -170,4 +204,4 @@ ValidateKlass.prototype = {
170204

171205
};
172206

173-
module.exports = new ValidateKlass();
207+
module.exports = new ValidateKlass();

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ostdotcom/ost-sdk-js",
3-
"version": "2.2.2",
3+
"version": "2.2.3",
44
"description": "OST Platform SDK for JavaScript.",
55
"main": "index.js",
66
"scripts": {

services/manifest.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ const rootPrefix = ".."
2121
, transactionsKlass = require(rootPrefix + '/services/transactions')
2222
, baseTokensKlass = require(rootPrefix + '/services/base_tokens')
2323
, webhooksKlass = require(rootPrefix + '/services/webhooks')
24+
, redemptionsKlass = require(rootPrefix + '/services/redemptions')
25+
, redeemableSkusKlass = require(rootPrefix + '/services/redeemable_skus')
2426
;
2527

2628
// hide request object
@@ -51,6 +53,8 @@ const manifest = function (params) {
5153
oThis.transactions = new transactionsKlass(_requestObj);
5254
oThis.base_tokens = new baseTokensKlass(_requestObj);
5355
oThis.webhooks = new webhooksKlass(_requestObj);
56+
oThis.redemptions = new redemptionsKlass(_requestObj);
57+
oThis.redeemable_skus = new redeemableSkusKlass(_requestObj);
5458

5559
return oThis;
5660
};
@@ -81,7 +85,11 @@ manifest.prototype = {
8185

8286
base_tokens: null,
8387

84-
webhooks: null
88+
webhooks: null,
89+
90+
redemptions: null,
91+
92+
redeemable_skus: null,
8593
};
8694

87-
module.exports = manifest;
95+
module.exports = manifest;

services/redeemable_skus.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
"use strict";
2+
3+
/**
4+
* Redeemable SKUs Service
5+
*
6+
* @module services/redeemable_skus
7+
*/
8+
9+
const rootPrefix = ".."
10+
, validate = require(rootPrefix + '/lib/validate')
11+
;
12+
13+
// hide request object
14+
var _requestObj = null;
15+
16+
/**
17+
* Redeemable SKUs Service constructor.
18+
*
19+
* @constructor
20+
*/
21+
const redeemable_skus = function (requestObj) {
22+
const oThis = this;
23+
24+
// Assign request object.
25+
_requestObj = requestObj;
26+
27+
// Define the url prefix.
28+
oThis.urlPrefix = '/redeemable-skus';
29+
30+
return oThis;
31+
};
32+
33+
redeemable_skus.prototype = {
34+
/**
35+
* Get redeemable skus list.
36+
*
37+
* @param {object} params
38+
*
39+
* @returns {*}
40+
*/
41+
getList: function(params) {
42+
const oThis = this;
43+
44+
params = params || {};
45+
46+
return _requestObj.get(oThis.urlPrefix, params);
47+
},
48+
49+
/**
50+
* Get redeemable sku by redeemable sku id.
51+
*
52+
* @param {object} params
53+
*
54+
* @returns {*}
55+
*/
56+
get: function(params) {
57+
const oThis = this;
58+
59+
params = params || {};
60+
61+
return _requestObj.get(oThis.urlPrefix + "/" + validate.getRedeemableSkuId(params), params);
62+
}
63+
64+
};
65+
66+
module.exports = redeemable_skus;

services/redemptions.js

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
"use strict";
2+
3+
/**
4+
* Redemptions Service
5+
*
6+
* @module services/redemptions
7+
*/
8+
9+
const rootPrefix = ".."
10+
, validate = require(rootPrefix + '/lib/validate')
11+
;
12+
13+
// hide request object
14+
var _requestObj = null;
15+
16+
/**
17+
* Redemptions Service constructor
18+
*
19+
* @constructor
20+
*/
21+
const redemptions = function (requestObj) {
22+
const oThis = this;
23+
24+
// Assign request object
25+
_requestObj = requestObj;
26+
27+
// Define the url prefix
28+
oThis.urlPrefix = '/users';
29+
oThis.redemptionsUrlPrefix = '/redemptions';
30+
31+
return oThis;
32+
};
33+
34+
redemptions.prototype = {
35+
/**
36+
* Get user redemptions list.
37+
*
38+
* @param {object} params
39+
*
40+
* @returns {*}
41+
*/
42+
getList: function(params) {
43+
const oThis = this;
44+
45+
params = params || {};
46+
47+
return _requestObj.get(oThis.urlPrefix + "/" + validate.getUserId(params) + oThis.redemptionsUrlPrefix, params);
48+
},
49+
50+
/**
51+
* Get user redemption by redemption id.
52+
*
53+
* @param {object} params
54+
*
55+
* @returns {*}
56+
*/
57+
get: function(params) {
58+
const oThis = this;
59+
60+
params = params || {};
61+
62+
return _requestObj.get(oThis.urlPrefix + "/" + validate.getUserId(params) + oThis.redemptionsUrlPrefix + '/' + validate.getRedemptionId(params), params);
63+
}
64+
65+
};
66+
67+
module.exports = redemptions;

services/users.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const users = function (requestObj) {
2626

2727
// Define the url prefix
2828
oThis.urlPrefix = '/users';
29+
oThis.redemptionsUrlPrefix = '/redemptions';
2930

3031
return oThis;
3132
};
@@ -72,7 +73,6 @@ users.prototype = {
7273

7374
return _requestObj.get(oThis.urlPrefix + "/" + validate.getUserId(params), params);
7475
}
75-
7676
};
7777

7878
module.exports = users;

0 commit comments

Comments
 (0)