Files
OptionRecorderSchwab/getMarketHours.sh

62 lines
1.4 KiB
Bash
Raw Normal View History

#!/bin/bash
#set -x
set -e
2024-08-27 12:16:01 -05:00
. 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
2024-08-27 12:16:01 -05:00
log "Querying for markets: _${markets}_ query string: _${queryString}_" debug
curl -s -X GET "https://api.schwabapi.com/marketdata/v1/markets${queryString}" \
2024-09-03 10:32:56 -05:00
-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
2024-08-27 12:16:01 -05:00
else
log "${errMsg}" ${ErrorLogLevel}
exit 2
fi
else
jq < ${cacheFileName}
fi