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
search(type, options)
click to toggle source
# File lib/gazelle/base.rb, line 65 def search(type, options) type = type.to_sym if type == :users make_request(REQUESTS[:user_search], options) elsif type == :requests make_request(REQUESTS[:request_search], options) elsif type == :torrents make_request(REQUESTS[:torrent_search], options) else throw Exception end 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