#!/bin/bash #set -x set -e . helpers.sh mkdir -p temp ErrorLogLevel=err #Handle additional commandline parameters if [[ $1 == -* ]]; then if [[ $1 == "-ErrorAsWarning" ]]; then ErrorLogLevel=warning shift fi fi markets="" if [[ ! -z $1 ]]; then markets=$1 shift fi if [[ -z "${markets}" ]]; then markets="equity&markets=option&markets=bond&markets=future&markets=forex" fi cacheFileName=temp/marketHours.`date +%Y%m%d`.${markets//&markets=/_}.tmp if [[ -f ${cacheFileName} ]]; then log "Answering from cache file _${cacheFileName}_ query string: _${queryString}_" debug jq < ${cacheFileName} exit 0 fi queryString="?markets=${markets}" while [[ $# -gt 0 ]]; do queryString="${queryString}&$1=$2" shift; shift done log "Querying for markets: _${markets}_ query string: _${queryString}_" debug curl -s -X GET "https://api.schwabapi.com/marketdata/v1/markets${queryString}" \ -H "Authorization: Bearer $(./getNewAccessToken.sh)" > ${cacheFileName} marketsCheck=$(jq -e -r '.. | .isOpen?' ${cacheFileName} | grep -v null | wc -l) if [[ ${marketsCheck} -eq 0 ]]; then errMsg="ERROR: THE RESPONSE IS INCORRECT! markets: _${markets}_ Check: _${marketsCheck}_ check file _${cacheFileName}_" rm ${cacheFileName} if [[ "${ErrorLogLevel}" == "err" ]]; then throw "${errMsg}" ${ErrorLogLevel} 2 else log "${errMsg}" ${ErrorLogLevel} exit 2 fi else jq < ${cacheFileName} fi