import {fetchJsonp} from './fetch';
import moment from 'moment';

export default class SecurityService {
  constructor() {
  }
  getSecurity(ticker) {
    return new Promise((resolve, reject) => {
      fetchJsonp('https://data.benzinga.com/rest/v2/quote?symbols=' + ticker, {
        headers: {'accept': 'application/json'},
        method: 'get'
      })
      .then(resp => resp.json())
      .then(data => resolve(data[ticker]))
      .catch(err => reject(err));
    });
  }
  getFundamentals(ticker) {
    const date = moment().subtract(12, 'months').format('YYYY-MM-DD');
    return new Promise((resolve, reject) => {
      fetchJsonp('https://data.benzinga.com/rest/v3/fundamentals?symbols=' + ticker + '&period=3M' + '&asOf=' + date, {
        headers: {'accept': 'application/json'},
        method: 'get'
      })
      .then(resp => resp.json())
      .then(data => resolve(data.result[0]))
      .catch(err => reject(err));
    });
  }
  getChart(ticker, period = '1d') {
    let interval = '1m';
    let from = period;
    switch (period) {
    case 'Max':
      interval = '1w';
      from = '1900-01-01';
      break;
    case '1y':
    case '2y':
    case '10y':
    case '5y':
      interval = '1w';
      break;
    case 'YTD':
    case '6m':
    case '3m':
      interval = '1d';
      break;
    case '1m':
      interval = '1h';
      break;
    case '5d':
      interval = '5m';
      break;
    case '1d':
    default:
      interval = '1m';
      break;
    }
    return new Promise((resolve, reject) => {
      fetchJsonp('https://data.benzinga.com/rest/v2/chart?symbol=' + ticker + '&from=' + from + '&interval=' + interval, {
        headers: {'accept': 'application/json'},
        method: 'get'
      })
      .then(resp => resp.json())
      .then(data => resolve(data.candles))
      .catch(err => reject(err));
    });
  }
}
