class RubyGazelle::Gazelle

Constants

REQUESTS

Public Class Methods

connect(options, &block) click to toggle source
# File lib/gazelle/base.rb, line 26
def self.connect(options, &block)
  options[:site] ||= 'https://ssl.what.cd'

  options[:login] ||= '/login.php'

  #throw exception for not providing username if !options[:username] || !options[:password]

  base_uri options[:site]

  gazelle_connection = new("#{options[:site]}#{options[:login]}", options[:username], options[:password])

  if block_given?
    gazelle_connection.instance_eval(&block)
  end

  gazelle_connection
end
new(login_page, username, password) click to toggle source
# File lib/gazelle/base.rb, line 20
def initialize(login_page, username, password)
  @username = username
  response = Net::HTTP.post_form(URI(login_page), {username: username, password: password})
  @cookie = response['Set-Cookie']
end

Public Instance Methods

announcements() click to toggle source
# File lib/gazelle/base.rb, line 118
def announcements
  make_request("#{REQUESTS[:announcement]}")
end
artist(id) click to toggle source
# File lib/gazelle/base.rb, line 98
def artist(id)
  make_request(REQUESTS[:artist], :id => id)
end
bookmarks(options = {}) click to toggle source
# File lib/gazelle/base.rb, line 78
def bookmarks(options = {})
  make_request(REQUESTS[:bookmarks], options)
end
conversation(id) click to toggle source
# File lib/gazelle/base.rb, line 56
def conversation(id)
  make_request(REQUESTS[:conversation], :id => id)
end
forum(id, options = {}) click to toggle source
# File lib/gazelle/base.rb, line 90
def forum(id, options = {})
  make_request(REQUESTS[:forum], {:forumid => id}.merge(options))
end
forum_categories() click to toggle source
# File lib/gazelle/base.rb, line 86
def forum_categories
  make_request(REQUESTS[:forum_categories])
end
forum_thread(options = {}) click to toggle source
# File lib/gazelle/base.rb, line 94
def forum_thread(options = {})
  make_request(REQUESTS[:forum_thread], options)
end
inbox(options = {}) click to toggle source
# File lib/gazelle/base.rb, line 52
def inbox(options = {})
  make_request(REQUESTS[:inbox], options)
end
index() click to toggle source
# File lib/gazelle/base.rb, line 48
def index
  make_request(REQUESTS[:index])
end
notifications(options = {}) click to toggle source
# File lib/gazelle/base.rb, line 110
def notifications(options = {})
  make_request(REQUESTS[:notifications], options)
end
request(id, options = {}) click to toggle source
# File lib/gazelle/base.rb, line 106
def request(id, options = {})
  make_request(REQUESTS[:request], {:id => id}.merge(options))
end
rippy() click to toggle source
# File lib/gazelle/base.rb, line 114
def rippy
  self.class.get(REQUESTS[:rippy], :headers => {'Cookie' => @cookie})['rippy']
end
subscriptions(options = {}) click to toggle source
# File lib/gazelle/base.rb, line 82
def subscriptions(options = {})
  make_request(REQUESTS[:subscriptions], options)
end
top(limit = 10, type) click to toggle source
# File lib/gazelle/base.rb, line 60
def top(limit = 10, type)
  #Users returns empty results.
  make_request(REQUESTS[:top10], :type => type, :limit => limit)
end
torrent_group(id) click to toggle source
# File lib/gazelle/base.rb, line 102
def torrent_group(id)
  make_request(REQUESTS[:torrent_group], :id => id)
end
user(id) click to toggle source
# File lib/gazelle/base.rb, line 44
def user(id)
  make_request(REQUESTS[:user_profile], :id => id)
end

Private Instance Methods

make_request(page, options = {}) click to toggle source
# File lib/gazelle/base.rb, line 124
def make_request(page, options = {})
  response = self.class.get(page, :query => options, :headers => {'Cookie' => @cookie})


  #response isn't consistently formatted
  response = response.parsed_response || response
  #not sure why sometimes the response doesn't get parsed correctly
  response = JSON.parse(response) if response.is_a?(String)

  status = response['status']
  response = response['response']

  throw Exception unless status.eql? 'success'


  if response.is_a?(Array)
    response.collect{|el| RecursiveOpenStruct.new(el)}
  else
    RecursiveOpenStruct.new(response)
  end
end