From 15086113f27d6ba6eb1837f54e80a8f267902174 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 16 Jun 2009 18:45:19 -0500 Subject: basic skeleton --- lib/WWW/Unfuddle.pm | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 lib/WWW/Unfuddle.pm diff --git a/lib/WWW/Unfuddle.pm b/lib/WWW/Unfuddle.pm new file mode 100644 index 0000000..26d3717 --- /dev/null +++ b/lib/WWW/Unfuddle.pm @@ -0,0 +1,62 @@ +package WWW::Unfuddle; +use Moose; +use LWP::UserAgent; +use JSON; + +has username => ( + is => 'ro', + isa => 'Str', + required => 1, +); + +has password => ( + is => 'ro', + isa => 'Str', + required => 1, +); + +has subdomain => ( + is => 'ro', + isa => 'Str', + required => 1, +); + +has ua => ( + is => 'ro', + isa => 'LWP::UserAgent', + lazy => 1, + default => sub { + my $self = shift; + my $ua = LWP::UserAgent->new; + $ua->credentials($self->_domain . ':80', 'Unfuddle API', + $self->username, $self->password); + return $ua; + }, +); + +sub _domain { + my $self = shift; + return $self->subdomain . '.unfuddle.com'; +} + +sub _api_url { + my $self = shift; + my @path = @_; + return 'http://' . $self->_domain . '/api/v1/' . join('/', @path) . '.json'; +} + +sub list_projects { + my $self = shift; + my $request = HTTP::Request->new(GET => $self->_api_url('projects')); + $request->header(Accept => 'application/json'); + my $response = $self->ua->request($request); + my $projects = from_json($response->content); + for my $project (@$projects) { + print $project->{short_name}, "\n"; + } +} + +__PACKAGE__->meta->make_immutable; +no Moose; + +1; -- cgit v1.2.3-54-g00ecf