DEV Community

loading...
Cover image for Como integrar webmentions usando laravel.

Como integrar webmentions usando laravel.

abr4xas profile image ángel Originally published at angelcruz.dev ・2 min read

Webmention es una recomendación del W3C que describe un protocolo simple para notificar cualquier URL cuando un sitio web se vincula a él, y para que las páginas web soliciten notificaciones cuando alguien se vincula a ellas. Webmention se desarrolló originalmente en la comunidad IndieWebCamp y se publicó como borrador de trabajo del W3C el 12 de enero de 2016. A partir del 12 de enero de 2017, es una recomendación del W3C. Webmention permite a los autores realizar un seguimiento de quién enlaza, hace referencia o comenta sobre sus artículos. Al incorporar dichos comentarios de otros sitios, los propios sitios proporcionan una funcionalidad de comentarios federados.

Conociendo ya de que trata esto de las webmentions me dediqué a buscar como hacerlo funcionar con laravel y encontré un post de Tom Witkowski donde explica como hizo un componente de blade para gestionar sus webmentions. Les recomiendo que vayan y vean el artículo original para que entiendan lo que hizo Tom y comparen con los cambios que yo hice.

Ok, y que fue lo que cambió?

Bueno, básicamente lo que hice fue guardar en cache la respuesta de los "likes", "comments" y "repost" de la siguiente forma:

$key = 'article_likes_'.$url;

if (config('app.env') != 'local') {
          $this->likes = \Illuminate\Support\Facades\Cache::remember($key, 21600, function () use ($webmentions) {
        return $this->getLikes($webmentions);
    });
}

$key = 'article_reposts_'.$url;

if (config('app.env') != 'local') {
    $this->reposts = \Illuminate\Support\Facades\Cache::remember($key, 21600, function () use ($webmentions) {
        return  $this->getRepost($webmentions);
    });
}

$key = 'article_comments_'.$url;

if (config('app.env') != 'local') {
    $this->comments = \Illuminate\Support\Facades\Cache::remember($key, 21600, function () use ($webmentions) {
        return  $this->getComments($webmentions);
    });
}
Enter fullscreen mode Exit fullscreen mode

Si quieres conocer que otros cambios hice te invito a pasar por mi blog.

Discussion

pic
Editor guide