#!/usr/local/bin/perl # # $Id: exif.cgi,v 0.1 2009/08/01 06:00:53 dankogai Exp dankogai $ # use strict; use warnings; use LWP::UserAgent; use CGI; use CGI::Carp qw/fatalsToBrowser/; use Image::ExifTool; use JSON::Syck; my $q = CGI->new; my ( $callback, $uri ) = ( $q->path_info =~ m,^/([^/]+)/(.*),o ); $callback or die 'no callback!'; $uri =~ s,^(https?:)/+,$1//,o or die 'invalid scheme: ', $q->escapeHTML($uri); $uri .= '?' . $ENV{QUERY_STRING} if $ENV{QUERY_STRING}; my $res = LWP::UserAgent->new->get($uri); die "$uri ", $res->status_line unless $res->is_success; die "$uri ", $res->headers->header('content-type'), " is not supported" unless $res->headers->header('content-type') =~ m{\Aimage/jpeg}; my $image = $res->content; my $tool = Image::ExifTool->new; my $exif = $tool->ImageInfo( \$image ); $exif->{uri} = $uri; print "Content-Type: application/x-javascript; charset=utf-8\n\n", "$callback(", JSON::Syck::Dump( $exif ), ");\n";