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
9 years ago
1.0.3
9 years ago
1.0.2
9 years ago
1.0.1
9 years ago
1.0.0
9 years ago
0.2.16
9 years ago
0.2.15
9 years ago
0.2.14
9 years ago
0.2.13
9 years ago
0.2.12
9 years ago
0.2.11
9 years ago
0.2.10
9 years ago
0.2.9
9 years ago
0.2.8
9 years ago
0.2.7
9 years ago
0.2.4
9 years ago
0.2.3
9 years ago
0.2.2
9 years ago
0.2.1
9 years ago
0.2.0
9 years ago
0.1.4
9 years ago
0.1.3
9 years ago
0.1.2
9 years ago
0.1.1
9 years ago
0.1.0
9 years ago
0.0.5
9 years ago
0.0.4
9 years ago
0.0.3
9 years ago
0.0.2
9 years ago
0.0.1
9 years ago