From 75aa29074f273164a8029d2fd8c963f8de5aea49 Mon Sep 17 00:00:00 2001 From: dakkar Date: Fri, 25 Mar 2011 21:43:42 +0000 Subject: it might even complie --- lib/DeWeave/Storage.pm | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 lib/DeWeave/Storage.pm (limited to 'lib/DeWeave/Storage.pm') diff --git a/lib/DeWeave/Storage.pm b/lib/DeWeave/Storage.pm new file mode 100644 index 0000000..0786b7c --- /dev/null +++ b/lib/DeWeave/Storage.pm @@ -0,0 +1,64 @@ +package DeWeave::Crypto; +use Moose; +use namespace::autoclean; +use MooseX::Types::Moose qw(Str); +use LWP::UserAgent; +use MooseX::Types::URI qw(Uri); +use URI::QueryParam; + +has username => ( + isa => Str, + required => 1, + is => 'ro', +); + +has password => ( + isa => Str, + required => 1, + is => 'ro', +); + +has server_uri => ( + isa => Uri, + coerce => 1, + is => 'ro', + default => 'https://weave.thenautilus.net/', +); + +has _useragent => ( + init_arg => undef, + is => 'ro', + lazy_build => 1, +); + +sub _build__useragent { + my ($self) = @_; + + my $ua = LWP::UserAgent->new(); + $ua->env_proxy; + $ua->credentials($self->server_uri->host_port, + $self->username, + $self->password); + $ua->protocols_allowed(['https']); + + return $ua; +} + +sub get_item { + my ($self,$path) = @_; + + my $relative = sprintf '1.0/%s/storage/%s', + $self->username,$path; + my $uri = URI->new_abs($relative,$self->server_uri); + $uri->query_param(full => 1); + my $response = $self->_useragent->get($uri); + + if ($response->is_success) { + return $response->decoded_content; + } + else { + die $response->status_line; + } +} + +1; -- cgit v1.2.3