package ActiveResource::Connection;
use common::sense;
use parent qw(Class::Accessor::Lvalue::Fast);
use LWP::UserAgent;
use HTTP::Request;
__PACKAGE__->mk_accessors(qw(site user password));
sub ua {
LWP::UserAgent->new
}
sub url {
my $self = shift;
my $path = shift;
my $user = $self->user;
my $pass = $self->password;
my $url = URI->new($self->site);
if ($user && $pass) {
$url->userinfo("${user}:${pass}");
}
$url->path($path);
return $url;
}
sub get {
my ($self, $path) = @_;
my $url = $self->url($path);
return ua->get($url);
}
sub post {
my ($self, $path, $body) = @_;
my $url = $self->url($path);
my $request = HTTP::Request->new("POST", $url);
$request->header("Content-Type" => "text/xml");
$request->content($body);
return ua->request($request);
}
sub put {
my ($self, $path, $body) = @_;
my $url = $self->url($path);
my $request = HTTP::Request->new("PUT", $url);
$request->header("Content-Type" => "text/xml");
$request->content($body);
return ua->request($request);
}
1;