Hypothesis-API
view release on metacpan or search on metacpan
lib/Hypothesis/API.pm view on Meta::CPAN
if (not exists $payload->{'tags'}) {
$payload_out->{'tags'} = undef;
}
if (not exists $payload->{'target'}) {
$payload_out->{'target'} = undef;
}
my $data = $json->encode($payload_out);
my $h = HTTP::Headers->new;
$h->header(
'content-type' => 'application/json;charset=UTF-8',
'x-csrf-token' => $self->csrf_token,
'X-Annotator-Auth-Token' => $self->token,
);
$self->ua->default_headers( $h );
my $url = URI->new( "${\$self->api_url}/annotations" );
my $response = $self->ua->post( $url, Content => $data );
if ($response->code == 200) {
my $json_content = try_json_decode($response);
if (not $json_content) {
die "Was unable to decode JSON content for id from 'create' call.";
lib/Hypothesis/API.pm view on Meta::CPAN
=cut
sub delete_id {
my ($self, $id) = @_;
if (not defined $id) {
warn "No id given to delete.\n";
return 0;
}
my $h = HTTP::Headers->new;
$h->header(
'content-type' => 'application/json;charset=UTF-8',
'x-csrf-token' => $self->csrf_token,
'X-Annotator-Auth-Token' => $self->token,
);
$self->ua->default_headers( $h );
my $url = URI->new( "${\$self->api_url}/annotations/$id" );
my $response = $self->ua->delete( $url );
my $json_content = 0;
if ($response->code != 500) {
$json_content = try_json_decode($response);
if (not $json_content) {
lib/Hypothesis/API.pm view on Meta::CPAN
my %cookies = CGI::Cookie->parse($cookie_jar->as_string);
if (exists $cookies{'Set-Cookie3: XSRF-TOKEN'}) {
$self->_set_csrf_token($cookies{'Set-Cookie3: XSRF-TOKEN'}->value);
} else {
warn "Login failed: couldn't obtain CSRF token.";
return -1;
}
my $h = HTTP::Headers->new;
$h->header(
'content-type' => 'application/json;charset=UTF-8',
'x-csrf-token' => $self->csrf_token,
);
$self->ua->default_headers( $h );
my $payload = {
username => $self->username,
password => $self->password
};
my $data = $json->encode($payload);
$response = $self->ua->post(
$self->app_url . '?__formid__=login',
lib/Hypothesis/API.pm view on Meta::CPAN
=cut
# FIXME: improve handling of deletions
sub search {
my ($self, $query, $page_size) = @_;
my $h = HTTP::Headers->new;
$h->header(
'content-type' => 'application/json;charset=UTF-8',
'x-csrf-token' => $self->csrf_token,
);
if (not defined $query) {
$query = {};
}
if ( defined $query->{ 'uri' } ) {
$query->{ 'uri' } = $self->uri_encoder->encode(
$query->{ 'uri' }
);
}
lib/Hypothesis/API.pm view on Meta::CPAN
# Note: try to keep the logic here the same as in the search
# function, or possibly remove code duplication.
#
# Start of code duplication:
#
my ($self, $query, $page_size) = @_;
my $h = HTTP::Headers->new;
$h->header(
'content-type' => 'application/json;charset=UTF-8',
'x-csrf-token' => $self->csrf_token,
);
if (not defined $query) {
$query = {};
}
if ( defined $query->{ 'uri' } ) {
$query->{ 'uri' } = $self->uri_encoder->encode(
$query->{ 'uri' }
);
}
lib/Hypothesis/API.pm view on Meta::CPAN
=cut
sub update_id {
my ($self, $id, $payload) = @_;
if (not defined $id) {
die "Can only call update if given an id.";
}
my $data = $json->encode($payload);
my $h = HTTP::Headers->new;
$h->header(
'content-type' => 'application/json;charset=UTF-8',
'x-csrf-token' => $self->csrf_token,
'X-Annotator-Auth-Token' => $self->token,
);
$self->ua->default_headers( $h );
my $url = URI->new( "${\$self->api_url}/annotations/$id" );
my $response = $self->ua->put( $url, Content => $data );
my $json_content = 0;
if ($response->code != 500) {
$json_content = try_json_decode($response);
if (not $json_content) {
( run in 2.797 seconds using v1.01-cache-2.11-cpan-524268b4103 )