#!/usr/bin/perl
# Filename:	tinyURL
# Author:	David Ljung Madison <DaveSource.com>
# See License:	http://MarginalHacks.com/License
# Description:	Creates a tinyURL for a given URL
use strict;

##################################################
# Setup the variables
##################################################
my $PROGNAME = $0;
$PROGNAME =~ s|.*/||;

# Pick one
my $GET = "GET -H 'user-agent: Mozilla/5.0'";
my $LYNX = "lynx -source";

my $TINY = 'http://tinyurl.com//create.php?url=';

my $GET_URL = $LYNX;
#my $GET_URL = $GET;

##################################################
# Usage
##################################################
sub usage {
  my $msg;
  foreach $msg (@_) { print "ERROR:  $msg\n"; }
  print "\n";
  print "Usage:\t$PROGNAME [-d] <URL>\n";
  print "\tCreates a tinyURL for a given URL\n";
  print "\t-d\tSet debug mode\n";
  print "\n";
  exit -1;
}

sub parse_args {
  my (@urls);
  my $get = $GET_URL;
  while ($#ARGV>=0) {
    my $arg=shift(@ARGV);
    if ($arg =~ /^-h$/) { usage(); }
    if ($arg =~ /^-d$/) { $MAIN::DEBUG=1; next; }
    if ($arg =~ /^-/) { usage("Unknown option: $arg"); }
    push(@urls,$arg);
  }
  usage("No files/URLs defined") unless @urls;

  @urls;
}

sub tinyURL {
  my ($url) = @_;
  open(URL,"$GET_URL \Q$TINY$url\E |") || usage("Can't run [$GET]");
  while (<URL>) {
    return $1 if m|(http://tinyurl.com/[0-9a-z]+)\b|;
  }
  close URL;
  usage("Couldn't find tinyURL?");
}

##################################################
# Main code
##################################################
sub main {
  my (@urls) = parse_args();

  foreach my $url ( @urls ) {
    my $tiny = tinyURL($url);
    print "$url:\n";
    print "  $tiny\n";
  }
}
main();
