Class: Druzy::Server::RestrictedFileServer

Inherits:
Object
  • Object
show all
Defined in:
lib/druzy/server.rb

Constant Summary collapse

@@instances =
{}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(port) ⇒ RestrictedFileServer

Returns a new instance of RestrictedFileServer.



14
15
16
17
18
# File 'lib/druzy/server.rb', line 14

def initialize(port)
  @server=WEBrick::HTTPServer.new(:Port => port)
  @files={}
  @id=0
end

Class Method Details

.instance(port) ⇒ Object



20
21
22
23
24
25
# File 'lib/druzy/server.rb', line 20

def self.instance(port)
  if !@@instances.has_key?(port)
    @@instances[port]=new(port)
  end
  @@instances[port]
end

Instance Method Details

#add_file(file) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/druzy/server.rb', line 27

def add_file(file)
  @files[file]=@id
  @server.mount("/"+@id.to_s+"/"+I18n.transliterate(File.basename(file)),WEBrick::HTTPServlet::FileHandler,file)
  @id+=1
  
  if @files.size == 1 
    start_server
  end
end

#get_address(file) ⇒ Object



44
45
46
47
48
49
50
51
52
# File 'lib/druzy/server.rb', line 44

def get_address(file)
  if @files.include?(file)
    ip=Socket.ip_address_list.detect{|intf| intf.ipv4? and !intf.ipv4_loopback? and !intf.ipv4_multicast?}
    return "http://"+ip.ip_address+":"+@server.config[:Port].to_s+"/"+@files[file].to_s+"/"+I18n.transliterate(File.basename(file))
  else
    return nil
  end
  
end

#remove_file(file) ⇒ Object



37
38
39
40
41
42
# File 'lib/druzy/server.rb', line 37

def remove_file(file)
  @files.delete(file)
  if @files.size == 0
    stop_server
  end
end