Question

J'essaie de construire un petit bot qui utilisera l'API de Reddit. Je peux décomposer et lire toutes les informations que je reçois sans problème, mais je n'ai pas encore été en mesure d'envoyer quelque chose.

ce que je veux faire est: Envoyez une chaîne JSON préparée à http://www.reddit.com/api/login et obtenir une sorte de réponse si j'ai réussi ou échoué.

Si vous avez besoin de plus d'informations sur l'API de Reddit: https://github.com/reddit/reddit / wiki / API

C'est ce que j'ai jusqu'à présent:

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

Ce code me donne l'erreur suivante:

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

Même si un morceau de code très similaire posterait sur Twitter. En outre, je ne sais pas si mon code reçoit en réalité une sorte de réponse du site ou non.

pour moi, peu importe si j'utilise httparty ou non, donc si vous connaissez une bien meilleure façon de le faire, n'hésitez pas à partager!

Merci d'avance!

Était-ce utile?

La solution

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top