Data-OpenGraph
view release on metacpan or search on metacpan
lib/Data/OpenGraph.pm view on Meta::CPAN
package Data::OpenGraph;
use strict;
use Carp ();
use Data::OpenGraph::Parser;
use constant +{
HAVE_LWP => eval { require LWP::UserAgent } && !$@ ? 1 : 0,
};
our $VERSION = '0.01';
sub new {
my ($class, %args) = @_;
bless { %args }, $class;
}
sub property {
my ($self, $name) = @_;
return $self->{properties}->{$name};
}
sub parse_uri {
my ($class, $uri) = @_;
if (HAVE_LWP) {
my $ua = LWP::UserAgent->new();
my $res = $ua->get( $uri );
if (! $res->is_success) {
Carp::croak( "Failed to get $uri: " . $res->status_line);
}
return $class->parse_string( $res->decoded_content );
} else {
Carp::croak( "No applicable UserAgent (such as LWP::UserAgent) found" );
}
}
sub parse_string {
my ($class, $string) = @_;
my $properties = Data::OpenGraph::Parser->new()->parse_string( $string );
Data::OpenGraph->new( properties => \%$properties );
}
1;
__END__
=head1 NAME
Data::OpenGraph - Parse OpenGraph Contents
=head1 SYNOPSIS
use Data::OpenGraph;
my $og = Data::OpenGraph->parse_uri( "http://some.content/with/opengraph.html" );
my $ua = LWP::UserAgent->new();
my $res = $ua->get( "http://some.content/with/opengraph.html" );
my $og = Data::OpenGraph->parse_uri( $res->decoded_content );
my $title = $og->property( "title" );
my $type = $og->property( "type" );
=head1 DESCRIPTION
WARNINGS: ALPHA CODE! Probably very incomplete. Please send pull-reqs if you would like this module to be better
Data::OpenGraph is a simple Opengraph ( http://ogp.me ) parser. It just parses some HTML looking for meta tags with property attribute that looks like "og:.+".
Currently nested attributes such as "audio:title", "audio:artist" are store verbatim, so you need to access them like:
$og->property( "audio:title" );
$og->property( "audio:artist" );
=head1 METHODS
=head2 Data::OpenGraph->new(properties => \%properties)
Creates a new OpenGraph container. You probably won't be using this much.
=head2 Data::OpenGraph->parse_string( $string )
Creates a new OpenGraph container by parsing $string.
=head2 Data::OpenGraph->parse_uri( $uri )
Fetches the uri, then creates a new OpenGraph container by parsing the content. On HTTP errors, this method will croak.
=head1 SEE ALSO
L<RDF::RDFa::Parser>
=head1 AUTHOR
Daisuke Maki C<< <daisuke@endeworks.jp> >>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2011 by Daisuke Maki
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.0 or,
at your option, any later version of Perl 5 you may have available.
=cut
( run in 2.056 seconds using v1.01-cache-2.11-cpan-e1769b4cff6 )