NAME
LinkEmbedder - Embed / expand oEmbed resources and other URL / links
SYNOPSIS
use LinkEmbedder;
my $embedder = LinkEmbedder->new(force_secure => 1);
# In some cases, you have to set a proper user_agent to get complete
# pages. This is done automatically by $embedder->serve()
$embedder->ua->transactor->name("Mozilla...");
$embedder->get_p("https://xkcd.com/927")->then(sub {
my $link = shift;
print $link->html;
})->wait;
DESCRIPTION
LinkEmbedder is a module that can expand an URL into a rich HTML snippet or simply to extract information about the URL.
This module replaces Mojolicious::Plugin::LinkEmbedder.
Go to https://thorsen.pm/linkembedder to see a demo of how it works.
These web pages are currently supported:
-
Instagram need some additional JavaScript. Please look at https://github.com/jhthorsen/linkembedder/blob/master/examples/embedder.pl and https://www.instagram.com/developer/embedding/ for more information.
-
Twitter need some additional JavaScript. Please look at https://github.com/jhthorsen/linkembedder/blob/master/examples/embedder.pl and https://dev.twitter.com/web/javascript/initialization for more information.
HTML
Any web page will be parsed, and "og:", "twitter:", meta tags and other significant elements will be used to generate a oEmbed response.
Images
URLs that looks like an image is automatically converted into an img tag.
Video
URLs that looks like a video resource is automatically converted into a video tag.
ATTRIBUTES
force_secure
$bool = $self->force_secure;
$self = $self->force_secure(1);
This attribute will translate any unknown http link to https.
This attribute is EXPERIMENTAL. Feeback appreciated.
ua
$ua = $self->ua;
Holds a Mojo::UserAgent object.
url_to_link
$hash_ref = $self->url_to_link;
Holds a mapping between host names and link class to use.
METHODS
get
$self = $self->get_p($url, sub { my ($self, $link) = @_ });
Same as "get_p", but takes a callback instead of returning a Mojo::Promise.
get_p
$promise = $self->get_p($url)->then(sub { my $link = shift });
Used to construct a new LinkEmbedder::Link object and retrieve information about the URL.
serve
$self = $self->serve(Mojolicious::Controller->new, $url);
Used as a helper for Mojolicious web applications to reply to an oEmbed request. Will also set "name" in Mojo::UserAgent::Transactor for "ua" if the incoming request contains a "User-Agent" header.
AUTHOR
Jan Henning Thorsen
COPYRIGHT AND LICENSE
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.