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 )