2012-03-01 8 views
0

Я пытался создать маленького бота, который будет использовать API Reddit. Я могу сломать и прочитать всю информацию, которую я получаю без проблем, но я еще ничего не смог отправить.Вход в систему с использованием JSON для Reddit API

То, что я хочу сделать, это: Отправить приготовленную строку JSON в http://www.reddit.com/api/login и получить какой-то ответ, если мне удалось или не удалось.

Если Вам необходима дополнительная информация о API Reddit по: https://github.com/reddit/reddit/wiki/API

Это то, что я до сих пор:

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

Этот код дает мне следующее сообщение об ошибке:

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

Хотя очень похожий кусок кода будет размещаться в Twitter. Кроме того, я не уверен, действительно ли мой код получает какой-то ответ с сайта или нет.

Для меня не имеет значения, пользуюсь ли я HTTParty или нет, поэтому, если вы знаете гораздо лучший способ сделать это, не стесняйтесь делиться!

Заранее спасибо!

ответ

2

Вы можете переписать его, как этот

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

Только помните, что API URL для Логин должен быть: http://www.reddit.com/api/login/USERNAME (с WWW), и вы должны пройти api_type параметров в запросе.