shapeways/lib/Shapeways.pm

64 lines
1.2 KiB
Perl

package Shapeways;
use Moose;
use MooseX::ClassAttribute;
use WWW::Mechanize::GZip;
use HTML::TreeBuilder::XPath;
use Data::Dumper;
use JSON::MaybeXS;
use Shapeways::Item;
class_has mech => (
is => 'ro',
lazy => 1,
builder => '_build_mech',
);
class_has base_url => (
is => 'ro',
default => 'https://www.shapeways.com/',
);
class_has config => (
is => 'ro',
lazy => 1,
default => sub {{username => $ARGV[0], password => $ARGV[1]}},
);
sub get_url {
my $self = shift;
my ($url) = @_;
my $res = $self->mech->get($url);
if ($res->is_success) {
my $tree_path = HTML::TreeBuilder::XPath->new_from_content($res->content);
return ($tree_path, 200);
} else {
return (undef, $res->code);
}
}
sub _build_mech {
my $self = shift;
my $mech = WWW::Mechanize::GZip->new();
my $login = $mech->post('https://www.shapeways.com/login/json-shapeways', $self->config); # TODO better config?
my $s = decode_json $login->content;
if ($s->{success}) {
return $mech
} else {
die "login failed";
}
}
sub fetch_user {
}
sub fetch_list { # Do these exist? maybe this is a cart?
}
1;