Как узнать кто залайкал Perl дистрибутив на metacpan?

Задача

На metacpan можно лайкать дистрбутивы. Вот, например, у моего дистрибутива Test::Whitespaces есть 2 лайка:

Лайки на metacpan

Мне стало интересно узнать кто поставил эти лайки. На сайте metacpan такой информации нет (update: после написания поста эта информация появлиась, подробности в конце поста), но есть API через которое наверняка можно это сделать.

Первый подход к решению

Сходу задачу решить не удалось. У API есть документация, есть какие-то модули, есть чудесный сайт explorer.metacpan.org, но как все это использовать совершенно не ясно.

В начале документации есть ссылка на доклад Olaf Alders про API, я решил посмотреть этот доклад чтобы разобраться как использовать API.

Доклад оказался очень интересным (и после него мне удалось решить мою задачу), я записал тезисы из этого доклада.

Конспект доклада

Доклад Олафа Алдерса (Olaf Alders) "(Ab)using the MetaCPAN API for Fun and Profit".

Связь типов

PS В докладе упоминался модуль MetaCPAN::API, но сейчас он уже depreated и рекомендуется использовать вместо него MetaCPAN::Client.

Второй подход к решению

После просмотра доклада у меня появилось достаточно данных для того чтобы решить мою задачу и получить список пользователь кто залайкал мой дистрибутив.

Скрипт с решением

Вот вывод скрипта:

# Who likes 'Test-Whitespaces'?

 * DOHERTY
 * ???

Скрипт сначала запрашивает Metacpan API "а покажи-ка мне id всех пользователей кто залайкл дистрибутив" с помощью отправки запроса на ручку "/v0/favorite". Получаем ответ. В отвече куча шума который дает elasticsearch, но есть данные о id пользователей: "user": "faLMeoWDRjSethSZIGNB_A" и "user": "6wlW4wIgQW6QK_-YU0uxFw".

А дальше скрипт для каждого полученного id пользователя выясняет что это за пользователь. Запрос на ручку "/v0/author" и ответ.

Почему-то не у для всех id пользователей соответстует находится запись в type author, если скрипт не находит данных, то выдает "???".

Update 2014-05-14

Это очень смешно, но через несколько дней после написания этого поста на сайте metacpan.org появилась возможность просматривать кто залайкал твой дистрибутив.

Вот серия комитов, которые добавили эту фичу.

Вот информация о лайках моего модуля Test::Whitespaces:

Лайки Perl модуля Test::Whitespaces

Иван Бессарабов
ivan@bessarabov.ru

10 мая 2014

Edit this post on GitHub