1.2.0 • Published 9 years ago
j-resource v1.2.0
j-resource
It is a library like ngResource form angular.js
Use
var Resources = require('j-resource');
var config = {
// it is a config for request lib
query: {
uri: {
hostname: 'my.domain.com',
path: '/user',
port: '80',
protocol: 'http:'
},
method: 'GET'
}
};
var user = new Resources(config);
user
.query()
.then((result) => {
console.log(result);
});
Extend behavior
var Resources = require('j-resource');
Resources.addInterceptor({
request: function(config) {
config = Object.assign({}, config);
var url = config.url;
delete config.url;
config.uri = {
hostname: 'my.domain.com',
path: url,
port: '80',
protocol: 'http:'
};
return config;
}
});
var config = {
// it is a config for request lib
query: {
url: '/user',
method: 'GET'
}
};
var user = new Resources(config);
user
.query()
.then((result) => {
console.log(result);
})
.catch((e) => {
console.log(e);
});
Check response status
var Resources = require('j-resource');
Resources.addInterceptor({
response: function(result) {
switch (result.response.statusCode) {
case (200):
case (201):
case (202):
case (203):
case (204):
return result;
break;
default:
throw result;
}
}
});
var config = {
// it is a config for request lib
query: {
uri: {
hostname: 'my.domain.com',
path: '/user',
port: '80',
protocol: 'http:'
},
method: 'GET'
}
};
var user = new Resources(config);
user
.query()
.then((result) => {
console.log(result);
})
.catch((e) => {
console.log(e);
});
Errors
var Resources = require('j-resource');
Resources.addInterceptor({
responseError: function(error) {
console.log(error);
var defaultData = {
string: 'foo'
};
return defaultData;
}
});
var config = {
// it is a config for request lib
query: {
uri: {
hostname: 'bad.domain.com',
path: '/user',
port: '80',
protocol: 'http:'
},
method: 'GET'
}
};
var user = new Resources(config);
user
.query()
.then((result) => {
console.log(result);
})
.catch((e) => {
console.log(e);
});
Sending data
var Resources = require('j-resource');
var config = {
// it is a config for request lib
add: {
uri: {
hostname: 'my.domain.com',
path: '/user',
port: '80',
protocol: 'http:'
},
method: 'PUT'
}
};
var user = new Resources(config);
user
.add({name: 'Matvei'})
.then((result) => {
console.log(result)
})
Uri params
var Resources = require('j-resource');
Resources.addInterceptor('paramsToUri');
var config = {
// it is a config for request lib
getItem: {
uri: {
hostname: 'localhost',
path: '/user/:name',
port: '80',
protocol: 'http:'
},
method: 'get'
}
};
var user = new Resources(config);
user
.getItem({name: 'Matvei'})
.then((result) => {
console.log(result)
})
Interceptors for one resource
var Resources = require('j-resource');
Resources.addInterceptor('paramsToUri');
var right = new Resources({
check: {
uri: {
hostname: 'right.domain.com',
path: '/:resource/:action',
port: '80',
protocol: 'http:'
}
}
});
var config = {
// it is a config for request lib
add: {
uri: {
hostname: 'my.domain.com',
path: '/user/:name',
port: '80',
protocol: 'http:'
},
method: 'get',
interceptors: [{
request: function(config) {
return right
.check({
resource: 'user',
action: 'get'
})
.then(() => {
return config;
});
}
}]
}
};
var user = new Resources(config);
user
.add({name: 'Matvei'})
.then((result) => {
console.log(result)
})
.catch(() => {
console.log(e);
});
Change transport
By default j-resourse
uses npm module request
but you can change it.
var Resources = require('j-resource');
var myHttpLib = require('my-http-lib');
setTransport.setTransport(function(config) {
return new Promise(function(resolve, reject) {
if (config.type == 'save') {
myHttpLib.post('http://mydomian.com', config.params, cb);
} else if (config.type == 'find') {
myHttpLib.get('http://mydomian.com', config.params, cb);
} else {
cb('There is no type');
}
function cb(err, result) {
if (err) {
reject(err);
} else {
resolve(result);
}
}
});
});
var config = {
addMyModel: {
type: 'save'
},
getMyModel: {
type: 'faind'
}
};
var user = new Resources(config);
user
.addMyModel()
.then((result) => {
console.log(result);
});
1.2.0
9 years ago
1.0.4
10 years ago
1.0.3
10 years ago
1.0.2
10 years ago
1.0.1
10 years ago
1.0.0
10 years ago
0.2.16
10 years ago
0.2.15
10 years ago
0.2.14
10 years ago
0.2.13
10 years ago
0.2.12
10 years ago
0.2.11
10 years ago
0.2.10
10 years ago
0.2.9
10 years ago
0.2.8
10 years ago
0.2.7
10 years ago
0.2.4
10 years ago
0.2.3
10 years ago
0.2.2
10 years ago
0.2.1
10 years ago
0.2.0
10 years ago
0.1.4
10 years ago
0.1.3
10 years ago
0.1.2
10 years ago
0.1.1
10 years ago
0.1.0
10 years ago
0.0.5
10 years ago
0.0.4
10 years ago
0.0.3
10 years ago
0.0.2
10 years ago
0.0.1
10 years ago