Charl van Niekerk » Blog

Main

Latest

Archives

Powered by Blogger

Tinylink API: Consumer PHP Shell Script

Here is a little script I wrote that consumes the Tinylink REST API.

#!/usr/bin/php
<?php
error_reporting(E_NONE);
$error = false;
foreach ($_SERVER['argv'] as $i => $uri) {
  if ($i) {
    $tinylink = file('http://tinylink.co.za/api/rest.php?url=' . urlencode($uri));
    if ($tinylink) {
      echo "$uri = $tinylink[0]\n";
    } else {
      echo "Error getting Tinylink for $uri\n";
      $error = true;
    }
  }
}
if ($error) {
  exit(1);
}

I can't figure out how to return a "1" to the calling process when there's an error. Any suggestions would be helpful.

I'm switching off error reporting so that the following output doesn't simply appear while you're piping the output from this script into some other script:

Warning: file(http://tinylink.co.za/api/rest.php?url=charlvn.za.net): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
 in /home/charlvn/temp/tinylink.php on line 6

Oh yes, and you probably wanted usage instructions. Here are some examples:

This assuming that you save the above file to somewhere as tinylink, that your CWD is the directory containing the script, and that you made the script executable (like with chmod +x tinylink). Oh yes and naturally you must have the PHP CLI installed and it's at /usr/bin/php (otherwise you'll just have to adjust the script as necessary).

This is a quick hack so not really a "proper" shell script but if you manage to come up with any improvements please comment and let us know! Thanks!

Update: Thanks to Peter Rotich and H* for helping me right seconds after posting. The answer was blatantly obvious: use exit(1)! Please see the updated script.

1 Comments

Comment by Anonymous H* on Tuesday, October 23, 2007 9:12:00 PM

exit(1); /* will do the right thing in PHP >= 4.2.0 (according to the docs) */

Post a Comment

Copyright © 2004-2009 Charl van Niekerk. All articles are released under the Creative Commons Attribution 2.5 South Africa licence, unless where otherwise stated.