summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-01-24 11:25:03 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-01-24 11:25:03 -0700
commite004630d1e55006a4d8bce8dfea0658274f69d1b (patch)
tree4c3f050a4d2d352e7d583118a3d4f5afa95ab815
parent57384462f932628c66793f9ea5b13f98fd75035b (diff)
downloadmailscripts-e004630d1e55006a4d8bce8dfea0658274f69d1b.tar.gz
gmi2email: factor out send_subscribed_gemtext
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
-rwxr-xr-xgmi2email69
1 files changed, 37 insertions, 32 deletions
diff --git a/gmi2email b/gmi2email
index 1b04883..714e58a 100755
--- a/gmi2email
+++ b/gmi2email
@@ -114,42 +114,47 @@ foreach my $sub (<$subs_fh>) {
chomp($gemlog = $');
} elsif (my ($uri, $y, $m, $d, $title)
= /^=>\s*(\S+)\s+([0-9]{4})-([0-9]{2})-([0-9]{2})[\s-]*(.*)/) {
- my ($rows)
- = $dbh->selectrow_array(
- "SELECT COUNT(*) FROM seen WHERE uri = \"$uri\"");
- next unless $rows == 0;
- my $mail = 1;
- my ($type, $data);
- #<<<
- try {
- ($type, $data) = gemini_fetch($uri, abs_links => 1);
- } catch {
- warn "when fetching $uri, $_";
- my ($code) = /"gemini error: ([1-6])/;
- if ($code == 4) {
- next; # try again next run
- } else {
- $mail = 0; # don't try this one again
- }
- };
- #>>>
- $dbh->do("INSERT INTO seen VALUES (\"$uri\")");
- $mail and !$no_mail or next;
- if ($type =~ m{^text/gemini}) {
- gemtext_to_mail(
- $data, %to_mail_opts,
- gemlog => $gemlog // "unknown gemlog",
- link_title => $title,
- date => email_date timelocal 0,
- 0, 12, $d, $m - 1, $y
- )->send;
- } else {
- warn "$uri is not gemtext";
- }
+ send_subscribed_gemtext($uri, $gemlog // "unknown gemlog",
+ $title, timelocal 0, 0, 12, $d, $m - 1, $y);
}
}
}
+sub send_subscribed_gemtext {
+ my ($uri, $gemlog, $link_title, $feed_date) = @_;
+ my ($rows)
+ = $dbh->selectrow_array(
+ "SELECT COUNT(*) FROM seen WHERE uri = \"$uri\"");
+ next unless $rows == 0;
+ my $mail = 1;
+ my ($type, $data);
+ #<<<
+ try {
+ ($type, $data) = gemini_fetch($uri, abs_links => 1);
+ } catch {
+ warn "when fetching $uri, $_";
+ my ($code) = /"gemini error: ([1-6])/;
+ if ($code == 4) {
+ return; # try again next run
+ } else {
+ $mail = 0; # don't try this one again
+ }
+ };
+ #>>>
+ $dbh->do("INSERT INTO seen VALUES (\"$uri\")");
+ $mail and !$no_mail or return;
+ if ($type =~ m{^text/gemini}) {
+ gemtext_to_mail(
+ $data, %to_mail_opts,
+ gemlog => $gemlog // "unknown gemlog",
+ link_title => $link_title,
+ date => email_date $feed_date
+ )->send;
+ } else {
+ warn "$uri is not gemtext";
+ }
+}
+
sub gemini_fetch {
my ($uri, %opts) = @_;