The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.010000;
use autodie;
use Furl;
use JSON;
use GDBM_File;
use Digest::SHA1 qw/sha1_hex/;
use Encode;

my $secret = shift;

my $dup_path = '/tmp/dup-cpan-new-lignr.gdbm';

my %dup;
unless ($ENV{DEBUG}) {
    tie %dup, 'GDBM_File', $dup_path, &GDBM_WRCREAT, 0640;
}

my $ua = Furl->new(agent => $0, timeout => 10);
my $res = $ua->get('http://api.metacpan.org/release/_search?sort=date:desc&size=5');
$res->is_success or die;
my $dat = decode_json($res->content);
for my $dist (map { $_->{_source} } @{$dat->{hits}->{hits}}) {
    next if $dup{$dist->{name}}++;

    my $msg = sprintf("%s - %s %s\n", $dist->{name}, $dist->{abstract}, "https://metacpan.org/release/$dist->{author}/$dist->{name}/");
    print $msg;

    unless ($ENV{DEBUG}) {
        my $res = $ua->post('http://lingr.com/api/room/say', [], [
            room => 'perl_jp',
            bot  => 'perl',
            bot_verifier => sha1_hex('perl' . $secret),
            text => encode_utf8($msg),
        ]);
        print $res->status_line . "\n";
        print "\n";
        print $res->content . "\n";
    }
}