Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

 

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

Code Block
languageruby
    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 запросов необходимо просто проксировать запросы. Для POST запросов необходимо добавлять hccp_auth_token. Пример прокси контроллера:

 

Code Block
languageruby
	around_filter :proxy_error
 
    def proxy
      method = request.method.downcase.to_sym
      result = request_widget_backend(params[:path], method, permitted_params)

      if method == :put
        if result
          head :no_content
        else
          head :bad_request
        end
      else
        render json: result
      end
    end
 
    def request_widget_backend(path, method = :get, parameters = {})
      request_params = if method == :get
                         {
                           method:  :get,
                           url:     URI.join(config.url, path).to_s,
                           headers: { params: parameters }
                         }
                       else
                         {
                           method:   method,
                           url:      "#{URI.join(config.url, path)}?hccp_auth_token=#{params[:hccp_auth_token]}",
                           payload:  parameters.to_json
                         }
                       end

      RestClient::Request.execute(request_params)
    end

    private

	
    def permitted_params
      params.symbolize_keys.except(*service_params)
    end

    def service_params
      %i[controller action path format]
    end

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

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

...

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

URL по которому виджет ходить выполняет запросы в API, может быть как полным адресом ('http://localhost:30003001/'), так и относительным адреса текущего приложения ('/hccp/').

В первом случае виджет будет выполнять запросы к http://localohost:3001/api/login (в случае логина).

Во втором случае – http://localhost:3003/hccp/api/login, где http://localhost:3003/ – URL системы, в которую встраивается виджет.

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

...