ikran 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/ikran.gemspec +1 -1
- data/lib/ikran/reader.rb +18 -3
- data/spec/ikran_spec.rb +13 -0
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/ikran.gemspec
CHANGED
data/lib/ikran/reader.rb
CHANGED
@@ -7,7 +7,7 @@ module Ikran
|
|
7
7
|
class Reader
|
8
8
|
attr_accessor :verbose
|
9
9
|
|
10
|
-
COMMANDS = ["exit", "server", "ping", "head", "verbose"]
|
10
|
+
COMMANDS = ["exit", "server", "ping", "head", "verbose", "truncate"]
|
11
11
|
STATUS_REGEXP = /#<Net::HTTP[a-zA-Z]+ (.+) readbody=(?:true|false)>/
|
12
12
|
|
13
13
|
def parse(command)
|
@@ -57,16 +57,30 @@ module Ikran
|
|
57
57
|
return "remote must be set before executing head" unless @server
|
58
58
|
res = Net::HTTP.get_response(URI.parse(@server))
|
59
59
|
if res.inspect =~ STATUS_REGEXP
|
60
|
-
@verbose
|
60
|
+
if @verbose
|
61
|
+
(@size.to_i > 0) ? res.body[0, @size] : res.body
|
62
|
+
else
|
63
|
+
$1
|
64
|
+
end
|
61
65
|
else
|
62
66
|
"invalid response #{res.inspect}"
|
63
67
|
end
|
64
68
|
end
|
65
69
|
|
66
70
|
def verbose
|
71
|
+
# TODO - add option to truncate output to max number of characters
|
67
72
|
"verbose is now " + ((@verbose = !@verbose) ? "ON" : "OFF")
|
68
73
|
end
|
69
74
|
|
75
|
+
def truncate(size = nil)
|
76
|
+
if size
|
77
|
+
@size = (size.to_i == 0 ? nil : size.to_i)
|
78
|
+
@size ? "maximum size set to #{@size}" : "maximum size set to infinite"
|
79
|
+
else
|
80
|
+
@size ? "maximum size is #{@size}" : "maximum size is infinite"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
70
84
|
def exec(command)
|
71
85
|
cmd = parse(command)
|
72
86
|
if cmd
|
@@ -94,6 +108,7 @@ module Ikran
|
|
94
108
|
end
|
95
109
|
end
|
96
110
|
|
97
|
-
aliases :server => [:s, :r, :remote], :head => :h, :ping => :p, :verbose => :v, :exit => :e
|
111
|
+
aliases :server => [:s, :r, :remote], :head => :h, :ping => :p, :verbose => :v, :exit => :e,
|
112
|
+
:truncate => :t
|
98
113
|
end
|
99
114
|
end
|
data/spec/ikran_spec.rb
CHANGED
@@ -63,6 +63,19 @@ describe "Ikran" do
|
|
63
63
|
@reader.exec("head").should == "remote must be set before executing head"
|
64
64
|
end
|
65
65
|
|
66
|
+
it "should have default maximum size set to infinite" do
|
67
|
+
@reader.exec("truncate").should == "maximum size is infinite"
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should return actual maximum size after truncate with parameter" do
|
71
|
+
@reader.exec("truncate 20").should == "maximum size set to 20"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should return actual maximum size after setting it with truncate" do
|
75
|
+
@reader.exec("truncate 20")
|
76
|
+
@reader.exec("truncate").should == "maximum size is 20"
|
77
|
+
end
|
78
|
+
|
66
79
|
context "non verbose mod" do
|
67
80
|
it "should send a request to given url on 'head' command" do
|
68
81
|
@reader = Ikran::Reader.new
|