All files manage_headers.js

95.65% Statements 22/23
100% Branches 2/2
91.67% Functions 11/12
95.65% Lines 22/23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59      4x 2x 2x 1x   1x   2x       7x   7x   3x 3x     1x     1x     1x   1x       1x       1x   6x         1x 1x       1x 2x         7x    
import {clone, isArray, reject} from 'lodash';
// _.reject = require('lodash/reject');
 
const addHeaders = (headers, token)=>{
  headers = clone(headers);
  if (isArray(token)){
    headers = headers.concat(token);
  } else {
    headers.push(token);
  }
  return headers;
};
 
export default function(){
  let headers = [];
 
  const obj = {
    add: function(token){
      headers = addHeaders(headers, token);
      return obj;
    }
    , addDelete: function(){
      headers = addHeaders(headers
        , {header: 'X-Http-Method-Override', value: 'delete'}
      );
      return obj;
    }
    , addCSRF: function(token){
      headers = addHeaders(headers, {header: 'X-CSRF-Token', value: token});
 
      return obj;
    }
    , addRails: function(){
      /* eslint-disable max-len */
      headers = addHeaders(headers, [
        {header: 'Content-type', value: 'application/json'}
        , {header: 'accept', value: '*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'}]);
      /* eslint-enable */
      return obj;
    }
    , all: ()=>headers
    , clear: function(){
      headers = [];
    }
    , remove: function(header){
      headers = reject(headers, (h)=>{
        return h.header === header;
      });
    }
    , set: function(xhr){
      headers.forEach(function(h){
        xhr.setRequestHeader(h.header, h.value);
      });
    }
  };
 
  return obj;
};