2012-03-12 2 views
1

내가 ActiveResource을 사용 Unfuddle API의 계정 정보를 얻으려고 계정Unfuddle API의 정보 가져 오기

URL입니다 내가 점점하려고하면이 내 ActiveResource 클래스

class Account < ActiveResource::Base 
    self.collection_name = "account" 
    self.site = "https://mydomain.unfuddle.com/api/v1" 
    self.user = "me" 
    self.password = "pass" 
end 

입니다 http://mydomain.unfuddle.com/api/v1/account

입니다

Account.all 내 계정 정보 빈 배열을 얻을 수 있지만이 시도하면이

require 'net/https' 

UNFUDDLE_SETTINGS = { 
    :subdomain => 'mydomain', 
    :username => 'me', 
    :password => 'pass', 
    :ssl  => true 
} 

http = Net::HTTP.new("#{UNFUDDLE_SETTINGS[:subdomain]}.unfuddle.com",UNFUDDLE_SETTINGS[:ssl] ? 443 : 80) 

if UNFUDDLE_SETTINGS[:ssl] 
    http.use_ssl = true 
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
end 

begin 
    request = Net::HTTP::Get.new('/api/v1/account') 
    request.basic_auth UNFUDDLE_SETTINGS[:username], UNFUDDLE_SETTINGS[:password] 

    response = http.request(request) 
    if response.code == "200" 
    puts response.body 
    else 
    puts "HTTP Status Code: #{response.code}." 
    end 
rescue => e 
    puts e.message 
end 

내 계정 정보, ActiveResource 접근 방식이 작동하지 않는 이유가 무엇입니까?

** UPDATE

나는이 문제 https://github.com/rails/rails/issues/2318을했고 나는 해킹을 erikkallens 사용하도록 지정하는 것을 잊었다

.

답변

2

이 문제는 https://github.com/rails/rails/issues/2318 인 것 같습니다. vaskas 솔루션을 시도했지만 기본적으로 수정하지 못했습니다.

class Account < ActiveResource::Base 
    self.collection_name = "account" 
    self.site = "https://mydomain.unfuddle.com/api/v1" 
    self.user = "me" 
    self.password = "pass" 
    self.format = AccountXMLFormatter.new 
end 

class AccountXMLFormatter 
    include ActiveResource::Formats::XmlFormat 
    def decode(xml) 
    [account: ActiveResource::Formats::XmlFormat.decode(xml)] 
    end 
end