all_seeing_eye 0.0.16 → 0.0.17
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/all_seeing_eye.gemspec +1 -1
- data/lib/all_seeing_eye/model.rb +18 -13
- data/lib/all_seeing_eye/server/views/field.erb +11 -3
- data/lib/all_seeing_eye/server.rb +8 -7
- data/test/model_test.rb +29 -7
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.17
|
data/all_seeing_eye.gemspec
CHANGED
data/lib/all_seeing_eye/model.rb
CHANGED
@@ -47,12 +47,12 @@ class AllSeeingEye::Model
|
|
47
47
|
all
|
48
48
|
end
|
49
49
|
|
50
|
-
def self.count
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
AllSeeingEye.redis.
|
50
|
+
def self.count
|
51
|
+
AllSeeingEye.redis.scard("allseeingeye:#{self.model_name}:all").to_i
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.count_by_field(field, options = {})
|
55
|
+
AllSeeingEye.redis.llen("allseeingeye:#{self.model_name}:fields:#{field}:#{options[:value]}").to_i
|
56
56
|
end
|
57
57
|
|
58
58
|
def self.find_by_field(field, options = {})
|
@@ -70,16 +70,21 @@ class AllSeeingEye::Model
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
def self.
|
74
|
-
options = {:start => '-inf', :stop => '+inf', :
|
73
|
+
def self.list_by_field(field, options = {})
|
74
|
+
options = {:start => '-inf', :stop => '+inf', :page => nil}.merge(options)
|
75
|
+
limit = if options[:page]
|
76
|
+
[(options[:page] - 1) * 10, 10]
|
77
|
+
else
|
78
|
+
nil
|
79
|
+
end
|
75
80
|
|
76
81
|
raw_list, needs_pruning = if options[:value]
|
77
|
-
[AllSeeingEye.redis.zrangebyscore("allseeingeye:#{self.model_name}:fields:#{field}:#{options[:value]}:count", '-inf', '+inf', :with_scores => true), true]
|
82
|
+
[AllSeeingEye.redis.zrangebyscore("allseeingeye:#{self.model_name}:fields:#{field}:#{options[:value]}:count", '-inf', '+inf', :with_scores => true, :limit => limit), true]
|
78
83
|
else
|
79
84
|
if AllSeeingEye.redis.exists("allseeingeye:#{self.model_name}:fields:#{field}:count")
|
80
|
-
[AllSeeingEye.redis.zrangebyscore("allseeingeye:#{self.model_name}:fields:#{field}:count", '-inf', '+inf', :with_scores => true), true]
|
85
|
+
[AllSeeingEye.redis.zrangebyscore("allseeingeye:#{self.model_name}:fields:#{field}:count", '-inf', '+inf', :with_scores => true, :limit => limit), true]
|
81
86
|
else
|
82
|
-
[AllSeeingEye.redis.zrangebyscore("allseeingeye:#{self.model_name}:fields:#{field}", options[:start], options[:stop], :with_scores => true), false]
|
87
|
+
[AllSeeingEye.redis.zrangebyscore("allseeingeye:#{self.model_name}:fields:#{field}", options[:start], options[:stop], :with_scores => true, :limit => limit), false]
|
83
88
|
end
|
84
89
|
end
|
85
90
|
|
@@ -111,13 +116,13 @@ class AllSeeingEye::Model
|
|
111
116
|
start = Chronic.parse(query.split(' to ').first, :context => :past).to_i
|
112
117
|
stop = Chronic.parse(query.split(' to ').last, :context => :past).to_i
|
113
118
|
if options[:count]
|
114
|
-
return self.
|
119
|
+
return self.list_by_field('created_at', :start => start, :stop => stop)
|
115
120
|
else
|
116
121
|
return AllSeeingEye.redis.zrangebyscore("allseeingeye:#{self.model_name}:fields:created_at", start, stop, :with_scores => false).collect{|id| self.find(id)}
|
117
122
|
end
|
118
123
|
elsif query =~ /^(#{self.field_names.join('|')}):(.*)$/
|
119
124
|
if options[:count]
|
120
|
-
self.
|
125
|
+
self.list_by_field($1, :value => $2)
|
121
126
|
else
|
122
127
|
self.find_by_field($1, :value => $2)
|
123
128
|
end
|
@@ -1,12 +1,20 @@
|
|
1
1
|
<%= partial(:left) %>
|
2
2
|
|
3
|
-
<%
|
3
|
+
<%
|
4
|
+
if @count
|
5
|
+
count = @count
|
6
|
+
paged_requests = @requests
|
7
|
+
else
|
8
|
+
count = @requests.size
|
9
|
+
paged_requests = @requests[((@page - 1) * 10)..(@page * 10)]
|
10
|
+
end
|
11
|
+
%>
|
4
12
|
|
5
13
|
<div id='right'>
|
6
14
|
<% if @query %>
|
7
15
|
<h1>Search » <%= humanize @query %> » <%= humanize @field %></h1>
|
8
16
|
<% elsif @view %>
|
9
|
-
<h1><a href='<%=u "/fields
|
17
|
+
<h1><a href='<%=u "/fields/#{@field}" %>'><%= humanize @field %></a> » <%= humanize @id %> » <%= humanize @view %></h1>
|
10
18
|
<% else %>
|
11
19
|
<h1><%= humanize @field %></h1>
|
12
20
|
<% end %>
|
@@ -18,7 +26,7 @@
|
|
18
26
|
|
19
27
|
<div id='pager'>
|
20
28
|
<% if @page != 1 %><a href='<%= u "#{current_page}?page=#{@page - 1}"%>' id='previous'>« previous</a><% end %>
|
21
|
-
<% if
|
29
|
+
<% if count > @page * 10 %><a href='<%= u "#{current_page}?page=#{@page + 1}"%>' id='next'>next »</a><% end %>
|
22
30
|
</div>
|
23
31
|
|
24
32
|
<script type='text/javascript'>
|
@@ -24,14 +24,14 @@ class AllSeeingEye
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def url_path(*path_parts)
|
27
|
-
path_parts = path_parts.collect{|p| p.gsub(path_prefix, '')}
|
27
|
+
path_parts = path_parts.collect{|p| p.to_s.gsub(path_prefix, '')}
|
28
28
|
path = [ path_prefix, path_parts ].compact.join("/")
|
29
|
-
('/' + path).squeeze('/')
|
29
|
+
('/' + path).squeeze('/')
|
30
30
|
end
|
31
31
|
alias_method :u, :url_path
|
32
32
|
|
33
33
|
def path_prefix
|
34
|
-
ENV['PATH_PREFIX']
|
34
|
+
ENV['PATH_PREFIX'] || ''
|
35
35
|
end
|
36
36
|
|
37
37
|
def class_if_current(path = '')
|
@@ -67,7 +67,6 @@ class AllSeeingEye
|
|
67
67
|
|
68
68
|
def show(page, layout = true)
|
69
69
|
response["Cache-Control"] = "max-age=0, private, must-revalidate"
|
70
|
-
@page = params[:page].blank? ? 1 : params[:page].to_i if page == :field || page == 'field'
|
71
70
|
erb page.to_sym, {:layout => layout}
|
72
71
|
end
|
73
72
|
|
@@ -76,7 +75,7 @@ class AllSeeingEye
|
|
76
75
|
end
|
77
76
|
|
78
77
|
get '/total' do
|
79
|
-
@counts = AllSeeingEye::Request.
|
78
|
+
@counts = AllSeeingEye::Request.list_by_field('created_at', :start => (DateTime.now - 2.days).to_i, :stop => DateTime.now.to_i)
|
80
79
|
show :total
|
81
80
|
end
|
82
81
|
|
@@ -97,8 +96,10 @@ class AllSeeingEye
|
|
97
96
|
|
98
97
|
AllSeeingEye::Request.field_keys.each do |field|
|
99
98
|
get "/fields/#{field}" do
|
99
|
+
@page = params[:page].blank? ? 1 : params[:page].to_i
|
100
100
|
@field = field
|
101
|
-
@
|
101
|
+
@count = AllSeeingEye::Request.count
|
102
|
+
@requests = AllSeeingEye::Request.list_by_field(@field, :page => @page)
|
102
103
|
show :field
|
103
104
|
end
|
104
105
|
|
@@ -128,7 +129,7 @@ class AllSeeingEye
|
|
128
129
|
get %r{/fields/#{field}/(.*)$} do
|
129
130
|
@field = field
|
130
131
|
@id = params[:captures].first
|
131
|
-
@counts = AllSeeingEye::Request.
|
132
|
+
@counts = AllSeeingEye::Request.list_by_field(@field, :value => @id)
|
132
133
|
show :total
|
133
134
|
end
|
134
135
|
end
|
data/test/model_test.rb
CHANGED
@@ -176,10 +176,6 @@ context 'class methods with setup' do
|
|
176
176
|
end
|
177
177
|
|
178
178
|
test 'count model objects' do
|
179
|
-
assert_equal 2, AllSeeingEye::Model.count(:start => @time - 11 * 60, :stop => @time - 4 * 60)
|
180
|
-
assert_equal 2, AllSeeingEye::Model.count(:start => @time + 2 * 60, :stop => @time + 2 * 60)
|
181
|
-
assert_equal 4, AllSeeingEye::Model.count(:stop => @time)
|
182
|
-
assert_equal 2, AllSeeingEye::Model.count(:start => @time)
|
183
179
|
assert_equal 6, AllSeeingEye::Model.count
|
184
180
|
end
|
185
181
|
|
@@ -192,7 +188,7 @@ context 'class methods with setup' do
|
|
192
188
|
end
|
193
189
|
|
194
190
|
test 'return count in a field' do
|
195
|
-
counts = AllSeeingEye::Model.
|
191
|
+
counts = AllSeeingEye::Model.list_by_field('uri')
|
196
192
|
|
197
193
|
assert_equal '/test/', counts.first.first
|
198
194
|
assert_equal 5, counts.first.last
|
@@ -247,7 +243,7 @@ context 'many objects' do
|
|
247
243
|
end
|
248
244
|
|
249
245
|
test 'get the created count' do
|
250
|
-
counts = AllSeeingEye::Model.
|
246
|
+
counts = AllSeeingEye::Model.list_by_field('created_at')
|
251
247
|
|
252
248
|
assert_equal counts, AllSeeingEye::Model.search('ten years ago to one year from now', :count => true)
|
253
249
|
assert_equal (@obj999.created_at.to_i / 60) * 60, counts.first.first.to_i
|
@@ -256,10 +252,36 @@ context 'many objects' do
|
|
256
252
|
end
|
257
253
|
|
258
254
|
test 'get the created count for a value' do
|
259
|
-
counts = AllSeeingEye::Model.
|
255
|
+
counts = AllSeeingEye::Model.list_by_field('ip', :value => '192.168.0.1')
|
260
256
|
|
261
257
|
assert_equal 1000, counts.inject(0) {|sum, k| sum + k.last}
|
262
258
|
end
|
259
|
+
|
260
|
+
test 'get only the first page of the count' do
|
261
|
+
counts = AllSeeingEye::Model.list_by_field('created_at', :page => 1)
|
262
|
+
|
263
|
+
assert_equal 10, counts.size
|
264
|
+
assert_equal (@obj999.created_at.to_i / 60) * 60, counts.first.first.to_i
|
265
|
+
assert_equal (@obj990.created_at.to_i / 60) * 60, counts.last.first.to_i
|
266
|
+
end
|
267
|
+
|
268
|
+
test 'get only the second page of the count' do
|
269
|
+
counts = AllSeeingEye::Model.list_by_field('created_at', :page => 2)
|
270
|
+
|
271
|
+
assert_equal 10, counts.size
|
272
|
+
assert_equal (@obj989.created_at.to_i / 60) * 60, counts.first.first.to_i
|
273
|
+
assert_equal (@obj980.created_at.to_i / 60) * 60, counts.last.first.to_i
|
274
|
+
end
|
275
|
+
|
276
|
+
test 'get only the first page of the count with a value' do
|
277
|
+
counts = AllSeeingEye::Model.list_by_field('ip', :value => '192.168.0.1', :page => 1)
|
278
|
+
|
279
|
+
assert_equal 10, counts.size
|
280
|
+
end
|
281
|
+
|
282
|
+
test 'return the count for a field with a given value' do
|
283
|
+
assert_equal 1000, AllSeeingEye::Model.count_by_field('ip', :value => '192.168.0.1')
|
284
|
+
end
|
263
285
|
end
|
264
286
|
|
265
287
|
context 'instance methods' do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: all_seeing_eye
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 17
|
10
|
+
version: 0.0.17
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Josh Symonds
|