Вход с использованием JSON в Reddit API - PullRequest
0 голосов
/ 01 марта 2012

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

Что я хочу сделать, это: Отправить подготовленный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 или нет, так что если вы знаетегораздо лучший способ сделать это, не стесняйтесь поделиться!

Спасибо заранее!

1 Ответ

2 голосов
/ 02 марта 2012

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

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

Просто помните, что URL-адрес API для входа в систему должен быть: http://www.reddit.com/api/login/USERNAME (с www), и вы должны передать api_type param в запросе.

...