Class: UWA::Widget::Files
- Inherits:
-
Handler
- Object
- Handler
- UWA::Widget::Files
- Defined in:
- lib/uwa_files/config.rb,
lib/uwa_files/widget.rb
Constant Summary collapse
- NAME =
'uwa_files'- VERSION =
'0.1'- COPYRIGHT =
'Copyright (C) 2007 Florent Solt'- DESC =
'UWA Files widget'- AUTHOR =
'Florent Solt'- EMAIL =
'[email protected]'- HOMEPAGE =
'http://gnetvibes.rubyforge.org'- LICENSE =
'BSD'
Instance Method Summary collapse
- #delete ⇒ Object
- #download ⇒ Object
- #files ⇒ Object
-
#initialize ⇒ Files
constructor
A new instance of Files.
- #login ⇒ Object
- #login_token ⇒ Object
- #rename ⇒ Object
- #upload ⇒ Object
Constructor Details
#initialize ⇒ Files
Returns a new instance of Files.
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/uwa_files/widget.rb', line 6 def initialize super @author = AUTHOR @title = 'My Files' @icon = 'http://www.netvibes.com/img/icons/folder.gif' @tokens = {} @preferences << {:name => :login, :type => :text, :label => 'Login'} @preferences << {:name => :password, :type => :text, :label => 'Password'} @start = '/tmp' @users = {} end |
Instance Method Details
#delete ⇒ Object
81 82 83 84 85 |
# File 'lib/uwa_files/widget.rb', line 81 def delete return unless auth? target = @token[:files][query['target']] FileUtils.rm_rf(target) end |
#download ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/uwa_files/widget.rb', line 60 def download return unless auth? target = @token[:files][query['target']] unless target.nil? send_file(target) else response.status = '403' self << 'Forbidden' end @token[:files].delete(query['target']) # Security: remove used file token end |
#files ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/uwa_files/widget.rb', line 36 def files return unless auth? answer = {:type => nil, :data => []} target = @token[:files][query['target']] || @start if File.directory?(target) @token[:files] = {} # Security: remove all unused tokens answer[:type] = :dir files = Dir[File.join(target, '*')].sort files.unshift(File.join(target, '..')) files.unshift(File.join(target, '.')) files.each do |f| ftoken = new_token @token[:files][ftoken] = File.(f) answer[:data] << { :name => File.basename(f), :type => File.directory?(f) ? :dir : :file, :token => ftoken } answer[:data].last[:path] = File.(f) if f[-1] == 46 # the dot dir end end self << JSON.unparse(answer) end |
#login ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/uwa_files/widget.rb', line 24 def login token = query['token'] login = @tokens[token][:login] if Digest::SHA1.new(token + @users[login].to_s).hexdigest == query['digest'] UWA::Server.log(:info, "Login successful for \"#{login}\"") self << token @tokens[token][:auth] = true else UWA::Server.log(:warning, "Login failed for \"#{login}\"") end end |
#login_token ⇒ Object
18 19 20 21 22 |
# File 'lib/uwa_files/widget.rb', line 18 def login_token token = new_token @tokens[token] = {:login => query['login'], :auth => false, :files => {}} self << token end |
#rename ⇒ Object
87 88 89 90 91 92 |
# File 'lib/uwa_files/widget.rb', line 87 def rename return unless auth? target = @token[:files][query['target']] new = query['new'] File.rename(target, File.join(File.dirname(target), File.basename(new))) end |
#upload ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/uwa_files/widget.rb', line 72 def upload return unless auth? target = @token[:files][query['target']] File.open(File.join(target, query['file']['filename'] ), 'w') do |fd| fd.write query['file']['tempfile'].read end self << "File #{query['file']['filename'].inspect} uploaded" end |