MDL-48766 lib: Import MaxMind GeoIP2 PHP API
[moodle.git] / lib / maxmind / MaxMind / Db / Reader / Util.php
1 <?php
3 namespace MaxMind\Db\Reader;
5 use MaxMind\Db\Reader\InvalidDatabaseException;
7 class Util
8 {
9     public static function read($stream, $offset, $numberOfBytes)
10     {
11         if ($numberOfBytes == 0) {
12             return '';
13         }
14         if (fseek($stream, $offset) == 0) {
15             $value = fread($stream, $numberOfBytes);
17             // We check that the number of bytes read is equal to the number
18             // asked for. We use ftell as getting the length of $value is
19             // much slower.
20             if (ftell($stream) - $offset === $numberOfBytes) {
21                 return $value;
22             }
23         }
24         throw new InvalidDatabaseException(
25             "The MaxMind DB file contains bad data"
26         );
27     }
28 }