class Torrent

Public Class Methods

new(raw_hash) click to toggle source
# File lib/torrent.rb, line 2
def initialize(raw_hash)
  @raw_hash = raw_hash
  serialize.each do |k, v|
    instance_variable_set "@#{k}", v
    self.class.__send__(:attr_reader, k)
  end
end

Public Instance Methods

serialize() click to toggle source
# File lib/torrent.rb, line 10
def serialize
  serialized_queries = Hash[
    @raw_hash.map do |k, v|
      [
        k,
        mutate(FLAT_QUERIES[k][:kind], v)
      ]
    end
  ]

  serialized_queries.merge({
    tracker: URI(serialized_queries[:tracker_url]).host
  })
end

Private Instance Methods

mutate(kase, data) click to toggle source
# File lib/torrent.rb, line 27
def mutate(kase, data)
  case kase
    when :time
      Time.at(data).to_i
    when :ratio
      data.to_f / 1000
    when :int
      data.to_i
    when :bool
      !!data
    else
      data
  end
end