Class HTAuth::File
In: lib/htauth/file.rb
lib/htauth/file.rb
Parent: Object

Methods

contents   contents   dirty!   dirty!   dirty?   dirty?   load_entries   load_entries   new   new   open   open   save!   save!  

Constants

ALTER = "alter"
CREATE = "create"
STDOUT_FLAG = "-"
ALTER = "alter"
CREATE = "create"
STDOUT_FLAG = "-"

Attributes

file  [R] 
file  [R] 
filename  [R] 
filename  [R] 

Public Class methods

Create or Alter a password file.

Altering a non-existent file is an error. Creating an existing file results in a truncation and overwrite of the existing file.

[Source]

    # File lib/htauth/file.rb, line 34
34:     def initialize(filename, mode = ALTER)
35:       @filename   = filename
36:       @mode       = mode
37:       @dirty      = false
38: 
39:       raise FileAccessError, "Invalid mode #{mode}" unless [ ALTER, CREATE ].include?(mode)
40: 
41:       if (filename != STDOUT_FLAG) and (mode == ALTER) and (not ::File.exist?(filename)) then
42:         raise FileAccessError, "Could not open passwd file #{filename} for reading." 
43:       end
44: 
45:       begin
46:         @entries  = {}
47:         @lines    = []
48:         load_entries if (@mode == ALTER) and (filename != STDOUT_FLAG)
49:       rescue => e
50:         raise FileAccessError, e.message
51:       end
52:     end

Create or Alter a password file.

Altering a non-existent file is an error. Creating an existing file results in a truncation and overwrite of the existing file.

[Source]

    # File lib/htauth/file.rb, line 34
34:     def initialize(filename, mode = ALTER)
35:       @filename   = filename
36:       @mode       = mode
37:       @dirty      = false
38: 
39:       raise FileAccessError, "Invalid mode #{mode}" unless [ ALTER, CREATE ].include?(mode)
40: 
41:       if (filename != STDOUT_FLAG) and (mode == ALTER) and (not ::File.exist?(filename)) then
42:         raise FileAccessError, "Could not open passwd file #{filename} for reading." 
43:       end
44: 
45:       begin
46:         @entries  = {}
47:         @lines    = []
48:         load_entries if (@mode == ALTER) and (filename != STDOUT_FLAG)
49:       rescue => e
50:         raise FileAccessError, e.message
51:       end
52:     end

open a file yielding the the file object for use. The file is saved when the block exists, if the file has had alterations made.

[Source]

    # File lib/htauth/file.rb, line 17
17:       def open(filename, mode = ALTER) 
18:         f = self.new(filename, mode)
19:         if block_given?
20:           begin
21:             yield f
22:           ensure
23:             f.save! if f and f.dirty?
24:           end
25:         end
26:         return f
27:       end

open a file yielding the the file object for use. The file is saved when the block exists, if the file has had alterations made.

[Source]

    # File lib/htauth/file.rb, line 17
17:       def open(filename, mode = ALTER) 
18:         f = self.new(filename, mode)
19:         if block_given?
20:           begin
21:             yield f
22:           ensure
23:             f.save! if f and f.dirty?
24:           end
25:         end
26:         return f
27:       end

Public Instance methods

return what should be the contents of the file

[Source]

    # File lib/htauth/file.rb, line 82
82:     def contents
83:       c = StringIO.new
84:       @lines.each do |l| 
85:         c.puts l if l
86:       end
87:       c.string
88:     end

return what should be the contents of the file

[Source]

    # File lib/htauth/file.rb, line 82
82:     def contents
83:       c = StringIO.new
84:       @lines.each do |l| 
85:         c.puts l if l
86:       end
87:       c.string
88:     end

mark the file as dirty

[Source]

    # File lib/htauth/file.rb, line 60
60:     def dirty!
61:       @dirty = true
62:     end

mark the file as dirty

[Source]

    # File lib/htauth/file.rb, line 60
60:     def dirty!
61:       @dirty = true
62:     end

return whether or not an alteration to the file has happened

[Source]

    # File lib/htauth/file.rb, line 55
55:     def dirty?
56:       @dirty
57:     end

return whether or not an alteration to the file has happened

[Source]

    # File lib/htauth/file.rb, line 55
55:     def dirty?
56:       @dirty
57:     end

load up entries, keep items in the same order and do not trim out any items in the file, like commented out lines or empty space

[Source]

     # File lib/htauth/file.rb, line 92
 92:     def load_entries
 93:       @lines   = IO.readlines(@filename)
 94:       @lines.each_with_index do |line,idx|
 95:         if entry_klass.is_entry?(line) then
 96:           entry = entry_klass.from_line(line)
 97:           v     = { 'entry' => entry, 'line_index' => idx }
 98:           @entries[entry.key] = v
 99:         end
100:       end
101:     end

load up entries, keep items in the same order and do not trim out any items in the file, like commented out lines or empty space

[Source]

     # File lib/htauth/file.rb, line 92
 92:     def load_entries
 93:       @lines   = IO.readlines(@filename)
 94:       @lines.each_with_index do |line,idx|
 95:         if entry_klass.is_entry?(line) then
 96:           entry = entry_klass.from_line(line)
 97:           v     = { 'entry' => entry, 'line_index' => idx }
 98:           @entries[entry.key] = v
 99:         end
100:       end
101:     end

update the original file with the new contents

[Source]

    # File lib/htauth/file.rb, line 65
65:     def save!
66:       begin
67:         case filename
68:         when STDOUT_FLAG
69:           $stdout.write(contents)
70:         else
71:           ::File.open(@filename,"w") do |f|
72:             f.write(contents)
73:           end
74:         end
75:         @dirty = false
76:       rescue => e
77:         raise FileAccessError, "Error saving file #{@filename} : #{e.message}"
78:       end
79:     end

update the original file with the new contents

[Source]

    # File lib/htauth/file.rb, line 65
65:     def save!
66:       begin
67:         case filename
68:         when STDOUT_FLAG
69:           $stdout.write(contents)
70:         else
71:           ::File.open(@filename,"w") do |f|
72:             f.write(contents)
73:           end
74:         end
75:         @dirty = false
76:       rescue => e
77:         raise FileAccessError, "Error saving file #{@filename} : #{e.message}"
78:       end
79:     end

[Validate]