def set_up_counts(site, cids): for cid in cids: key = config.COMMENT_UP_PREFIX.format( sid = site.id, \ cid = cid, \ ) rds.incr(key)
def create(site, tid, fid, uid, ip, content): comment_table = get_table(site.id, site.token, site.node) site.comments = Site.comments + 1 site.save() comment = comment_table.create(tid=tid, fid=fid, uid=uid, ip=ip, content=content) if fid: f_comment = get_comment(site, fid) f_comment.count = comment_table.count + 1 f_comment.save() rds.delete(config.COMMENT_CACHE_PREFIX.format(sid = site.id, id = fid)) rds.incr(config.COMMENT_COUNT_PREFIX.format(sid = site.id, tid = tid)) return comment
def req_rate(req, resp, params): ip = req.get_header('X-Real-IP') if not ip: return key = config.HEAT_KEY.format(ip = ip) current = rds.get(key) if current and int(current) > config.HEAT_MAX: raise falcon.HTTPForbidden(config.HTTP_403, 'ip %s overheat' % ip) if not current: rds.incr(key) rds.expire(key, config.HEAT_TIME) else: rds.incr(key)
def test_get_up_counts(self): r = range(17, 19) for i in r: k = config.COMMENT_UP_PREFIX.format(sid = self.site.id, cid = i) rds.incr(k) response = self.send_request( path = self.path, method = 'GET', data = json.dumps({'cids': r}) ) self.assertEqual(falcon.HTTP_200, self.mock.status) self.assertTrue(is_iter(response)) data = json.loads(''.join(response)) self.assertIsInstance(data, dict) for i in r: self.assertTrue(data.get(str(i))) self.assertEqual(int(data[str(i)]), 1)