Skip to content

Commit 5306f91

Browse files
author
Juan Rossi
committed
Initial commit
0 parents  commit 5306f91

File tree

19 files changed

+1213
-0
lines changed

19 files changed

+1213
-0
lines changed

Readme.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
## Usage
2+
3+
### Import the library and set your secret API key:
4+
```
5+
var mango = require('mango')({ 'api_key': 'your Mango secret API key'});
6+
```
7+
8+
### Create a charge
9+
In order to create a Charge, you must call the `create()` method with [the required arguments](https://developers.getmango.com/en/api/charges/?platform=node#arguments).
10+
11+
```
12+
mango.Charges.create({
13+
'token': 'token_mwhushs06o62aruq9n3pmvu7f0ia696y',
14+
'amount': 2000,
15+
'email': '[email protected]'
16+
}, function(err, charge) {
17+
console.log(charge);
18+
});
19+
```
20+
21+
### Get single charge
22+
When you have a charge `uid`, you can get a full detail using the `get()` method:
23+
```
24+
mango.Charges.get('charge_1234123141231', function(err, charge) {
25+
console.log(charge);
26+
});
27+
```
28+
29+
You can also work with all the other resources authenticated with a secret API Key:
30+
- [Charges](https://developers.getmango.com/en/api/charges/?platform=node)
31+
- [Refunds](https://developers.getmango.com/en/api/refunds/?platform=node)
32+
- [Customers](https://developers.getmango.com/en/api/customers/?platform=node)
33+
- [Cards](https://developers.getmango.com/en/api/cards/?platform=node)
34+
- [Queue](https://developers.getmango.com/en/api/queue/?platform=node)
35+
- [Installments](https://developers.getmango.com/en/api/installments/?platform=node)
36+
37+
## Tests
38+
39+
Install the module along with the dev dependencies.
40+
```
41+
$ git clone git://github.com/mango/mango-node.git
42+
$ cd mango-node
43+
$ npm install
44+
```
45+
46+
To run the tests you'll need Mango API keys (mode Sandbox):
47+
```
48+
export MANGO_SECRET_TEST_KEY='your secret test API key'
49+
export MANGO_PUBLIC_TEST_KEY='your public test API Key'
50+
```
51+
52+
### Run the tests
53+
```
54+
$ npm test
55+
```
56+
57+
### Run code coverage
58+
```
59+
$ npm run coverage
60+
```
61+
62+
## Liecense
63+
Licensed under the MIT license.
64+
65+
Copyright (c) 2014 Mango.

examples/list_charges.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
/**
3+
* Module dependencies
4+
*/
5+
6+
var mango = require('../')({ 'api_key': process.env.MANGO_SECRET_TEST_KEY });
7+
8+
/**
9+
* List charges
10+
*/
11+
mango.Charges.list(function(err, charges){
12+
if(err) {
13+
console.error(err); // Handle error
14+
} else {
15+
console.log(charges); // Response
16+
}
17+
});

lib/index.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
'use strict';
2+
3+
/**
4+
* Module dependencies
5+
*/
6+
7+
var debug = require('debug')('mango:api');
8+
9+
/**
10+
* Resources
11+
*/
12+
13+
var Customers = require('./resources/customers');
14+
var Cards = require('./resources/cards');
15+
var Charges = require('./resources/charges');
16+
var Refunds = require('./resources/refunds');
17+
var Queue = require('./resources/queue');
18+
var Installments = require('./resources/installments');
19+
20+
/**
21+
* Expose constructor
22+
*/
23+
24+
module.exports = Mango;
25+
26+
/**
27+
* Mango constructor
28+
*
29+
* @param {String} api_key
30+
* @return {Mango} API client instance
31+
* @api public
32+
*/
33+
34+
function Mango(options) {
35+
if(!(this instanceof Mango)) {
36+
return new Mango(options);
37+
}
38+
39+
/* istanbul ignore next */
40+
if('string' != typeof options.api_key) {
41+
throw new Error('Please provide a valid api_key');
42+
}
43+
44+
this._api_key = options.api_key;
45+
this.Customers = new Customers(this);
46+
this.Cards = new Cards(this);
47+
this.Charges = new Charges(this);
48+
this.Refunds = new Refunds(this);
49+
this.Queue = new Queue(this);
50+
this.Installments = new Installments(this);
51+
52+
debug('Client intialized');
53+
}

lib/resources/cards.js

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
2+
/**
3+
* Module dependencies
4+
*/
5+
6+
var util = require('util');
7+
var Resource = require('./');
8+
9+
/**
10+
* Expose constructor
11+
*/
12+
13+
module.exports = Cards;
14+
15+
/**
16+
* Cards constructor
17+
*/
18+
19+
function Cards(mango) {
20+
Resource.call(this, mango);
21+
}
22+
23+
util.inherits(Cards, Resource);
24+
25+
/**
26+
* Get card
27+
*
28+
* @param {String} uid
29+
* @param {Function} callback
30+
* @api public
31+
*/
32+
33+
Cards.prototype.get = function(uid, fn) {
34+
return this.request('get', '/cards/' + uid + '/', fn);
35+
};
36+
37+
/**
38+
* List cards
39+
*
40+
* @param {Object} options
41+
* @param {Function} callback
42+
* @api public
43+
*/
44+
45+
Cards.prototype.list = function(options, fn) {
46+
return this.request('get', '/cards/', options, fn);
47+
};
48+
49+
/**
50+
* Create card
51+
*
52+
* @param {Object} options
53+
* @param {Function} callback
54+
* @api public
55+
*/
56+
57+
Cards.prototype.create = function(options, fn) {
58+
return this.request('post', '/cards/', options, fn);
59+
};
60+
61+
/**
62+
* Update card
63+
*
64+
* @param {string} uid
65+
* @param {object} options
66+
* @param {function} callback
67+
* @api public
68+
*/
69+
70+
Cards.prototype.update = function(uid, options, fn) {
71+
return this.request('patch', '/cards/' + uid + '/', options, fn);
72+
};
73+
74+
/**
75+
* Delete card
76+
*
77+
* @param {string} uid
78+
* @param {function} callback
79+
* @api public
80+
*/
81+
82+
Cards.prototype.del = function(uid, fn) {
83+
return this.request('delete', '/cards/' + uid + '/', fn);
84+
};

lib/resources/charges.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
2+
/**
3+
* Module dependencies
4+
*/
5+
6+
var util = require('util');
7+
var Resource = require('./');
8+
9+
/**
10+
* Expose constructor
11+
*/
12+
13+
module.exports = Charges;
14+
15+
/**
16+
* Charges constructor
17+
*/
18+
19+
function Charges(mango) {
20+
Resource.call(this, mango);
21+
}
22+
23+
util.inherits(Charges, Resource);
24+
25+
/**
26+
* Get charge
27+
*
28+
* @param {String} uid
29+
* @param {Function} callback
30+
* @api public
31+
*/
32+
33+
Charges.prototype.get = function(uid, fn) {
34+
return this.request('get', '/charges/' + uid + '/', fn);
35+
};
36+
37+
/**
38+
* List charges
39+
*
40+
* @param {Object} options
41+
* @param {Function} callback
42+
* @api public
43+
*/
44+
45+
Charges.prototype.list = function(options, fn) {
46+
return this.request('get', '/charges/', options, fn);
47+
};
48+
49+
/**
50+
* Create charge
51+
*
52+
* @param {Object} options
53+
* @param {Function} callback
54+
* @api public
55+
*/
56+
57+
Charges.prototype.create = function(options, fn) {
58+
return this.request('post', '/charges/', options, fn);
59+
};

lib/resources/customers.js

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
2+
/**
3+
* Module dependencies
4+
*/
5+
6+
var util = require('util');
7+
var Resource = require('./');
8+
9+
/**
10+
* Expose constructor
11+
*/
12+
13+
module.exports = Customers;
14+
15+
/**
16+
* Customers constructor
17+
*/
18+
19+
function Customers(mango) {
20+
Resource.call(this, mango);
21+
}
22+
23+
util.inherits(Customers, Resource);
24+
25+
/**
26+
* Get customer
27+
*
28+
* @param {String} uid
29+
* @param {Function} callback
30+
* @api public
31+
*/
32+
33+
Customers.prototype.get = function(uid, fn) {
34+
return this.request('get', '/customers/' + uid + '/', fn);
35+
};
36+
37+
/**
38+
* List customers
39+
*
40+
* @param {Object} options
41+
* @param {Function} callback
42+
* @api public
43+
*/
44+
45+
Customers.prototype.list = function(options, fn) {
46+
return this.request('get', '/customers/', options, fn);
47+
};
48+
49+
/**
50+
* Create customer
51+
*
52+
* @param {Object} options
53+
* @param {Function} callback
54+
* @api public
55+
*/
56+
57+
Customers.prototype.create = function(options, fn) {
58+
return this.request('post', '/customers/', options, fn);
59+
};
60+
61+
/**
62+
* Update customer
63+
*
64+
* @param {string} uid
65+
* @param {object} options
66+
* @param {function} callback
67+
* @api public
68+
*/
69+
70+
Customers.prototype.update = function(uid, options, fn) {
71+
return this.request('patch', '/customers/' + uid + '/', options, fn);
72+
};
73+
74+
/**
75+
* Delete customer
76+
*
77+
* @param {string} uid
78+
* @param {function} callback
79+
* @api public
80+
*/
81+
82+
Customers.prototype.del = function(uid, fn) {
83+
return this.request('delete', '/customers/' + uid + '/', fn);
84+
};

0 commit comments

Comments
 (0)