/usr/lib/ruby/1.8/mechanize/file.rb is in libwww-mechanize-ruby1.8 1.0.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | class Mechanize
# = Synopsis
# This is the default (and base) class for the Pluggable Parsers. If
# Mechanize cannot find an appropriate class to use for the content type,
# this class will be used. For example, if you download a JPG, Mechanize
# will not know how to parse it, so this class will be instantiated.
#
# This is a good class to use as the base class for building your own
# pluggable parsers.
#
# == Example
# require 'rubygems'
# require 'mechanize'
#
# agent = Mechanize.new
# agent.get('http://example.com/foo.jpg').class #=> Mechanize::File
#
class File
attr_accessor :uri, :response, :body, :code, :filename
alias :header :response
alias :content :body
def initialize(uri=nil, response=nil, body=nil, code=nil)
@uri, @body, @code = uri, body, code
@response = Headers.new
# Copy the headers in to a hash to prevent memory leaks
if response
response.each { |k,v|
@response[k] = v
}
end
@filename = 'index.html'
# Set the filename
if disposition = @response['content-disposition']
disposition.split(/;\s*/).each do |pair|
k,v = pair.split(/=/, 2)
@filename = v if k && k.downcase == 'filename'
end
else
if @uri
@filename = @uri.path.split(/\//).last || 'index.html'
@filename << ".html" unless @filename =~ /\./
end
end
yield self if block_given?
end
# Use this method to save the content of this object to filename
def save_as(filename = nil)
if filename.nil?
filename = @filename
number = 1
while(::File.exists?(filename))
filename = "#{@filename}.#{number}"
number += 1
end
end
::File::open(filename, "wb") { |f|
f.write body
}
end
alias :save :save_as
end
end
|