Initial commit
This commit is contained in:
Executable
+80
@@ -0,0 +1,80 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Disclaimer:
|
||||
# We are not actively maintaining this script. We can't assure it will work, but we'll do our best to keep it updated.
|
||||
# Credits:
|
||||
# Original author: https://gist.github.com/lbosque/5876697
|
||||
# Contributors:
|
||||
# https://gist.github.com/andrewxhill/5884845 Mac-compatible version
|
||||
# https://gist.github.com/kentr / http://maplight.org/ new uuid format bugfix + email notification
|
||||
|
||||
CDB_USER=$1
|
||||
API_KEY=$2
|
||||
IMPORT_FILE=$3
|
||||
NOTIFICATION_EMAIL=$4
|
||||
PROTOCOL=https
|
||||
DEBUG=true
|
||||
ITEM_ID_REGEX='\"([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\"'
|
||||
|
||||
if [[ -z $CDB_USER ]]
|
||||
then
|
||||
echo "Missing user"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -z $API_KEY ]]
|
||||
then
|
||||
echo "Missing api key"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -z $IMPORT_FILE ]]
|
||||
then
|
||||
echo "Missing file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function log {
|
||||
if [[ ${DEBUG} == true ]]
|
||||
then
|
||||
echo $1
|
||||
fi
|
||||
}
|
||||
|
||||
v1=$(uname)
|
||||
|
||||
log "Sending file '${IMPORT_FILE}'"
|
||||
|
||||
if [[ "$v1" = Darwin ]];
|
||||
then
|
||||
job_id=`curl -s -F file=@${IMPORT_FILE} "${PROTOCOL}://${CDB_USER}.carto.com/api/v1/imports/?api_key=${API_KEY}" | sed -E "s/\{\"item_queue_id\":${ITEM_ID_REGEX}.*/\1/"`
|
||||
else
|
||||
job_id=`curl -s -F file=@${IMPORT_FILE} "${PROTOCOL}://${CDB_USER}.carto.com/api/v1/imports/?api_key=${API_KEY}" | sed -r "s/\{\"item_queue_id\":${ITEM_ID_REGEX}.*/\1/"`
|
||||
fi
|
||||
|
||||
log "Waiting for job '${job_id}' to be completed"
|
||||
|
||||
while true
|
||||
do
|
||||
if [[ "$v1" = Darwin ]];
|
||||
then
|
||||
status=`curl -s "${PROTOCOL}://${CDB_USER}.carto.com/api/v1/imports/${job_id}?api_key=${API_KEY}" | sed -E 's/(.*)\"state\":\"([a-z]+)\"(.*)/\2/'`
|
||||
else
|
||||
status=`curl -s "${PROTOCOL}://${CDB_USER}.carto.com/api/v1/imports/${job_id}?api_key=${API_KEY}" | sed -r 's/(.*)\"state\":\"([a-z]+)\"(.*)/\2/'`
|
||||
fi
|
||||
log "JOB '${job_id}' STATE: ${status}"
|
||||
|
||||
if [[ -n $NOTIFICATION_EMAIL ]]
|
||||
then
|
||||
log "${PROTOCOL}://${CDB_USER}.carto.com" | mail -s "CartoDB import finished: ${IMPORT_FILE}" "${NOTIFICATION_EMAIL}"
|
||||
fi
|
||||
|
||||
if [[ $status == 'complete' ]]
|
||||
then
|
||||
log "Import successful"
|
||||
exit 0
|
||||
elif [[ $status == 'failure' ]]
|
||||
then
|
||||
log "Failed import"
|
||||
exit 1
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
Reference in New Issue
Block a user