-# TODO:
-# Rewrite this by either using tinyurl.com's API
-# or using another shortening service to comply with
-# tinyurl.com's policy.
-#
-# Create small urls via http://tinyurl.com using wget(1).
-#function zurl() {
-# emulate -L zsh
-# [[ -z $1 ]] && { print "USAGE: zurl <URL>" ; return 1 }
-#
-# local PN url tiny grabber search result preview
-# PN=$0
-# url=$1
-## Check existence of given URL with the help of ping(1).
-## N.B. ping(1) only works without an eventual given protocol.
-# ping -c 1 ${${url#(ftp|http)://}%%/*} >& /dev/null || \
-# read -q "?Given host ${${url#http://*/}%/*} is not reachable by pinging. Proceed anyway? [y|n] "
-#
-# if (( $? == 0 )) ; then
-## Prepend 'http://' to given URL where necessary for later output.
-# [[ ${url} != http(s|)://* ]] && url='http://'${url}
-# tiny='http://tinyurl.com/create.php?url='
-# if check_com -c wget ; then
-# grabber='wget -O- -o/dev/null'
-# else
-# print "wget is not available, but mandatory for ${PN}. Aborting."
-# fi
-## Looking for i.e.`copy('http://tinyurl.com/7efkze')' in TinyURL's HTML code.
-# search='copy\(?http://tinyurl.com/[[:alnum:]]##*'
-# result=${(M)${${${(f)"$(${=grabber} ${tiny}${url})"}[(fr)${search}*]}//[()\';]/}%%http:*}
-## TinyURL provides the rather new feature preview for more confidence. <http://tinyurl.com/preview.php>
-# preview='http://preview.'${result#http://}
-#
-# printf '%s\n\n' "${PN} - Shrinking long URLs via webservice TinyURL <http://tinyurl.com>."
-# printf '%s\t%s\n\n' 'Given URL:' ${url}
-# printf '%s\t%s\n\t\t%s\n' 'TinyURL:' ${result} ${preview}
-# else
-# return 1
-# fi
-#}
+# Create small urls via http://goo.gl using curl(1).
+# API reference: https://code.google.com/apis/urlshortener/
+function zurl() {
+ emulate -L zsh
+ if [[ -z $1 ]]; then
+ print "USAGE: zurl <URL>"
+ return 1
+ fi
+
+ local PN url prog api json data
+ PN=$0
+ url=$1
+
+ # Prepend 'http://' to given URL where necessary for later output.
+ if [[ ${url} != http(s|)://* ]]; then
+ url='http://'${url}
+ fi
+
+ if check_com -c curl; then
+ prog=curl
+ else
+ print "curl is not available, but mandatory for ${PN}. Aborting."
+ return 1
+ fi
+ api='https://www.googleapis.com/urlshortener/v1/url'
+ contenttype="Content-Type: application/json"
+ json="{\"longUrl\": \"${url}\"}"
+ data=$($prog --silent -H ${contenttype} -d ${json} $api)
+ # Match against a regex and print it
+ if [[ $data =~ '"id": "(http://goo.gl/[[:alnum:]]+)"' ]]; then
+ print $match;
+ fi
+}