Class: IPRange::Range
- Inherits:
-
Object
- Object
- IPRange::Range
- Defined in:
- lib/iprange.rb
Instance Method Summary collapse
- #add(range, metadata = {}) ⇒ Object
- #find(ip) ⇒ Object
- #find_all(ip) ⇒ Object
-
#initialize(redis_config = {}, redis_key = "ip_table") ⇒ Range
constructor
A new instance of Range.
- #metadata_key(range) ⇒ Object
- #remove(range) ⇒ Object
Constructor Details
#initialize(redis_config = {}, redis_key = "ip_table") ⇒ Range
Returns a new instance of Range.
7 8 9 10 |
# File 'lib/iprange.rb', line 7 def initialize(redis_config={}, redis_key="ip_table") @redis = Redis.new redis_config @redis_key = redis_key end |
Instance Method Details
#add(range, metadata = {}) ⇒ Object
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/iprange.rb', line 19 def add(range, ={}) ipaddr_range = IPAddr.new(range).to_range range = "#{[:key]}:#{range}" if [:key] hash = (range) @redis.pipelined do @redis.iadd(@redis_key, ipaddr_range.first.to_i, ipaddr_range.last.to_i, range) @redis.mapped_hmset(hash, ) unless .empty? end end |
#find(ip) ⇒ Object
30 31 32 |
# File 'lib/iprange.rb', line 30 def find(ip) find_all(ip).first end |
#find_all(ip) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/iprange.rb', line 34 def find_all(ip) ipaddr = IPAddr.new(ip) ranges = @redis.istab(@redis_key, ipaddr.to_i) ranges.map do |range| = @redis.hgetall((range)) {range: range}.merge() end end |
#metadata_key(range) ⇒ Object
43 44 45 |
# File 'lib/iprange.rb', line 43 def (range) "#{@redis_key}:#{range}" end |
#remove(range) ⇒ Object
12 13 14 15 16 17 |
# File 'lib/iprange.rb', line 12 def remove(range) @redis.pipelined do @redis.irem(@redis_key, range) @redis.del((range)) end end |