JSON-RPC клиент для Голоса на PHP: php-graphene-node-client v1.0.0 [опен сорс, первый релиз]


Код доступен на Github или packagist под MIT лицензией. Автор @t3ran13

Установка через Composer

composer require t3ran13/php-graphene-node-client

Использование

<?php

use GrapheneNodeClient\Commands\GetTrendingCategoriesCommand;
use GrapheneNodeClient\Connectors\WebSocket\GolosWSConnector;

$command GetTrendingCategoriesCommand(new GolosWSConnector());

$trendingTags >execute(
[
"", //'after'
2 //'limit'
]
);
// вернет
// [
// "id" => 2,
// "result" => [
// [
// "name" => "ru--zhiznx",
// "total_payouts": "410233.942 GBG",
// ...
// ],
// ...
// ]
// ]

$trendingTags = $command->execute(
[
"", //'after'
2 //'limit'
],
'result',
GolosWSConnector::ANSWER_FORMAT_ARRAY // or GolosWSConnector::ANSWER_FORMAT_OBJECT
);
// вернет
// [
// [
// "name" => "ru--zhiznx",
// "total_payouts": "410233.942 GBG",
// ...
// ],
// ...
// ]

Реализованный список комманд

namespace: GrapheneNodeClient\Commands;

  • GetContentCommand
  • GetDiscussionsByAuthorBeforeDateCommand
  • GetDiscussionsByBlogCommand
  • GetDiscussionsByCreatedCommand
  • GetTrendingCategoriesCommand

Реализованный список коннекторов

namespace: GrapheneNodeClient\Connectors\WebSocket;

  • GolosWSConnector (wss://ws.golos.io)
  • SteemitWSConnector (wss://ws.steemit.com)

переключение между коннекторами

<?php

use GrapheneNodeClient\Commands\GetContentCommand;
use GrapheneNodeClient\Connectors\InitConnector;

$command GetContentCommand(InitConnector::getConnector(InitConnector::PLATFORM_STEEMIT));

$content >execute(
[
0 => "author",
1 => "permlink"
]
);
// вернет
// [
// "id" => 1,
// "result" => [
// ...
// ]
// ]

Создание своего коннектора

<?php

namespace My\App\Connectors;

use GrapheneNodeClient\Connectors\ConnectorInterface;

class MyConnector implements ConnectorInterface
{
public function doRequest(array $data, $answerFormat {
// TODO: Implement doRequest() method.
}
}

Создание своей комманды

<?php

namespace My\App\Commands;

use GrapheneNodeClient\Commands\CommandAbstract;

class MyCommand extends CommandAbstract
{
protected $method

protected $requiredParams
// for list params
0 => [
'param_key1', //обязательное поле с ключем 'param_key1'
'param_key2', //обязательное поле с ключем 'param_key2'
]
//или
//'param_key1', //обязательное поле с ключем 'param_key1'
//'param_key2', //обязательное поле с ключем 'param_key1'
];
}

Дорожная карта

  • расширить список реализованных комманд
  • попробовать публикацию постов

P.S.

Отпишитесь кто еще с PHP работает над голосом, вместе мы - банда=)


Comments 5


Приветствую Вас и желаю успехов на платформе Голос!

В этой статье вы сможете найти ответы на большинство вопросов, возникающих у новичков. Также большую подборку ссылок на полезные материалы вы можете найти по этой ссылке
Оперативно получить помощь, вы можете присоединившись к нашему сообществу в Телеграм

Буду признателен, если расскажете, откуда Вы узнали о платформе Голос (ответьте цифрой):
1) увидел в Facebook
2) увидел в ВКонтакте
3) из поиска Google
4) из поиска Яндекс
5) из Steem
6) рассказал друг
7) другое (укажите в комментарии)

Чтобы быстрей освоится, присоединяйтесь к конкурсу для новичков, который идёт прямо сейчас!

04.03.2017 22:00
0

Ну я хоть и не являюсь поклонником пыха, но вряд ли стану отрицать его полезность :-) С почином! Рад что наша опенсурсная банда становится все больше...

04.03.2017 23:15
0

спс)

04.03.2017 23:18
0

Хорошее начало @t3ran13. Буду следить за развитием я как раз искал php апи для голоса.

05.03.2017 00:21
0

спасибо, отлично) если будут идеи - пиши)

05.03.2017 09:42
0

Это полезно, спасибо. Но вот это Graphene это что и где? Над чем это все построено и как что мне установить, чтобы эта надстройка над сокетами заработала?

05.03.2017 11:20
0

голос и стим на графене работают, всех ньюансов ен знаю, но если я праольно понимаю, то графен это типа фреймворка, либы с готовыми компонентами)

Что куда и для какой цели вам нужно?

05.03.2017 17:36
0

Мне нужно это из абстрактного "чистого" php использовать и не тащить за собой фреймворк. А точнее, не быть привязанным к нему. Я вот попытался работать с wss://ws.golos.io через обычные сокеты php - не взлетает. Мне кажется, что более правильным было бы для базовых инструментов иметь функциональность, а потом уже работать с ними в рамках любого фреймворка.

05.03.2017 18:18
0

Для меня в принципе ничего нового, но плюсую)
Вот как только допилишь публикацию постов - вот это вот вообще крутяк будет))

05.03.2017 15:22
0

это при условии если она возможна) я еще не разщбирался больше чем нужно)

05.03.2017 17:36
0

@php-node-client, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:

  • Голосов - 2 позицию - 133 Голосов
  • Выплаты - 2 позицию - 1174,4050 GESTS
06.03.2017 08:01
0