Перейти к содержимому


Фотография

PHP класс для работы с API MyArena.Ru

MyArena Api API

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 85

#1 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 12 Декабрь 2013 - 9:45

В свете выхода новой ПУ и появлением такой функции, как API, что позволяет удаленно управлять сервером, написал класс, с помощью которого будет проще это делать.

https://github.com/u.../MyArena.Ru-API

Описание и примеры там же, на гитхабе
 
По ссылке расположен пакет для composer. Для тех, кто не использует composer, я оставил старую версию под тэгом 1.0.0. Ссылка на гитхаб на старую версию - https://github.com/d...ases/tag/v1.0.0

UPD: Версия 2.1.0
Зарелизил новую версию
 
Теперь можно использовать последнюю версию без композера:

<?php

include '/path/to/src/ApiException.php';
include '/path/to/src/Api.php';
include '/path/to/src/HostInfo.php';
include '/path/to/src/Player.php';
include '/path/to/src/Server.php';

$token = 'qwertyuiop';
$api = new \DeSalvatierra\MyArena\Api\Api($token);

// Дальше, как в README

 
Так же сделал возможность изменять тексты статуса, не прибегая к редактированию кода:

<?php

// Замена текста статуса работающего сервера
\DeSalvatierra\MyArena\Api\Server::setOnStatusText('Сервер включен');

// Замена текста статуса выключенного сервера
\DeSalvatierra\MyArena\Api\Server::setOffStatusText('Не работает. Устал');

// Замена текста статуса сервера Запускается/Завис
\DeSalvatierra\MyArena\Api\Server::setStartStatusText('Что-то не так');

// Замена текста, когда статус неизвестен
\DeSalvatierra\MyArena\Api\Server::setUnknownStatusText('Хм.. Он улетел?');

$token = 'qwertyuiop';
$api = new \DeSalvatierra\MyArena\Api\Api($token);

...

Ну и добавил получение консоли сервера:

<?php

​$token = 'qwertyuiop';

$api = new \DeSalvatierra\MyArena\Api\Api($token);

$console = $api->getConsole();

И еще. Если вы все-таки используете composer, но вам не хочется использовать Guzzle,
то в конструктор можно вторым паараметром передать true, тогда все запросы будут через file_get_contents:

<?php

​$token = 'qwertyuiop';

$api = new \DeSalvatierra\MyArena\Api\Api($token, true);

...

Скачать с гитхаба


  • MatthewWEM это нравится

#2 smile7k

smile7k

    Пользователь

  • Пользователь
  • PipPipPip
  • 394 сообщений

Отправлено 12 Декабрь 2013 - 10:55

На счет 

$token = 'qwertyuiopp';

что должно быть вместо "qwertyuiopp"?


Сообщение отредактировал smile7k: 12 Декабрь 2013 - 11:01


#3 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 12 Декабрь 2013 - 11:11

На счет 

$token = 'qwertyuiopp';

что должно быть вместо "qwertyuiopp"?

Очевидно, токен, который написан в разделе "Настройки" -> "API".



#4 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 12 Декабрь 2013 - 23:21

для minecraft же потянет?

$api->command('/pex reload');

команды отправлять в таком виде?


Сообщение отредактировал Semen4ik: 12 Декабрь 2013 - 23:26


#5 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 12 Декабрь 2013 - 23:34

для minecraft же потянет?

$api->command('/pex reload');

команды отправлять в таком виде?

Без слеша, как в консоли.



#6 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 12 Декабрь 2013 - 23:36

Без слеша, как в консоли.

хорошо бы ещё получение файла server.log сделать, тогда бы вообще шик)



#7 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 12 Декабрь 2013 - 23:42

Что мешает парсить через FTP?



#8 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 12 Декабрь 2013 - 23:44

Что мешает парсить через FTP?

к такому меня жизнь не готовила..


  • aleks040996 это нравится

#9 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 13 Декабрь 2013 - 1:01

для minecraft же потянет?

$api->command('/pex reload');
команды отправлять в таком виде?

$api->command('/pex%20reload');
UPD сейчас исправлю, сделаю чтобы пробелы заменялись
Исправил. Кманды отправлять можно с пробелом
  • compromiss это нравится

#10 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 13 Декабрь 2013 - 11:34

$api->command('/pex%20reload');
UPD сейчас исправлю, сделаю чтобы пробелы заменялись
Исправил. Кманды отправлять можно с пробелом

 

без слеша*



#11 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 13 Декабрь 2013 - 14:52

Что мешает парсить через FTP?

