Domanda

Ho cercato di costruire un piccolo bot che userà l'API di Reddit. Posso abbattere e leggere tutte le informazioni che sto ricevendo senza problemi, ma non sono stato in grado di inviare nulla.

Cosa voglio fare è: Invia una stringa json preparata a http://www.reddit.com/api/login e ottenere Qualche tipo di risposta se riuscissi o fallito.

Se hai bisogno di maggiori informazioni su Reddit's API: https://github.com/reddit/reddit / Wiki / API

Questo è ciò che ho finora:

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'})
.

Questo codice mi dà il seguente errore:

/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)
.

Anche se un pezzo di codice molto simile possa pubblicare su Twitter. Inoltre, non sono sicuro che il mio codice abbia effettivamente qualche tipo di risposta dal sito o meno.

per me non importa se uso httparty o no, quindi se conosci un modo molto migliore per farlo, sentiti libero di condividere!

Grazie in anticipo!

È stato utile?

Soluzione

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top