Class: Ikran::Reader
- Inherits:
-
Object
- Object
- Ikran::Reader
- Defined in:
- lib/ikran/reader.rb
Constant Summary collapse
- COMMANDS =
["exit", "server", "ping", "head", "verbose", "truncate"]
- STATUS_REGEXP =
/#<Net::HTTP[a-zA-Z]+ (.+) readbody=(?:true|false)>/
Instance Attribute Summary collapse
-
#verbose ⇒ Object
Returns the value of attribute verbose.
Class Method Summary collapse
Instance Method Summary collapse
- #exec(command) ⇒ Object
- #exit ⇒ Object
- #get_url(url) ⇒ Object
- #head ⇒ Object
- #http_ping(url) ⇒ Object
- #parse(command) ⇒ Object
- #ping ⇒ Object
- #run ⇒ Object
- #server(val = nil) ⇒ Object
- #truncate(size = nil) ⇒ Object
Instance Attribute Details
#verbose ⇒ Object
Returns the value of attribute verbose.
8 9 10 |
# File 'lib/ikran/reader.rb', line 8 def verbose @verbose end |
Class Method Details
.aliases(opts) ⇒ Object
102 103 104 105 106 107 108 109 |
# File 'lib/ikran/reader.rb', line 102 def self.aliases(opts) opts.each do |original, aliased| [*aliased].each do |a| alias_method a, original COMMANDS << a.to_s end end end |
Instance Method Details
#exec(command) ⇒ Object
84 85 86 87 88 89 90 91 |
# File 'lib/ikran/reader.rb', line 84 def exec(command) cmd = parse(command) if cmd instance_eval(cmd) else "command #{command} doesn't exist" end end |
#exit ⇒ Object
20 21 22 23 |
# File 'lib/ikran/reader.rb', line 20 def exit @running = false "exiting ..." end |
#get_url(url) ⇒ Object
52 53 54 |
# File 'lib/ikran/reader.rb', line 52 def get_url(url) Net::HTTP.get_response(URI.parse(url)).inspect =~ STATUS_REGEXP end |
#head ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/ikran/reader.rb', line 56 def head return "remote must be set before executing head" unless @server res = Net::HTTP.get_response(URI.parse(@server)) if res.inspect =~ STATUS_REGEXP if @verbose (@size.to_i > 0) ? res.body[0, @size] : res.body else $1 end else "invalid response #{res.inspect}" end end |
#http_ping(url) ⇒ Object
48 49 50 |
# File 'lib/ikran/reader.rb', line 48 def http_ping(url) get_url(url).to_i < 400 end |
#parse(command) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/ikran/reader.rb', line 13 def parse(command) cmd = command.split(' ') if COMMANDS.include? cmd.first cmd.length > 1 ? ("#{cmd[0]} '#{cmd[1]}'") : cmd.first end end |
#ping ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/ikran/reader.rb', line 38 def ping if not @server "remote must be set before executing ping without parameters" elsif http_ping(@server) "#{@server} is alive" else "#{@server} is unreachable" end end |
#run ⇒ Object
93 94 95 96 97 98 99 100 |
# File 'lib/ikran/reader.rb', line 93 def run @running = true while @running print ">> " line = gets.chomp! puts exec(line) end end |
#server(val = nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/ikran/reader.rb', line 25 def server(val = nil) if val begin @server = Addressable::URI.heuristic_parse(val).to_s "remote set to #{@server}" rescue Addressable::URI::InvalidURIError => e "invalid url" end else @server ? "current remote is #{@server}" : "remote is not set" end end |
#truncate(size = nil) ⇒ Object
75 76 77 78 79 80 81 82 |
# File 'lib/ikran/reader.rb', line 75 def truncate(size = nil) if size @size = (size.to_i == 0 ? nil : size.to_i) @size ? "maximum size set to #{@size}" : "maximum size set to infinite" else @size ? "maximum size is #{@size}" : "maximum size is infinite" end end |