2017 © Pedro Peláez
 

library laravel-vk-requester

Laravel package for Vk.com API

image

atehnix/laravel-vk-requester

Laravel package for Vk.com API

  • Wednesday, March 21, 2018
  • by atehnix
  • Repository
  • 7 Watchers
  • 49 Stars
  • 1,031 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 13 Forks
  • 0 Open issues
  • 18 Versions
  • 11 % Grown

The README.md

Laravel VK Requester

GitHub license Packagist Version Packagist Stats, (*1)

Пакет предоставляет удобный способ выполнения запросов к API социальной сети Vk.Сom., (*2)

Запросы выполняются в фоновом режиме, используя систему очередей Laravel. На каждый ответ от API генерируется событие, на которое можно подписаться, обработать/сохранить полученные данные и, при необходимости, добавить новые запросы., (*3)

Благодаря такому подходу можно гибко выстраивать цепочки из нескольких взаимосвязанных запросов, добавляя в очередь "дочерние" запросы при получении ответа от "родительского"., (*4)

Например:

    # Получить группы по списку ID
    - groups.getByIds

            # Для каждой группы получить участников
            - groups.getMembers

                    # Каждого участника добавить себе в друзья
                    - friends.add

            # Для каждой группы получить посты
            - wall.get

                    # Для каждого поста получить комментарии
                    - wall.getComments

А благодаря автоматическому оборачиванию запросов в "execute-запросы" (по 25 в каждом), выполнение происходит в разы быстрее и понижается вероятность превышения лимитов Vk.Com на кол-во и частоту запросов., (*5)

А можно я без очереди? Мне только спросить..

Конечно можно! В состав пакета входит простой и удобный API-клиент - atehnix/vk-client, о возможностях которого можно узнать в его документации., (*6)

Впрочем, можно и вовсе установить только его, если вам не нужны очереди запросов :)., (*7)

А если нужны, то продолжим:, (*8)

Установка

Для установки через Composer, выполнить:
composer require atehnix/laravel-vk-requester
Добавить в массив providers в файле config/app.php:
ATehnix\LaravelVkRequester\VkRequesterServiceProvider::class,
Выполнить:
php artisan vendor:publish --provider="ATehnix\LaravelVkRequester\VkRequesterServiceProvider"
и
php artisan migrate

Внимание! Предполагается, что в вашем Laravel проекте уже настроены очереди и планировщик задач (Cron)., (*9)

Добавление запроса в очередь

<?php
use ATehnix\LaravelVkRequester\Models\VkRequest;

VkRequest::create([
    'method'     => 'wall.get',
    'parameters' => ['owner_id' => 1],
    'token'      => 'some_token',
]);

Раз в минуту (по Cron'у) из таблицы временного хранения все новые запросы переносятся в основную очередь Laravel., (*10)

Для уменьшения кол-ва реальных обращений к API, все запросы будут автоматически обернуты в "execute-запросы" по 25 в каждом., (*11)

Подписка на ответы API

В качестве удобного способа подписки на ответы API рекомендуется использовать классы, наследованные от ATehnix\LaravelVkRequester\Contracts\Subscriber., (*12)

Метод onSuccess($request, $response) будет вызываться при успешном выполнении запроса, а метод onFail($request, $error) при неудачном., (*13)

Пример:

<?php

use ATehnix\LaravelVkRequester\Contracts\Subscriber;
use ATehnix\LaravelVkRequester\Models\VkRequest;

class WallGetSubscriber extends Subscriber
{
    /** @var string  Метод API запроса */
    protected $apiMethod = 'wall.get';

    /** @var string  Тэг запроса */
    protected $tag = 'default';

    public function onSuccess(VkRequest $request, $response)
    {
        foreach ($response['items'] as $item) {
            // do something...
        }
    }

    public function onFail(VkRequest $request, array $error)
    {
        \Log::alert('Request failed!');
    }
}

Все Subscriber'ы необходимо добавить в массив $subscribe провайдера EventServiceProvider., (*14)

<?php

class EventServiceProvider extends ServiceProvider
{
    protected $subscribe = [
        WallGetSubscriber::class,
    ];

    // ...
}

Генерируемые события

Конечно же, слушать ответы API можно и без создания Subscriber'а. Все запросы генерируют события определенного формата, которые вы можете "слушать" как описано в разделе "Events" документации Laravel., (*15)

В случае успешного выполнения, генерируется событие формата:
vk-requester.success: wall.get #default
В случае ошибки выполнения, генерируется событие формата:
vk-requester.fail: wall.get #default

Контекст запросов

По-умолчанию, в имени события присутствует тэг #default. При добавлении запроса вы можете в атрибуте tag указать любое другое значение тега. Тэг позволяет добавить запросам дополнительный "признак", когда требуется отличать их от других запросов с тем же методом., (*16)

Кроме того, через атрибут запроса context можно передать массив с любыми дополнительными данными, которые вы сможете получить при обработке события ($request->context)., (*17)

Где взять API токен?

Перед тем как начать отправлять запросы, необходимо получить API Token. Ниже представлен один из способов его получить., (*18)

Добавьте в config/services.php:
<?php return [
    // ...

    'vkontakte' => [
        'client_id'     => env('VKONTAKTE_KEY'),
        'client_secret' => env('VKONTAKTE_SECRET'),
        'redirect'      => env('VKONTAKTE_REDIRECT_URI'),
    ],
];

В файле .env укажите соответствующие параметры авторизации вашего VK-приложения., (*19)

Пример получения токена
<?php

Route::get('vkauth', function (\ATehnix\VkClient\Auth $auth) {
    echo "<a href='{$auth->getUrl()}'> Войти через VK.Com </a>


"; if (Request::exists('code')) { echo 'Token: '.$auth->getToken(Request::get('code')); } });

Пример демонстрирует лишь сам принцип получения токена. Как и где вы будете его получать и хранить вы решаете сами., (*20)

License

MIT, (*21)

The Versions

21/03 2018

dev-master

9999999-dev

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

21/03 2018

0.8.0

0.8.0.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

20/06 2017

0.7.0

0.7.0.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

03/03 2017

0.6.1

0.6.1.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

03/02 2017

0.6.0

0.6.0.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

01/12 2016

0.5.5

0.5.5.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

10/10 2016

0.5.4

0.5.4.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

10/10 2016

0.5.3

0.5.3.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

26/09 2016

0.5.2

0.5.2.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

24/09 2016

0.5.1

0.5.1.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

20/09 2016

0.5.0

0.5.0.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

10/09 2016

0.3.2

0.3.2.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

10/09 2016

0.4.0

0.4.0.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

22/08 2016

0.3.1

0.3.1.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

18/08 2016

0.3.0

0.3.0.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

11/08 2016

0.2.0

0.2.0.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

01/08 2016

0.1.1

0.1.1.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com

01/08 2016

0.1.0

0.1.0.0

Laravel package for Vk.com API

  Sources   Download

MIT

The Requires

 

laravel api php vkontakte vk queue client vk.com