summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;