Использовать не-Rails REST API с ActiveResource - PullRequest
0 голосов
/ 10 февраля 2012

Я использую ActiveResource против REST API, не относящегося к Rails ... на самом деле даже часть "Rest" сомнительна, но они попытались:

Хотя приложения RESTful в идеале не имеют состояния, платформа ALMтребуются сеансы для управления блокировками, временем жизни клиента и выполнения других основных задач.Управление сеансом выполняется с использованием файла cookie с именем QCSession.

В любом случае, мне нужно выполнить один GET для «точки аутентификации / аутентификации», чтобы аутентифицировать пользователя и вернуть cookie.Просто не уверен, как это сделать.Вот что у меня есть, но я получаю ошибку 404:

class AlmActiveResource < ActiveResource::Base
  attr_accessor :lwsso_cookie, :qcsession_cookie

  self.site     = "http://alm_url/qcbin/"
  self.user     = "name"
  self.password = "pw"

  def self.authentication
    @auth_point    = "authentication-point/authenticate"
    self.prefix(@auth_point)
    meow = self.get(:authenticate)
    Rails.logger.debug("Meow: #{meow.inspect}")

  end
end

1 Ответ

2 голосов
/ 24 февраля 2012

У меня была точно такая же проблема. Мне, наконец, пришлось поместить все в контроллер, чтобы заставить его общаться с ALM. Это не самое лучшее, но это работает. Вот действие Index в контроллере ReleaseCycles:

 def index
    conn=getAuthenticatedCurl
    conn.url="#{$HPQC_REST_URL}/release-cycles"
    conn.perform
    results=conn.response_code
    hash=Hash.from_xml(conn.body_str)
    respond_to do |format|
        format.html { render :xml => hash }
        format.xml  { render :xml => hash }
        format.json { render :json => hash }
    end
    conn.url=$HPQC_LOGOUT_URL
    conn.perform
    conn.close
    return results
end

Я создал get "getAuthenticatedCurl" в ApplicationController. Похоже:

  $HPQC_HOST = "http://<your_alm_server>:8080"
  $HPQC_REST_URL = "#{$HPQC_HOST}/qcbin/rest/domains/<DOMAIN>/projects/<PROJECT>"
  $HPQC_LOGIN_URL = "#{$HPQC_HOST}/qcbin/authentication-point/authenticate"
  $HPQC_LOGOUT_URL = "#{$HPQC_HOST}/qcbin/authentication-point/logout"

  def getAuthenticatedCurl
    @_conn = Curl::Easy.new($HPQC_LOGIN_URL)
    @_conn.verbose = true
    @_conn.http_auth_types = :basic
    @_conn.userpwd = '<username>:<password>'
    @_conn.enable_cookies = true
    @_conn.cookiejar = 'cookies.txt'
    @_conn.perform #creates the first cookie instance, which allows subsequent calls to the HPQC API
    puts "connected...."
    return @_conn
  end

Это не красиво, но работает и быстро. Мой следующий шаг - сделать то же самое, что и ActiveResource. Надеюсь, это поможет и удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...