Pergunta

Eu estive tentando construir um pouco de bot que vai usar Reddit da API.Eu posso quebrar e ler todas as informações que estou recebendo, sem problema, mas eu não tenho sido capaz de enviar nada ainda.

O que eu quero fazer é: Enviar um preparado JSON seqüência de caracteres para http://www.reddit.com/api/login e obter algum tipo de resposta se o sucesso ou falha.

Se você precisa de mais informações sobre o Reddit da API: https://github.com/reddit/reddit/wiki/API

Isso é o que eu tenho até agora:

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 dá-me o seguinte erro:

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

Apesar de muito semelhante pedaço de código que seria um post no Twitter.Também, eu não tenho certeza se o meu código, na verdade, recebe algum tipo de resposta do site ou não.

Para mim não importa se eu usar HTTParty ou não, então, se você conhece uma maneira muito melhor de fazer isso, sinta-se livre para compartilhar!

Obrigado antecipadamente!

Foi útil?

Solução

Você pode reescrevê-lo, como este

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

Apenas lembre-se de que a API de url para um início de sessão tem de ser: http://www.reddit.com/api/login/USERNAME (com www) e você deve passar api_type param no pedido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top