Bluesky-Poster
view release on metacpan or search on metacpan
lib/Bluesky/Poster.pm view on Meta::CPAN
'https://bsky.social/xrpc/com.atproto.server.createSession',
'Content-Type' => 'application/json',
Content => $self->{json}->encode({
identifier => $self->{identifier},
password => $self->{password},
}),
);
unless ($res->is_success) {
if(my $logger = $self->{'logger'}) {
$logger->error('Login failed: ', $res->status_line, "\n", $res->decoded_content());
}
croak('Login failed: ', $res->status_line, "\n", $res->decoded_content());
}
$self->{session} = $self->{json}->decode($res->decoded_content);
}
=head2 post($text)
Posts the given text to your Bluesky feed.
=cut
sub post {
my $self = shift;
lib/Bluesky/Poster.pm view on Meta::CPAN
my $res = $self->{agent}->post(
'https://bsky.social/xrpc/com.atproto.repo.createRecord',
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $self->{session}{accessJwt},
Content => $self->{json}->encode($payload),
);
unless ($res->is_success) {
if(my $logger = $self->{'logger'}) {
$logger->error('Post failed: ' . $res->status_line . "\n" . $res->decoded_content());
}
croak('Post failed: ', $res->status_line, "\n", $res->decoded_content());
}
return $self->{json}->decode($res->decoded_content);
}
sub _iso8601 {
my $t = $_[0];
my @gmt = gmtime($t);
return sprintf(
"%04d-%02d-%02dT%02d:%02d:%02dZ",
$gmt[5]+1900, $gmt[4]+1, $gmt[3],
$gmt[2], $gmt[1], $gmt[0],
( run in 0.295 second using v1.01-cache-2.11-cpan-e9daa2b36ef )