Skip to content

Commit c60c8d4

Browse files
committed
feat: extract header() for case insensitive header lookup, pass -v to curl if DEBUG
1 parent 8d14877 commit c60c8d4

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

tusc.sh

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ request()
107107
echo > $HEADER
108108
[[ $CREDS ]] && USERPASS="--basic --user '$USER:$PASS' "
109109
[[ $DEBUG ]] && comment "> curl ${USERPASS//:$PASS/}-sSLD $HEADER -H 'Tus-Resumable: 1.0.0' $1"
110-
BODY=$(bash -c "curl $USERPASS-sSLD $HEADER -H 'Tus-Resumable: 1.0.0' $CURLARGS $1") HEADERS=()
110+
[[ $DEBUG ]] && DBG="-v"
111+
BODY=$(bash -c "curl $DBG $USERPASS-sSLD $HEADER -H 'Tus-Resumable: 1.0.0' $CURLARGS $1") HEADERS=()
111112

112113
while IFS=':' read key value; do
113114
if [[ "${key:0:5}" == "HTTP/" ]]; then
@@ -116,8 +117,16 @@ request()
116117
value="${value/ /}" HEADERS[$key]="${value%$'\r'}"
117118
done < <(cat "$HEADER")
118119

119-
if [[ "${HEADERS[Status]}" == "20"* ]]; then ISOK=1; else ISOK=0; fi
120+
if [[ "${HEADERS[Status]}" == "20"* ]]; then ISOK=1 RET=0; else ISOK=0 RET=1; fi
120121
if [[ $ISOK -eq 0 ]] && [[ "$1" != *"--head"* ]]; then error "$BODY" 1; fi
122+
return $RET
123+
}
124+
125+
# http response header
126+
header() {
127+
val=${HEADERS[$1]} low=$(echo $1 | tr '[:upper:]' '[:lower:]')
128+
[[ "" = "$val" ]] && val=${HEADERS[$low]}
129+
echo $val
121130
}
122131

123132
# show spinner and mark its pid
@@ -155,7 +164,7 @@ on-exit()
155164
rm -f $FILE.part $HEADER0 $HEADER
156165
[[ $OFFSET ]] || return 0
157166

158-
OFFSET=${HEADERS[Upload-Offset]:-0} LEFTOVER=$((SIZE - OFFSET))
167+
OFFSET=$(header "Upload-Offset") LEFTOVER=$((SIZE - OFFSET))
159168
if [[ $LEFTOVER -eq 0 ]]; then
160169
ok "✔ Uploaded successfully!"
161170
else
@@ -213,15 +222,16 @@ TUSURL=`tus-config ".[\"$KEY\"].location?"`
213222
[[ $LOCATE ]] && info "URL: $TUSURL" && [[ $TUSURL != "null" ]]; [[ $LOCATE ]] && exit $?
214223
[[ $TUSURL ]] && [[ "null" != "$TUSURL" ]] && request "--head $TUSURL"
215224
225+
FILEPART=$FILE
216226
if [[ "null" != "$TUSURL" ]] && [[ $ISOK -eq 1 ]]; then
217-
OFFSET=${HEADERS[Upload-Offset]} LEFTOVER=$((SIZE - OFFSET))
227+
OFFSET=$(header "Upload-Offset") LEFTOVER=$((SIZE - OFFSET))
218228
[[ $LEFTOVER -eq 0 ]] && exit 0
219-
[[ $DEBUG ]] && comment "> filepart $OFFSET $LEFTOVER $FILE"
220-
spinner && FILEPART=`filepart $OFFSET $LEFTOVER $FILE` && no-spinner
229+
[[ $OFFSET -gt 0 && $DEBUG ]] && comment "> filepart $OFFSET $LEFTOVER $FILE"
230+
[[ $OFFSET -gt 0 ]] && spinner && FILEPART=`filepart $OFFSET $LEFTOVER $FILE` && no-spinner
221231
222232
# create request
223233
else
224-
OFFSET=0 LEFTOVER=$SIZE FILEPART=$FILE
234+
OFFSET=0 LEFTOVER=$SIZE
225235
META="filename $(echo -n $NAME | base64 -w 0)"
226236
[[ $CREDS ]] && META="$META,user $(echo -n $USER | base64 -w 0)"
227237
request "-H 'Upload-Length: $SIZE' \
@@ -231,24 +241,25 @@ else
231241
-X POST $HOST${BASEPATH:-/files/}"
232242
233243
# save location config
234-
TUSURL=${HEADERS[Location]}
244+
TUSURL=$(header "Location")
235245
[[ $TUSURL ]] && tus-config ".[\"$KEY\"].location" "$TUSURL"
236246
fi
237247
248+
# show spinner
249+
spinner
250+
238251
# patch request
239252
request "-H 'Content-Type: application/offset+octet-stream' \
240253
-H 'Content-Length: $LEFTOVER' \
241254
-H 'Upload-Checksum: $CHKSUM' \
242255
-H 'Upload-Offset: $OFFSET' \
243256
-H 'Transfer-Encoding: chunked' \
244257
--upload-file '$FILEPART' \
245-
--request PATCH $TUSURL" &
258+
--request PATCH '$TUSURL'" || error "Request failed" 1
246259
247-
# show spinner
248-
spinner
249260
HEADER0=$HEADER HEADER=`mktemp -t tus.XXXXXXXXXX`
250261
while :; do
251-
[[ ${HEADERS[Upload-Offset]} -eq $SIZE ]] && exit
262+
[[ $(header "Upload-Offset") -eq $SIZE ]] && exit
252263
request "--head $TUSURL" > /dev/null
253-
[[ ${HEADERS[Upload-Offset]} -eq $SIZE ]] || sleep 2
264+
[[ $(header "Upload-Offset") -eq $SIZE ]] || sleep 2
254265
done

0 commit comments

Comments
 (0)