LinkEmbedder
view release on metacpan or search on metacpan
examples/embedder.pl view on Meta::CPAN
#!/usr/bin/env perl
use Mojolicious::Lite;
use lib 'lib';
use LinkEmbedder;
# These pastebin provides expire
$ENV{TEST_FEDORA} ||= 'TdDtYw1YSaEDqIOqVYlWbw';
$ENV{TEST_PERLBOT} ||= 'xogtbq';
$ENV{TEST_SHADOWCAT} ||= '586840';
helper embedder => sub { state $e = LinkEmbedder->new };
get '/' => 'index';
get '/oembed' => sub {
my $c = shift;
my $url = $c->param('url');
if ($c->stash('restricted') and !grep { $_ eq $url } @{$c->stash('predefined')}) {
return $c->render(json => {error => "LINK_EMBEDDER_RESTRICTED is set."});
}
$c->embedder->serve($c);
};
app->defaults(
restricted => $ENV{LINK_EMBEDDER_RESTRICTED} ? 1 : 0,
predefined => [
"https://xkcd.com/927",
"https://catoverflow.com/cats/r4cIt4z.gif",
"https://www.ted.com/talks/jill_bolte_taylor_s_powerful_stroke_of_insight",
"https://imgur.com/gallery/ohL3e",
"https://www.aftenposten.no",
"https://www.instagram.com/p/BSRYg_Sgbqe/",
"http://ix.io",
"http://ix.io/fpW",
"https://catoverflow.com/",
"https://open.spotify.com/artist/4HV7yKF3SRpY6I0gxu7hm9",
"https://gist.github.com/jhthorsen/3738de6f44f180a29bbb",
"https://whereby.com/link-embedder-demo",
"https://github.com/jhthorsen/linkembedder/blob/master/t/basic.t",
"https://metacpan.org/pod/Mojolicious",
"https://pastebin.com/V5gZTzhy",
"https://paste.fedoraproject.org/paste/$ENV{TEST_FEDORA}",
"https://perlbot.pl/p/$ENV{TEST_PERLBOT}",
"https://paste.opensuse.org/2931429",
"https://twitter.com",
"https://www.youtube.com/watch?v=OspRE1xnLjE",
"https://twitter.com/jhthorsen/status/786688349536972802",
"https://vimeo.com/154038415",
"http://paste.scsys.co.uk/$ENV{TEST_SHADOWCAT}",
"https://travis-ci.org/Nordaaker/convos/builds/47421379",
"https://git.io/aKhMuA",
"https://www.aftenposten.no/kultur/Kunstig-intelligens-ma-ikke-lenger-trenes-av-mennesker-617794b.html",
"spotify:track:0aBi2bHHOf3ZmVjt3x00wv",
"https://www.nhl.com/video/top-10-of-2018-19-ovechkin/t-277350912/c-68680503",
"https://youtu.be/v4Ijkq6Myfc",
]
);
$ENV{X_REQUEST_BASE} and hook before_dispatch => sub {
my $c = shift;
return unless my $base = $c->req->headers->header('X-Request-Base');
$c->req->url->base(Mojo::URL->new($base));
};
app->start;
__DATA__
@@ index.html.ep
<!DOCTYPE html>
<html>
<head>
<title>oEmbed example server</title>
%= stylesheet 'https://cdnjs.cloudflare.com/ajax/libs/pure/0.6.2/pure-min.css'
<style>
.container { max-width: 40rem; margin: 3rem auto; }
a { color: #0078e7; }
ol.predefined { display: none; }
pre.data { color: #999; margin-top: 3rem; padding-top: 1rem; border-top: 1px solid #ddd; }
[name="url"] { width: 100%; }
.le-card {
overflow: hidden;
border: 1px solid #ccc;
border-radius: 5px;
padding: 1rem;
( run in 3.845 seconds using v1.01-cache-2.11-cpan-71847e10f99 )