AnyEvent-ImageShack

 view release on metacpan or  search on metacpan

lib/AnyEvent/ImageShack.pm  view on Meta::CPAN

package AnyEvent::ImageShack;

use strict;
use AnyEvent::HTTP;
use HTTP::Request::Common 'POST';
use base 'Exporter';
our $VERSION = '0.2';

our @EXPORT = qw(image_host);

sub image_host {
	my $file = shift;
	my $cb   = pop;
	my $url = '';
	
	if ($file =~ /^http:\/\//) {
		$url  = $file;
		$file = undef;
	}
	my $opt = ref $_[0] ? $_[0] : { @_ };
	
	$AnyEvent::HTTP::USERAGENT      = $opt->{'user_agent'} || 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16';
	$AnyEvent::HTTP::MAX_PER_HOST ||= $opt->{'max_per_host'};
	$AnyEvent::HTTP::ACTIVE       ||= $opt->{'active'      };
	
	my $p = POST
		'http://www.imageshack.us/upload_api.php',
		Content_Type => 'multipart/form-data',
		Content      => [
			fileupload    => $file ? [ $file ] : [ '' ],
			url           => $url,
			tags          => $opt->{'tags'} || '',
			rembar        => $opt->{'remove_size'} || 1,
			optimage      => 1,
			key           => $opt->{'key'},
			optsize       => $opt->{'size'} || 'resample',
		]
	;
	
	http_post 
		$p->uri,
		$p->content,
		recurse => 0,
		headers => {
			map {
				$_ => $p->header($_)
			} $p->header_field_names
		},
		sub {
			$cb->($_[0] =~ /image_link>([^<>]+)</si);
		}
	;
}


=head1 NAME

AnyEvent::ImageShack - simple non-blocking client for image hosting ImageShack.us

=head1 VERSION

0.2

=head1 SYNOPSIS



( run in 3.057 seconds using v1.01-cache-2.11-cpan-13bb782fe5a )