class Nzb

Attributes

nzb_filename[R]
segments[R]

Public Class Methods

new(filename, prefix='') click to toggle source

we accept basename and prefix, combine them and add suffix “.nzb”

# File lib/nzb.rb, line 43
def initialize(filename, prefix='')
  @segments = []
  @nzb_filename = prefix + filename + ".nzb"
end

Public Instance Methods

save_segment(size, number, msgid) click to toggle source

same as write_segment only saves it into an array, to be used with write_segments

# File lib/nzb.rb, line 109
def save_segment(size, number, msgid)
  @segments[number] = "<segment bytes=\"#{size}\" number=\"#{number}\">#{msgid}</segment>"
end
write_file_header(poster, subject, groups, date=nil) click to toggle source

date must be in unix timestamp or nil(it isn’t checked anyway, so whatever)

# File lib/nzb.rb, line 67
def write_file_header(poster, subject, groups, date=nil)
  begin
    f = File.open(@nzb_filename, "a:ISO-8859-1")
  rescue
    raise "Unable to open #{@nzb_filename} for writing."
  end
  from = CGI.escapeHTML(poster)
  subj = CGI.escapeHTML(subject)
  date = Time.now.to_i if date.nil?
  f.puts "<file poster=\"#{from}\" date=\"#{date}\" subject=\"#{subj}\">"
  f.puts '<groups>'
  groups.split(', ').each do |group|
    f.puts '<group>' + group.strip + '</group>'
  end
  f.puts '</groups>'
  f.puts '<segments>'
  f.close
end
write_header(name=nil) click to toggle source

nzb header

# File lib/nzb.rb, line 49
def write_header(name=nil)
  begin
    f = File.open(@nzb_filename, "w+:ISO-8859-1")
  rescue
    raise "Unable to open #{@nzb_filename} for writing."
  end
  f.puts '<?xml version="1.0" encoding="iso-8859-1" ?>'
  f.puts '<!DOCTYPE nzb PUBLIC "-//newzBin//DTD NZB 1.0//EN" "http://www.nzbindex.com/nzb-1.0.dtd">'
  f.puts '<nzb xmlns="http://www.newzbin.com/DTD/2003/nzb">'
  if !name.nil?
    f.puts '  <head>'
    f.puts '    <meta type="title">' + name + '</meta>'
    f.puts '  </head>'
  end
  f.close
end
write_segment(size, number, msgid) click to toggle source
# File lib/nzb.rb, line 98
def write_segment(size, number, msgid)
  begin
    f = File.open(@nzb_filename, "a:ISO-8859-1")
  rescue
    raise "Unable to open #{@nzb_filename} for writing."
  end
  f.puts "<segment bytes=\"#{size}\" number=\"#{number}\">#{msgid}</segment>"
  f.close
end
write_segments() click to toggle source
# File lib/nzb.rb, line 113
def write_segments
  begin
    f = File.open(@nzb_filename, "a:ISO-8859-1")
  rescue
    raise "Unable to open #{@nzb_filename} for writing."
  end
  @segments.each do |segment|
    next if segment.nil?
    f.puts segment
  end
  f.close
end