class Client

Public Instance Methods

erase(hash) click to toggle source
# File lib/client.rb, line 21
def erase(hash)
  call('d.erase', hash)
end
fetch() click to toggle source
# File lib/client.rb, line 2
def fetch
  d_objects = call_async('d.multicall', 'main', *render_downloads_queries).map do |t|
    Hash[QUERIES[:downloads].keys.zip(t)]
  end

  t_commands = render_trackers_commands(d_objects.map { |d| d[:hash] })
  t_objects  = multicall_async(*t_commands).map do |r|
    Hash[QUERIES[:trackers].keys.zip(r.first)]
  end

  d_objects.zip(t_objects).map do |d, t|
    Torrent.new(d.merge(t))
  end
end
load_start(bytes) click to toggle source
# File lib/client.rb, line 17
def load_start(bytes)
  call('load.raw_start', '', bytes)
end

Private Instance Methods

render_downloads_queries() click to toggle source
# File lib/client.rb, line 27
def render_downloads_queries
  QUERIES[:downloads].map { |_, v| "d.#{v[:call]}=" }
end
render_trackers_commands(hashes) click to toggle source
# File lib/client.rb, line 31
def render_trackers_commands(hashes)
  calls = QUERIES[:trackers].map { |_, v| "t.#{v[:call]}=" }

  hashes.map do |h|
    ['t.multicall', h, '', *calls]
  end
end