Возможно, вы захотите взглянуть на httparty
Вот пример того, как вы потребляете API Twitter.
# lib/twitter.rb
require 'httparty'
require 'hashie'
class Twitter
include HTTParty
base_uri 'twitter.com'
def timeline
self.class.get("/statuses/public_timeline.xml")["statuses"].map do |status|
Hashie::Mash.new(status)
end
end
end
# client code
client = Twitter.new
message = client.timeline.first
puts message.text
Обратите внимание, что вам не нужно создавать DTO. httparty отображает xml (посмотрите на http://dev.twitter.com/doc/get/statuses/public_timeline для структуры в этом примере) на Hashes, а затем Hashie :: Mash отображает их в методы, поэтому вы можете просто сделать message.text. Это даже работает рекурсивно, так что вы можете сделать client.timeline.first.user.name.
Если вы создаете проект rails, я бы поместил twitter.rb в папку lib.
Если вы предпочитаете использовать статические методы, вы можете сделать:
require 'httparty'
require 'hashie'
class Twitter
include HTTParty
base_uri 'twitter.com'
def self.timeline
get("/statuses/public_timeline.xml")["statuses"].map do |status|
Hashie::Mash.new(status)
end
end
end
# client code
message = Twitter.timeline.first
puts message.text