Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Network{
- constructor(defs){
- this._httpMethods = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'];
- this._defs = {
- 'GET': {},
- 'POST': {},
- 'OPTIONS': {},
- 'DELETE': {},
- 'PUT': {},
- 'ALL': defs || {}
- };
- this._request = reqwest;
- this._headers = {
- 'GET': {},
- 'POST': {},
- 'PUT': {},
- 'DELETE': {},
- 'ALL': {}
- };
- this._transforms = {
- 'GET' : [],
- 'POST' : [],
- 'PUT' : [],
- 'DELETE': [],
- 'ALL' : []
- };
- this._filters = {
- 'GET' : [],
- 'POST' : [],
- 'PUT' : [],
- 'DELETE': [],
- 'ALL' : []
- };
- }
- setHeader(method, headers){
- method = method || 'ALL';
- for(var key in headers){
- this._headers[method][key] = headers[key];
- }
- }
- setOption(key, value, method){
- method = method || 'ALL';
- for(var key in headers){
- this._defs[method][key] = value;
- }
- }
- createRequest(options){
- // Makes a fully qualified request.. adds callback etc etc blah blah
- options['method'] = options['method'] || 'GET';
- if( this._httpMethods.indexOf(options['method']) ){
- throw new Error('Unknown HTTP method');
- }
- options['headers'] = options['headers'] || {};
- // Perform various transformations
- transforms = _.flatten(this._transforms['ALL'], this._transforms[method] );
- options = this._transforms[method].reduce((options, transform) => {
- return transform(options);
- }, options);
- // Add options... this can be used to encorporate
- // Default headers aswell
- _.assign(options, this._defs['ALL']);
- _.assign(options, this._defs[options['method']]);
- // No transforms for now.
- options['headers'] = _.assign(options['headers'], this._headers['ALL']);
- options['headers'] = _.assign(options['headers'], this._headers[options['method']]);
- // Just simple
- var request = this._request;
- var callbacks = _.flatten(this._filters['ALL'], this._filters['method']);
- var r = request(options);
- // Just Incredible
- return callbacks.reduce((prev, curr) => {
- return prev.then.apply(prev, curr);
- }, r);
- }
- registerFilter(method, filter){
- method = method || 'ALL';
- if( ! Array.isArray( filter )){
- filter = [filter];
- }
- this._filters[method].push(filter);
- }
- get( url, data ){
- return this.createRequest({
- method : 'GET',
- url : url,
- data : data
- });
- }
- post(url, data){
- return this.createRequest({
- url : url,
- data : data,
- method : 'POST',
- });
- }
- put(url, data){
- return this.createRequest({
- url : url,
- data : data,
- method : 'POST'
- });
- }
- delete(url, data){
- return this.createRequest({
- url : url,
- data : data
- });
- }
- }
- export default Network;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement