geoip-api
Version:
A library to ask several online geo-ip services for ip geo information
45 lines (31 loc) • 827 B
text/coffeescript
_ = require 'lodash'
class Cache
constructor: (options) ->
= _.defaults options,
max: 500
= {}
= {}
set: (data) ->
data.info.fromCache = true
# [data.info.ip] = [data.info.ip] or []
# [data.info.ip].push(data)
# [data.info.ip] = _.sortByOrder [data.info.ip], ['rating', 'time'], [true, false]
[data.info.ip] = data
get: (ip, callback) ->
entry = [ip]
if not entry
return callback(null, null)
[ip] = Date.now()
callback(null, entry)
manage: () ->
if .length >= .max
oldestIp = null
oldestAccess = Date.now()
for ip, lastAccess of
if lastAccess < oldestAccess
oldestAccess = lastAccess
oldestIp = ip
delete [ip]
delete [ip]
module.exports = Cache