class Torckapi::Tracker::HTTP

Constants

REQUEST_ACTIONS

Public Class Methods

new(url, options={}) click to toggle source
Calls superclass method Torckapi::Tracker::Base::new
# File lib/torckapi/tracker/http.rb, line 24
def initialize url, options={}
  super
  @url.query ||= ""
end

Public Instance Methods

announce(info_hash) click to toggle source

(see Base#announce)

Calls superclass method Torckapi::Tracker::Base#announce
# File lib/torckapi/tracker/http.rb, line 9
def announce info_hash
  super
  Torckapi::Response::Announce.from_http(info_hash, perform_request(url_for(@url.dup, Announce, info_hash)))
end
scrape(info_hashes=[]) click to toggle source

(see Base#scrape)

Calls superclass method Torckapi::Tracker::Base#scrape
# File lib/torckapi/tracker/http.rb, line 15
def scrape info_hashes=[]
  super
  Torckapi::Response::Scrape.from_http(perform_request(url_for(@url.dup, Scrape, info_hashes)))
end

Private Instance Methods

info_hash_params(info_hashes) click to toggle source
# File lib/torckapi/tracker/http.rb, line 43
def info_hash_params info_hashes
  info_hashes.map { |i| "info_hash=%s" % URI.encode([i].pack('H*')) }.join('&')
end
perform_request(url) click to toggle source
# File lib/torckapi/tracker/http.rb, line 35
def perform_request url
  begin
    Net::HTTP.get(url)
  rescue Errno::ECONNRESET, Errno::ETIMEDOUT, Timeout::Error
    raise CommunicationFailedError
  end
end
url_for(url, action, data) click to toggle source
# File lib/torckapi/tracker/http.rb, line 29
def url_for url, action, data
  url.query += info_hash_params [*data]
  url.path.gsub!(/announce/, 'scrape') if Scrape == action
  url
end