...
Code Block | ||
---|---|---|
| ||
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 proxy_error yield rescue RestClient::Exception => e render json: e.response, status: e.response.code end private def permitted_params params.symbolize_keys.except(*service_params) end def service_params %i[controller action path format] end |
ВАЖНО: В случае ошибки выполнения запроса необходимо возвращать код ошибки, как это сделано в методе proxy_error
, чтобы в случае, если, например, истек срок действия токена, то виджет заново аутентифицировался.
Встраивание JS
После загрузки JS и CSS из HCCP выполняется инициализация виджета данными приложения и сущности, после чего вызывается функция render()
.
...