Tratando de obtener la lista de amigos de Twitter que utilizan httparty (rubí)
Pregunta
Estoy tratando de obtener la lista de amigos del `s específicas de twitter.
Este es mi código -
require 'rubygems'
require 'httparty'
class TwitterData
include HTTParty
base_uri 'http://api.twitter.com/1/'
default_params :output => 'json'
format :json
def self.get_username_data(username)
get('statuses/friends.json' , :query => { :screen_name => username })
end
end
puts "Please your twitter username - "
twitter_username = gets
puts TwitterData.get_username_data(twitter_username).inspect
Este es el error que estoy recibiendo -
Please your twitter username -
twitter
C:/Ruby192/lib/ruby/gems/1.9.1/gems/crack-0.1.8/lib/crack/json.rb:14:in `rescue in parse': Invalid JSON string (Crack::ParseError)
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/crack-0.1.8/lib/crack/json.rb:12:in `parse'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/parser.rb:116:in `json'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/parser.rb:136:in `parse_supported_format'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/parser.rb:103:in `parse'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/parser.rb:66:in `call'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/request.rb:180:in `parse_response'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/request.rb:164:in `handle_response'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/request.rb:57:in `perform'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty.rb:280:in `perform_request'
from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty.rb:232:in `get'
from twitter_friends_2.rb:11:in `get_username_data'
from twitter_friends_2.rb:17:in `<main>'
Solución
Reemplazar el método con este
def self.get_username_data(username)
get("/statuses/friends.json?screen_name=#{username}")
end
o
def self.get_username_data(username)
get('/statuses/friends.json' , :query => { :screen_name => username.strip })
end
Se necesita para despojar el nombre de usuario porque desde la línea de comandos cuando el usuario ingresa el nombre de usuario de twitter y éxitos introducir una clave "\ n" recibe añade al nombre de usuario y el mismo nombre de usuario es enviado como un parámetro que causa el problema. Cualquiera de los anteriores fragmentos de código dado debería funcionar.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow