NAME
Facebook::InstantArticle - Helper class for generating Facebook Instant Articles markup.
DESCRIPTION
Facebook::InstantArticle is a simple helper class for generating Facebook Instant Articles markup.
At the moment it doesn't support all of the features, and both the internal and external API are subject to change in upcoming releases, so use with care.
SYNOPSIS
use Facebook::InstantArticle;
use DateTime;
my $now = DateTime->now,
my $ia = Facebook::InstantArticle->new(
language => 'en',
url => 'http://www.example.com/2016/08/17/some-article',
title => 'Some title',
subtitle => 'Got one?',
kicker => 'Nobody needs a kicker, but...',
published => "$now",
modified => "$now",
auto_ad_placement => 0, # defaults to true
style => 'MyStyleName',
);
$ia->add_author(
name => 'Me Myself',
description => 'A little bit about myself',
);
$ia->add_author(
name => 'Someone Else',
description => 'A little bit about someone else',
);
$ia->add_lead_asset_image(
source => 'http://www.example.com/some_image.png',
caption => 'Nice image, eh?',
);
# or
$ia->add_lead_asset_video(
source => 'http://www.example.com/some_video.mp4',
caption => 'Nice video, eh?',
);
$ia->add_paragraph(
'Will be wrapped in a P element, conversion of inner HTML might be
done, explained later in this documentation.'
);
$ia->add_image(
source => 'http://www.example.com/some_image.png',
caption => 'Nice picture, eh?',
enable_comments => 1, # default false
enable_likes => 1, # default false
);
$ia->add_video(
source => 'http://www.example.com/some_video.mp4',
caption => 'Nice video, eh?',
);
if ( $ia->is_valid ) {
say $ia->to_string;
}
else {
# There's probably something wrong with the Instant Article you
# tried to create.
}
METHODS
add_lead_asset_image
Adds a lead asset image to the article.
$ia->add_lead_asset_image(
source => 'http://www.example.com/lead_image.png',
caption => 'Something wicked this way comes...',
);
add_lead_asset_video
Adds a lead asset video to the article.
$ia->add_lead_asset_video(
source => 'http://www.example.com/lead_video.mp4',
caption => 'Something wicked this way comes...',
);
add_author
Adds an author to the article.
$ia->add_author(
name => 'Oscar Wilde',
);
add_paragraph
Adds a paragraph to the article.
$ia->add_paragraph( 'This is a paragraph' );
add_image
Adds an image to the article.
$ia->add_image(
source => 'http://www.example.com/image.png',
caption => 'Some caption...',
);
add_video
Adds a video to the article.
$ia->add_video(
source => 'http://www.example.com/video.mp4',
caption => 'Some caption...',
);
add_slideshow
Adds a Facebook::InstantArticle::Slideshow object to the article.
my $ss = Facebook::InstantArticle::Slideshow->new;
$ss->add_image(
source => 'http://www.example.com/image_01.png',
caption => 'Image #1',
);
$ss->add_image(
source => 'http://www.example.com/image_02.png',
caption => 'Image #2',
);
$ia->add_slideshow( $ss );
add_credit
Adds a credit to the article.
$ia->add_credit( 'Thanks for helping me write this article, someone!' );
add_copyright
Adds a copyright to the article.
$ia->add_copyright( 'Copyright 2016, Fubar Inc.' );
add_list
Adds a Facebook::InstantArticle::List object to the article.
$ia->add_list(
ordered => 1, # default 0
elements => [ 'Element #1', 'Element #2', 'Element 3' ],
);
add_blockquote
Adds a blockquote to the article.
$ia->add_blockquote( 'This is blockquoted.' );
add_embed
Adds an embed to the article.
$ia->add_embed( 'code' );
add_heading
Adds a heading to the article BODY.
$ia->add_heading(
level => 1,
text => 'Heading',
);
add_map
Adds a map to the article BODY.
$ia->add_map(
latitude => 56.1341342,
longitude => 23.253474,
);
add_analytics
Adds an analytics iframe to the article body.
is_valid
Returns true if the Instant Article _seems_ valid. At the moment this method performs very simple checkes, so don't rely 100% on it.
NOTE: Validation is also performed when you create an IA object, because its constructor requires a lot of attributes, and it will barf if you leave anyone of them out.
to_string
Generates the instant article and returns it as a string.
AUTHOR
Tore Aursand <toreau@gmail.com>
COPYRIGHT
Copyright 2016-2017 – Tore Aursand
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.