Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Прокси-контроллер

Прокси-контроллер служит прослойкой между внешней системой и виджетом отчета HCCP. Он проверяет параметры, переданные из виджета, и передает их в бэкенд HCCP, добавляя к ним заголовок аутентификации и другие данные, необходимые для работы стыковки.

 

Для логина необходимо реализовать метод, который будет передавать учетные данные в API HCCP. Пример реализации на Ruby:

    def login
      request_params = {
        url: URI.join(config.url, '/api/login').to_s,
        method: :post,
        payload: {
          params: {
            login: config.login,
            password: config.password
          }
        }.to_json
      }

      render json: RestClient::Request.execute(request_params)
    end

В результате метод должен вернуть фронтэнду полученный от API HCCP json.

 

Для остальных запросов GET запросов необходимо просто проксировать запросы

Встраивание JS

После загрузки JS и CSS из HCCP выполняется инициализация виджета данными приложения и сущности, после чего вызывается функция render().

Параметры, передаваемые в функцию render():

ИмяЗначение (пример)Обязательный
baseURL

URL по которому виджет ходить в API, может быть как полным адресом ('http://localhost:3000/')

, так и относительным адреса текущего приложения ('/hccp/')

Нет
locale 
Язык, с которым будет инициализирован виджет ('ru')Нет
customerId
id абонента, которые должен отображаться в виджетеДа
containerId
id элемента, в котором отобразится виджет
('customer-widget-id')
Да

 

Ниже приведен пример встраивания виджета в веб-страницу:

!!!
%html
  %head
    %script{type: "text/javascript", src: "http://localhost:3000/customerWidget.js"}
    %link{rel: 'stylesheet', type: "text/css", href: "http://localhost:3000/customerWidget.css"}
  %body
    %div
      %h1 Welcome
      %p
      #widget-id{style: 'width: 1000px; margin: 0 auto; font-size: 13px; border: 5px dashed lightgrey;'}

:javascript
  document.addEventListener('DOMContentLoaded', () => {
    HCCPWidget.render({
      baseURL:     '/hccp/',
      locale:      'ru',
      customerId:  '50162901',
      containerId: 'customer-widget-id',
    });
  });
  • No labels