Helical Alpha Code

turl: command-line tinyurl.com client


#!/bin/sh
#####################
#
# name: turl (turl.sh)
# vers: 0.5a
# date: 051806
# first: 040806
# auth: "Keith Beckman" <kbeckm@alphahelical.com>
# site: http://alphahelical.com/code/scripts/turl
# desc: turl reads a fully-qualified url from stdin or as an argument,
# and queries the tinyurl server, returning a tinyurl. It also exports
# input and output urls in $turl_input and $turl_output.
#
# todo: test mode verifying proper turl-ing
#
#####################

####configuration####

verstring='turl v0.5a 051806 Keith Beckman'
default_agent='curl'
ua_string='turl(http://alphahelical.com/code?turl)/0.4a'

##end configuration##

turl_usage () {
 echo "Usage: turl -[a user_agent|h|v] | [url]
 turl (a tinyurl.com client) reads a URL and makes it tiny.
 URL may be given via stdin or at the command-line. No validity-
 checking of URLs is performed. Default user-agent may be edited
 in the configuration portion of this script.

 -a|--agent [curl|lynx|links|wget] Select user-agent (default: curl)
 -v|--version displays the version string
 -h|--help displays this help text
 
 Note: If you don't have any of the supported user-agents, 'telnet'
 is available as an alternative, and may be selected or set as default."

 }

turl_telnet_ua () {
 length=$(echo ${#1})

 expect <<-EOF
 set timeout 20

 spawn telnet tinyurl.com 80

 expect "Escape character is '^]'."

# send "POST /create.php HTTP/1.0\nHost: tinyurl.com\nUser-Agent: $ua_string-telnet\nContent-Type: application/x-www-form-urlencoded\nContent-length: $length\n\n$1\n\n"

 send "GET /create.php?$1 HTTP/1.0\nHost: tinyurl.com\nUser-Agent: $ua_string-telnet\n\n"

 expect "type=\"hidden\"\ name=\"tinyurl\""

 EOF
 }

case $1 in
 '--usage'|'--help'|'-h') #display helptext
  turl_usage
  exit
  ;;
 '--version'|'-v') #version string
  echo $verstring
  exit
  ;;
 '-a'|'--agent') #select user-agent
  if [[ $2 == 'curl' || $2 == 'lynx' || \
   $2 == 'wget' || $2 == 'links' || $2 == 'telnet' ]]; then
   user_agent=$2
  fi
  ;;
 esac

if [ $3 ]; then
 big_url="$3"
elif [ $1 ]; then
 big_url="$1" # Read url from command line if present.
else
 big_url="$(cat)" # Otherwise, grab from stdin
fi

if [ "$user_agent" == '' ]; then
 user_agent=$default_agent
fi


turl_fetch () {
 case $1 in
 'curl')
#  curl -sA $ua_string-cURL http://tinyurl.com/create.php --data url="$big_url"
  curl -sA $ua_string-cURL http://tinyurl.com/create.php?url="$big_url"
  ;;
 'lynx')
#  echo "url=$big_url" | lynx --source --useragent=$ua_string-Lynx http://tinyurl.com/create.php \
#-post_data
  lynx --source --useragent=$ua_string-Lynx http://tinyurl.com/create.php?url="$big_url"
  ;;
 'wget')
#  wget -qO /dev/stdout -U $ua_string-wget http://tinyurl.com/create.php \
#--post-data="url\=$big_url"
  wget -qO /dev/stdout -U $ua_string-wget http://tinyurl.com/create.php?url="$big_url"
  ;;
 'links')
  links -source http://tinyurl.com/create.php?url="$big_url"
  ;;
 'telnet')
  turl_telnet_ua "url=$big_url"
  ;;
 esac
 }

turl_fetch $user_agent | grep type=hidden\ name=tinyurl | cut -d \" -f 2

Generated by GNU enscript 1.6.1 and enscriptclean.

turl | Download Source | View Source