#!/usr/bin/perl -w
use strict;

use Bookmarks;
use LWP::UserAgent;
use Text::CSV;
use Getopt::Long;

GetOptions(
    'csv' => \my $CSV,
    'timeout=i' => \my $TIMEOUT,
);

my $DBFILE = shift or die "Usage: $0 <dbfile>";

$TIMEOUT ||= 10;

my $bookmarks = Bookmarks->new({
    dbname => $DBFILE,
});

my $ua = LWP::UserAgent->new;
$ua->timeout($TIMEOUT);

my $csv = Text::CSV->new;

for my $bookmark (@{ $bookmarks->search->results }) {
    printf "%3d %s\n", $bookmark->id, $bookmark->uri unless $CSV;
    my $response = $ua->head($bookmark->uri);
    printf "   -> %s\n", $response->status_line unless $CSV;
    $csv->combine(
        $bookmark->id,
        $bookmark->uri,
        $response->code,
        $response->message,
    );
    print $csv->string . "\n" if $CSV;
}