можно таким наглым способом <iframe width="100%" height="100%" src="ftp://server****:pass@127.0.0.1/server.log"></iframe> но кодировка..
Сейчас вот читаю про функции ftp, буду дополнять MCP свою, а вообще её надо переписать. там mysql_query везде.


Сообщение отредактировал Semen4ik: 13 Декабрь 2013 - 14:52


#12 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 13 Декабрь 2013 - 15:39

можно таким наглым способом <iframe width="100%" height="100%" src="ftp://server****:pass@127.0.0.1/server.log"></iframe> но кодировка..
Сейчас вот читаю про функции ftp, буду дополнять MCP свою, а вообще её надо переписать. там mysql_query везде.

ftp_*() религия не позволяет?



#13 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 13 Декабрь 2013 - 15:48

ftp_*() религия не позволяет?

 

можно таким наглым способом <iframe width="100%" height="100%" src="ftp://server****:pass@127.0.0.1/server.log"></iframe> но кодировка..
Сейчас вот читаю про функции ftp, буду дополнять MCP свою, а вообще её надо переписать. там mysql_query везде.



#14 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 13 Декабрь 2013 - 15:59

можно таким наглым способом <iframe width="100%" height="100%" src="ftp://server****:pass@127.0.0.1/server.log"></iframe> но кодировка..
Сейчас вот читаю про функции ftp, буду дополнять MCP свою, а вообще её надо переписать. там mysql_query везде.

Не думай даже фреймом. И будешь ты выводить эти десятки метров и повесишь ты браузер.

Тебе, по сути, последние 100 строк только нужно.



#15 deadanykey

deadanykey

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 3 415 сообщений

Отправлено 13 Декабрь 2013 - 16:19

Не думай даже фреймом. И будешь ты выводить эти десятки метров и повесишь ты браузер.

Тебе, по сути, последние 100 строк только нужно.

Откуда там десятки метров?



#16 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 13 Декабрь 2013 - 18:53

Откуда там десятки метров?

Из опыта говорю. Я много чего повидал.



#17 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 13 Декабрь 2013 - 23:23

Что мешает парсить через FTP?

вот крч решил пробовать сделать мониторинг на api, потому что query часто пишет что сервер выключен.
так вот, перепилить мониторинг оказалось очень легко, я это сделал, но там блин, появлялась большая голова скина (как бы глупо это не звучало)
я думал мб я что накосячил, взял код который с гитхаба, таже хрень
http://casioo.ru/ins...monitoring2.php
большая голова, откуда она чёрт возьми?
 

<table>
    <thead>
        <tr>
            <th><b>Ник</b></th>
            <?php if(isset($players[0]['score'])):?>
            <td><b>Счет</b></td>
            <?php endif;?>
            <?php if(isset($players[0]['time'])):?>
                <td><b>Время</b></td>
            <?php endif;?>
        </tr>
    </thead>
    <tbody>
    <?php
    foreach($Info['playersInfo'] as $player):?>
        <tr>
            <td>
                <?php echo $player['name']?>
		<?echo '<img data-placement="bottom" src="http://casioo.ru/skin.php?minis='.$player['name'].'/25" href="#" rel="tooltip" data-original-title="'.htmlspecialchars($player['name']).'">'?>
            </td>
            <?php if(isset($player['score'])):?>
            <td>
                <?php echo $player['score']?>
            </td>
            <?php endif;?>
            <?php if(isset($player['time'])):?>
            <td>
                <?php echo $player['time']?>
            </td>
            <?php endif;?>
        </tr>
    <?php endforeach;?>
    </tbody>
</table>

Сообщение отредактировал Semen4ik: 14 Декабрь 2013 - 17:16


#18 smile7k

smile7k

    Пользователь

  • Пользователь
  • PipPipPip
  • 394 сообщений

Отправлено 15 Декабрь 2013 - 10:17

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

 

Как бы в ПУ показывает 10-20%, а при выводе на сайт показывает 10-200%, это решаемо?


Сообщение отредактировал smile7k: 15 Декабрь 2013 - 10:17


#19 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 15 Декабрь 2013 - 10:28

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

 

Как бы в ПУ показывает 10-20%, а при выводе на сайт показывает 10-200%, это решаемо?

Как отдает арена, так отдает и класс



#20 smile7k

smile7k

    Пользователь

  • Пользователь
  • PipPipPip
  • 394 сообщений

Отправлено 15 Декабрь 2013 - 10:32

Как отдает арена, так отдает и класс

Ну видимо есть какой-то просчет





Темы с аналогичным тегами MyArena Api, API

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных