LinkEmbedder - Embed / expand oEmbed resources and other URL / links
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;
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.
$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 = $self->ua;
Holds a Mojo::UserAgent object.
$hash_ref = $self->url_to_link;
Holds a mapping between host names and link class to use.
$self = $self->get_p($url, sub { my ($self, $link) = @_ });
Same as "get_p", but takes a callback instead of returning a Mojo::Promise.
$promise = $self->get_p($url)->then(sub { my $link = shift });
Used to construct a new LinkEmbedder::Link object and retrieve information about the URL.
$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.
Note that in Mojolicious 9.11 and later, you must define the format for your route to serve with extension .html, .json or .jsonp.
Jan Henning Thorsen
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.