Pregunta

He estado tratando de construir un pequeño bot que usará la API de Reddit. Puedo romper y leer toda la información que recibo sin problemas, pero aún no he podido enviar nada.

lo que quiero hacer es: Envíe una cadena JSON preparada a http://www.reddit.com/api/login y obtenga algún tipo de respuesta si sucedí o fallé.

Si necesita más información sobre la API de Reddit: https://github.com/reddit/reddit / wiki / api

Esto es lo que tengo hasta ahora:

require 'rubygems'
require 'httparty'
require 'json'
require 'pp'

class Login
  include HTTParty
  base_uri 'reddit.com/'
  default_params :output => 'json'
  format :json
  def post(message)
    options = {:body => JSON.generate(message)}
    self.class.post('api/login', options)
  end
end

login = Login.new()
pp login.post({'username' => 'USERNAME', 'passwd' => 'PW'})

Este código me da el siguiente error:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1060:in `request': undefined method `closed?' for nil:NilClass (NoMethodError)

Aunque un trozo de código muy similar se publicaría en Twitter. Además, no estoy seguro de si mi código en realidad obtiene algún tipo de respuesta del sitio o no.

Para mí, no importa si uso Httparty o no, ¡así que si conoce una forma mucho mejor de hacer esto, siéntase libre de compartir!

¡Gracias de antemano!

¿Fue útil?

Solución

You can rewrite it like this

class Login
  include HTTParty
  base_uri 'http://www.reddit.com'

  def post(username, password)
    options = {:body => {:user => username, :passwd => password, :api_type => 'json'}}
    self.class.post("/api/login/#{username}", options)
  end
end

Login.new.post('user', 'pass')

Just remember that API url for a login must be: http://www.reddit.com/api/login/USERNAME (with www) and you should pass api_type param in request.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top