Вопрос

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

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

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

Это было полезно?

Решение

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top