Skip to content
Dmitry Kochin edited this page Jan 11, 2016 · 23 revisions

Введение

Пошаговый отладчик провайдеров представляет собой расширение Google Chrome, которое симулирует среду выполнения провайдера в AnyBalance. Симуляция, однако, не полная, поэтому если провайдер работает в отладчике, то его необходимо проверить и непосредственно в AnyBalance.

Установка

Для установки отладчика установите из магазина Google Chrome расширение. После установки выполните следующий шаги.

  1. В Chrome перейдите по ссылке chrome://settings/extensions.
  2. Для расширения AnyBalanceDebugger установите галочки Разрешить использование в режиме инкогнито и Разрешить открывать файлы по ссылкам.

Подготовка к отладке

Для отладки необходимо сформировать специальный локальный html-файл, в котором должны быть прописаны ссылки на скрипты провайдера и определены необходимые для них настройки. Файл обязательно должен иметь имя, заканчивающееся на

-anybalance.html, например, myprovider-anybalance.html

в противном случае отладчик к нему не присоединится. Эту страницу можно сохранить на локальный диск со ссылки chrome-extension://bjhpeieonkhafpmpkjolifioeodfoiag/debug-anybalance.html или скопировать из листинга ниже. Комментарии показывают, в каких местах следует сделать изменения.

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script src="chrome-extension://bjhpeieonkhafpmpkjolifioeodfoiag/json2.js"></script>
  <script src="chrome-extension://bjhpeieonkhafpmpkjolifioeodfoiag/jquery.min.js"></script>
  <script src="chrome-extension://bjhpeieonkhafpmpkjolifioeodfoiag/api-adapter.js"></script>
  <script src="chrome-extension://bjhpeieonkhafpmpkjolifioeodfoiag/api.js"></script>
  <script>
	var g_api_preferences = {
          //Вставьте сюда настройки, необходимые для вашего провайдера
          //Например:
          //  login: 'username',
          //  password: 'secretpass'
	};
  </script>
  <!-- Перечислите все скрипты, указанные в манифесте вашего провайдера.
       Указывайте локальные пути к файлам. Библиотека JQuery уже включена,
       отдельно указывать её не нужно.
       Например, -->
  <script src="library.js"></script>
  <script src="main.js"></script>
</head>
<body onload="">
  <div style="display:none" id="AnyBalanceDebuggerRPCContainer"></div>
  <button onclick="api_onload()">Execute</button>
  <div id="AnyBalanceDebuggerLog"></div>
</body>
</html>

Этот файл можно записать в любое место на локальном диске (но указанные в script тэгах файлы отлаживаемого провайдера должны быть доступны. Так что лучше размещать этот файл прямо в каталоге с отлаживаемым провайдером). После этого его надо открыть в Google Chrome. Если расширение установлено, то по нажатию кнопки Execute должна быть выполнена функция main() провайдера. Отладочные сообщения направляются в консоль Chrome и на экран. Если вы поменяли исходные файлы провайдера, не забудьте обновить отладочную страницу в Chrome, иначе он не увидит ваши изменения!

Пошаговая отладка

Пошаговая отладка делается с помощью встроенного в Google Chrome отладчика JavaScript. Консоль JavaScript может быть вызвана комбинацией клавиш в Windows: CTRL-SHIFT-J, на Mac: ALT-⌘-J . Или в меню Инструменты-Консоль JavaScript. Можно устанавливать точки останова (кликнув на номер нужной строки в окне просмотра JavaScript файла).

Особенности среды выполнения отладчика

В Google Chrome есть ошибка https://code.google.com/p/chromium/issues/detail?id=68105, приводящая к невозможности выполнения отладчиком запроса, если в процессе выполнения происходят редиректы на другой домен или протокол. Для того, чтобы обойти эту ошибку, можно использовать Fiddler, Расширение AnyBalanceFiddlerExtension для Fiddler (нужно установить в %userprofile%\My Documents\Fiddler2\Scripts\) и в отладчике поставить галочку Enable 3xx replace.

Куки и авторизация сохраняются между последовательными запросами к AnyBalance.requestGet и AnyBalance.requestPost так же, как и в AnyBalance. Но более того, куки сохраняются и между несколькими вызовами отладчика. Это может влиять на процедуру логина и навигации по сайту провайдера. Поэтому можете открыть новое окно Инкогнито и выполнить провайдер там - инкогнито открывается чистым, как будто вы ни разу не заходили до этого на сайт. Но будьте внимательны, все открытые окна Инкогнито Google Chrome разделяют куки между собой. Они очистятся только после закрытия всех окон Инкогнито и открытия одного заново.

Поскольку расширение Google Chrome это просто подписанный Zip, то исходный код этого расширения вы всегда можете увидеть, просто открыв файл расширения как zip файл. Если в процессе использования возникнут вопросы и предложения, то добро пожаловать в группу.

Clone this wiki locally