add multipart/singlepart/uuencoded checks
simplify stuff
This commit is contained in:
parent
4da31a02dd
commit
773658d7ab
1 changed files with 25 additions and 11 deletions
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
require 'set/intspan'
|
require 'set/intspan'
|
||||||
require 'net/nntp'
|
require 'net/nntp'
|
||||||
|
require 'tempfile'
|
||||||
|
|
||||||
class Article
|
class Article
|
||||||
|
|
||||||
|
|
@ -65,7 +66,7 @@ end
|
||||||
|
|
||||||
def get_group_body(subj)
|
def get_group_body(subj)
|
||||||
result = []
|
result = []
|
||||||
for i in @groups[subj]["messages"][1..@groups[subj]["messages"].length]
|
for i in @groups[subj]["messages"][0..@groups[subj]["messages"].length]
|
||||||
begin
|
begin
|
||||||
resp, id, messid, list = @nntp.body(i)
|
resp, id, messid, list = @nntp.body(i)
|
||||||
rescue Net::NNTPReplyError
|
rescue Net::NNTPReplyError
|
||||||
|
|
@ -100,9 +101,7 @@ def get_group_body_rest(subj, file=nil)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
if file
|
if file
|
||||||
for line in list
|
list.collect{|line| file.print "#{line}\n"}
|
||||||
file.print "#{line}\n"
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
result += list
|
result += list
|
||||||
end
|
end
|
||||||
|
|
@ -130,6 +129,14 @@ def group_complete(subj)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def group_singlepart(subj)
|
||||||
|
@groups[subj]["total"].to_i == 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def group_multipart(subj)
|
||||||
|
@groups[subj]["total"].to_i > 1
|
||||||
|
end
|
||||||
|
|
||||||
def get_messids
|
def get_messids
|
||||||
return @messids
|
return @messids
|
||||||
end
|
end
|
||||||
|
|
@ -302,9 +309,7 @@ def _uudecode_array(data)
|
||||||
mark = lines/100
|
mark = lines/100
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
print "data.length #{data.length}\n"
|
|
||||||
while (i < data.length)
|
while (i < data.length)
|
||||||
print "i #{i}\n"
|
|
||||||
if data[i] =~ /^begin(.*)/
|
if data[i] =~ /^begin(.*)/
|
||||||
m = $1
|
m = $1
|
||||||
print "beginning matched; rest: #{m}\n" if Debuglevel > 0
|
print "beginning matched; rest: #{m}\n" if Debuglevel > 0
|
||||||
|
|
@ -350,16 +355,17 @@ def _uudecode_array(data)
|
||||||
return mode, file, decode
|
return mode, file, decode
|
||||||
end
|
end
|
||||||
|
|
||||||
def uudecode_group(subj, file=nil, outfile=nil)
|
#def uudecode_group(subj, file=nil, outfile=nil)
|
||||||
|
def uudecode_group(subj, tempdir=nil)
|
||||||
group_subjects unless @grouped
|
group_subjects unless @grouped
|
||||||
|
|
||||||
body = get_group_body_first(subj)
|
body = get_group_body_first(subj)
|
||||||
if body.to_s =~ /begin/
|
if body.to_s =~ /begin/
|
||||||
print "uuencoded!\n" if Debuglevel > 0
|
print "uuencoded!\n" if Debuglevel > 0
|
||||||
if (file and outfile)
|
#if (file and outfile)
|
||||||
for i in body
|
if (tempdir != nil)
|
||||||
file.print "#{i}\n"
|
file = Tempfile.new("#{tempdir}/riptmp")
|
||||||
end
|
body.collect{|i| file.print "#{i}\n"}
|
||||||
get_group_body_rest(subj, file)
|
get_group_body_rest(subj, file)
|
||||||
mode, filename, result = uudecode(file, outfile)
|
mode, filename, result = uudecode(file, outfile)
|
||||||
else
|
else
|
||||||
|
|
@ -373,6 +379,14 @@ def uudecode_group(subj, file=nil, outfile=nil)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def is_uuencoded(data)
|
||||||
|
if data.to_s =~ /begin\s+\d+?\s+.*?\S?\s*\Z/
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
###############################################################
|
###############################################################
|
||||||
|
|
||||||
def subject_sort
|
def subject_sort
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue