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 )