@@ -107,7 +107,8 @@ request()
107
107
echo > $HEADER
108
108
[[ $CREDS ]] && USERPASS=" --basic --user '$USER :$PASS ' "
109
109
[[ $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=()
111
112
112
113
while IFS=' :' read key value; do
113
114
if [[ " ${key: 0: 5} " == " HTTP/" ]]; then
@@ -116,8 +117,16 @@ request()
116
117
value=" ${value/ / } " HEADERS[$key ]=" ${value% $' \r ' } "
117
118
done < <( cat " $HEADER " )
118
119
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
120
121
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
121
130
}
122
131
123
132
# show spinner and mark its pid
@@ -155,7 +164,7 @@ on-exit()
155
164
rm -f $FILE .part $HEADER0 $HEADER
156
165
[[ $OFFSET ]] || return 0
157
166
158
- OFFSET=${HEADERS[ Upload-Offset] :- 0} LEFTOVER=$(( SIZE - OFFSET))
167
+ OFFSET=$( header " Upload-Offset" ) LEFTOVER=$(( SIZE - OFFSET))
159
168
if [[ $LEFTOVER -eq 0 ]]; then
160
169
ok " ✔ Uploaded successfully!"
161
170
else
@@ -213,15 +222,16 @@ TUSURL=`tus-config ".[\"$KEY\"].location?"`
213
222
[[ $LOCATE ]] && info " URL: $TUSURL " && [[ $TUSURL != " null" ]]; [[ $LOCATE ]] && exit $?
214
223
[[ $TUSURL ]] && [[ " null" != " $TUSURL " ]] && request " --head $TUSURL "
215
224
225
+ FILEPART=$FILE
216
226
if [[ " null" != " $TUSURL " ]] && [[ $ISOK -eq 1 ]]; then
217
- OFFSET=${HEADERS[ Upload-Offset]} LEFTOVER=$(( SIZE - OFFSET))
227
+ OFFSET=$( header " Upload-Offset" ) LEFTOVER=$(( SIZE - OFFSET))
218
228
[[ $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
221
231
222
232
# create request
223
233
else
224
- OFFSET=0 LEFTOVER=$SIZE FILEPART= $FILE
234
+ OFFSET=0 LEFTOVER=$SIZE
225
235
META=" filename $( echo -n $NAME | base64 -w 0) "
226
236
[[ $CREDS ]] && META=" $META ,user $( echo -n $USER | base64 -w 0) "
227
237
request " -H 'Upload-Length: $SIZE ' \
@@ -231,24 +241,25 @@ else
231
241
-X POST $HOST ${BASEPATH:-/ files/ } "
232
242
233
243
# save location config
234
- TUSURL=${HEADERS[ Location]}
244
+ TUSURL=$( header " Location" )
235
245
[[ $TUSURL ]] && tus-config " .[\" $KEY \" ].location" " $TUSURL "
236
246
fi
237
247
248
+ # show spinner
249
+ spinner
250
+
238
251
# patch request
239
252
request " -H 'Content-Type: application/offset+octet-stream' \
240
253
-H 'Content-Length: $LEFTOVER ' \
241
254
-H 'Upload-Checksum: $CHKSUM ' \
242
255
-H 'Upload-Offset: $OFFSET ' \
243
256
-H 'Transfer-Encoding: chunked' \
244
257
--upload-file '$FILEPART ' \
245
- --request PATCH $TUSURL " &
258
+ --request PATCH ' $TUSURL ' " || error " Request failed " 1
246
259
247
- # show spinner
248
- spinner
249
260
HEADER0=$HEADER HEADER=` mktemp -t tus.XXXXXXXXXX`
250
261
while : ; do
251
- [[ ${HEADERS[ Upload-Offset]} -eq $SIZE ]] && exit
262
+ [[ $( header " Upload-Offset" ) -eq $SIZE ]] && exit
252
263
request " --head $TUSURL " > /dev/null
253
- [[ ${HEADERS[ Upload-Offset]} -eq $SIZE ]] || sleep 2
264
+ [[ $( header " Upload-Offset" ) -eq $SIZE ]] || sleep 2
254
265
done
0 commit comments