summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2017-03-14 17:37:22 +0000
committerdakkar <dakkar@thenautilus.net>2017-03-14 17:37:22 +0000
commita6c1d1c1c3a80660ed67ed744504d6d75638dd4c (patch)
tree8eff12fa7817c76d552e82694c5a6631d97383e8
parentR.I.P. CyanogenMod (diff)
downloadfeeder-a6c1d1c1c3a80660ed67ed744504d6d75638dd4c.tar.gz
feeder-a6c1d1c1c3a80660ed67ed744504d6d75638dd4c.tar.bz2
feeder-a6c1d1c1c3a80660ed67ed744504d6d75638dd4c.zip
role to de-base64 some feeds
-rw-r--r--lib/Feed/Role/UnBase64.pm23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/Feed/Role/UnBase64.pm b/lib/Feed/Role/UnBase64.pm
new file mode 100644
index 0000000..943d066
--- /dev/null
+++ b/lib/Feed/Role/UnBase64.pm
@@ -0,0 +1,23 @@
+package Feed::Role::UnBase64;
+use Moose::Role;
+use 5.012;
+use namespace::autoclean;
+use MIME::Base64;
+use Try::Tiny;
+
+around extract_entries => sub {
+ my ($orig, $self) = @_;
+
+ my $entries = $self->$orig();
+
+ for my $entry (@{ $entries }) {
+ my $html= $entry->content->body;
+ if( $html =~ m{\A[A-Za-z0-9/=-]+\z} ) {
+ try { $entry->content( decode_base64($html) ) };
+ };
+ };
+
+ return $entries;
+};
+
+1;