summaryrefslogtreecommitdiff
path: root/lib/DeWeave/Storage.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/DeWeave/Storage.pm')
-rw-r--r--lib/DeWeave/Storage.pm64
1 files changed, 64 insertions, 0 deletions
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;