Skip to content
Permalink
98fac7b10a
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
executable file 102 lines (86 sloc) 2.17 KB
#!/bin/bash
# 0x0 - client for 0x0.st
#
# Copyright 2016-2018 Kylie McClain <kylie@somas.is>
# Distributed under the terms of the 0BSD license
me=${0##*/}
host=https://0x0.st
if [[ ! -t 1 ]];then
quiet=true
fi
help() {
cat >&2 <<EOF
Usage: ${me} [-f <file>] [-s <url>] [-u <url>] [file]
Client for interacting with 0x0.st.
If no file is given, upload stdin.
-f <file> - upload <file>
-s <url> - shorten <url>
-u <url> - upload content of <url>
EOF
}
clip() {
if command -v xsel >/dev/null 2>&1;then
printf '%s' "$@" | xsel -b
fi
}
file_upload() {
local curl_opts="-s" file="$1" type
[[ "${progress_quiet}" ]] || curl_opts="-#"
[[ "${quiet}" ]] || printf "uploading \"%s\"...\n" "${file}" >&2
[[ "$#" -gt 1 ]] && printf "%s ... " "${url}"
url=$(curl ${curl_opts} -F "file=@${file}" "${host}")
printf '%s' "${url}"
[ -t 1 ] && printf '\n'
clip "${url}"
}
shorten_url() {
local curl_opts="-s" url="$1" shortened
[[ "${progress_quiet}" ]] || curl_opts="-#"
[[ "${quiet}" ]] || printf "shortening \"${url}\"...\n" >&2
[[ "$#" -gt 1 ]] && printf "%s ... " "${url}"
shortened=$(curl ${curl_opts} -F "shorten=${url}" "${host}")
printf '%s' "${shortened}"
[ -t 1 ] && printf '\n'
clip "${shortened}"
}
upload_url() {
local curl_opts="-s" url="$1" uploaded
[[ "${progress_quiet}" ]] || curl_opts="-#"
[[ "${quiet}" ]] || printf "uploading \"%s\"...\n" "${url}" >&2
[[ "$#" -gt 1 ]] && printf "%s ... " "${url}"
uploaded=$(curl ${curl_opts} -F "url=${url}" "${host}")
printf '%s' "${uploaded}"
[ -t 1 ] && printf '\n'
clip "${uploaded}"
}
# 1KiB = 1024 bytes
# 1MiB = 1024 KiB
# max size - 256MiB
max_size=$(( (1024*1024) * 256 ))
if [[ -f "$1" || "$#" -lt 1 ]];then
mode="default"
else
mode="$1"
shift
fi
case "$mode" in
default)
if [[ "$#" -gt 0 ]];then
file_upload "${@}"
else
cat | quiet=true file_upload "/dev/stdin"
fi
;;
-f)
file_upload "${@}"
;;
-u)
upload_url "${@}"
;;
-s)
shorten_url "${@}"
;;
-h|--help)
help
;;
esac