Class: Torrenter::HTTPTracker

Inherits:
TorrentReader show all
Defined in:
lib/torrenter/http_tracker.rb

Instance Attribute Summary

Attributes inherited from TorrentReader

#stream

Instance Method Summary collapse

Methods inherited from TorrentReader

#build_tracker, #determine_protocol, #establish_reactor, #parse_addresses, #peer_info, #port, #sha_pieces

Constructor Details

#initialize(address, stream) ⇒ HTTPTracker

Returns a new instance of HTTPTracker.



4
5
6
7
# File 'lib/torrenter/http_tracker.rb', line 4

def initialize(address, stream)
  @address = URI(address)
  super(stream)
end

Instance Method Details

#address_hashesObject



19
20
21
# File 'lib/torrenter/http_tracker.rb', line 19

def address_hashes
  @response['peers']
end

#address_listObject



23
24
25
# File 'lib/torrenter/http_tracker.rb', line 23

def address_list
  parse_addresses(address_hashes, address_hashes.bytesize / 6)
end

#connectObject



9
10
11
12
13
14
15
16
17
# File 'lib/torrenter/http_tracker.rb', line 9

def connect
  @address.query = URI.encode_www_form(tracker_params)
  @response = 
    begin
      BEncode.load(Net::HTTP.get(@address))
    rescue
      false
    end
end

#connected?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/torrenter/http_tracker.rb', line 36

def connected?
  @response
end

#tracker_paramsObject



27
28
29
30
31
32
33
34
# File 'lib/torrenter/http_tracker.rb', line 27

def tracker_params
  {
    :info_hash => @sha,
    :peer_id   => PEER_ID,
    :left      => @piece_length,
    :pieces    => @file_list
  }
end