Class: Firecracker::UDPScraper
- Defined in:
- lib/firecracker/udp_scraper.rb
Instance Method Summary collapse
-
#process! ⇒ Object
Hash Example: { c2cff4acc8f5b49fd6b93b88fc0423467fbb08b0: { downloads: 123, complete: 456, incomplete: 789 } }.
Methods inherited from Base
#debug?, #hashes, #initialize, #timeout, #valid?
Constructor Details
This class inherits a constructor from Firecracker::Base
Instance Method Details
#process! ⇒ Object
Returns Hash Example: {
c2cff4acc8f5b49fd6b93b88fc0423467fbb08b0: {
downloads: 123,
complete: 456,
incomplete: 789
}
}.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/firecracker/udp_scraper.rb', line 16 def process! raise "both #tracker and #hashes/#hash must be set" unless valid? # Handshake data = send(to_hex(4497486125440, 8) + to_hex(0, 4) + transaction_id) request_error! unless data # Main request data = send(data[16..31] + to_hex(2, 4) + transaction_id + hashes.join) request_error! unless data index = 16 results = {} loop do break unless data[index + 23] completed = data[(index + 8)..index + 15].to_i(16) leechers = data[(index + 16)..index + 23].to_i(16) seeders = data[index..index + 7].to_i(16) hash = hashes[(index - 16)/24] results.merge!({ hash => { downloads: completed, seeders: seeders, leechers: leechers } }) index += 24 end return results end |