csblogs/feed-downloader

View on GitHub
src/http/request.js

Summary

Maintainability
A
0 mins
Test Coverage
import request from 'request';
import check from 'check-types';
import log from '../log';
import getLastModifiedDate from './get-last-modified-date';

export default function httpRequest(uri) {
  return new Promise((resolve, reject) => {
    request({
      uri,
      timeout: process.env.CSBLOGS_HTTP_TIMEOUT,
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
      }
    }, (error, response, data) => {
      if (!check.nonEmptyString(uri)) {
        reject(new Error('Valid URI required'));
      }

      if (error) {
        log.error({ uri, error },
                  'HTTP Request for resource resulted in error');
        reject(new Error('HTTP request unsuccessful'));
      } else if ((response.statusCode !== 200)) {
        log.info({ uri, response }, 'HTTP Request returned non-success status code');
        reject(new Error('Non-success status code'));
      } else {
        const lastModifiedDateTime = getLastModifiedDate(response.headers);
        resolve({ lastModified: lastModifiedDateTime, data });
      }
    });
  });
}