1
0
mirror of https://github.com/beestat/app.git synced 2025-05-24 02:14:03 -04:00
beestat/api/cora/api_log.php
Jon Ziebell 99bed767b3 Fixed API log no longer logging due to previous commit
089cbb69e3c96e12da04f8db724e70116373ad6d
2021-02-26 18:48:09 -05:00

45 lines
1.1 KiB
PHP

<?php
namespace cora;
/**
* Stores a log of API requests and responses. Intended usage is to process
* the request to the end (exception or not) and then log it.
*
* @author Jon Ziebell
*/
final class api_log extends crud {
/**
* Get the number of requests since a given timestamp for a given IP
* address. Handy for rate limiting.
*
* @param string $ip_address The IP to look at.
* @param int $timestamp The timestamp to check from.
*
* @return int The number of requests on or after $timestamp.
*/
public function get_number_requests_since($ip_address, $timestamp) {
$ip_address_escaped = $this->database->escape(ip2long($ip_address));
$timestamp_escaped = $this->database->escape(
date('Y-m-d H:i:s', $timestamp)
);
$query = '
select
count(*) `number_requests_since`
from
`api_log`
where
`ip_address` = ' . $ip_address_escaped . '
and `timestamp` >= ' . $timestamp_escaped . '
';
$result = $this->database->query($query);
$row = $result->fetch_assoc();
return $row['number_requests_since'];
}
}