OSDN Git Service

[add]ダンプ表示用コード
[hengband/web.git] / dump_file.inc
1 <?php
2 class DumpFile
3 {
4     public function __construct($score_id) {
5         $this->score_id = $score_id;
6     }
7
8     public function show($dir, $ext, $content_type)
9     {
10         $dirname = sprintf("%s/%d", $dir, floor($this->score_id / 1000) * 1000);
11         $filename = sprintf("%s/%d.%s.gz", $dirname, $this->score_id, $ext);
12
13         if (!file_exists($filename)) {
14             http_response_code(404);
15             return;
16         }
17
18         $content_encoding = self::get_content_encoding();
19
20         header("Content-Type: ".$content_type);
21         if ($content_encoding !== FALSE) {
22             header("Content-Encoding: ".$content_encoding);
23             readfile($filename);
24         } else {
25             readgzfile($filename);
26         }
27     }
28
29     private static function browser_accept_encodings()
30     {
31         if (!isset($_SERVER["HTTP_ACCEPT_ENCODING"])) return [];
32
33         return array_map('trim', explode(",", $_SERVER["HTTP_ACCEPT_ENCODING"]));
34     }
35
36
37     private static function get_content_encoding()
38     {
39         $supported_gzip_encodings = array_intersect(
40             self::browser_accept_encodings(),
41             ['gzip', 'x-gzip']);
42
43         return count($supported_gzip_encodings) > 0 ?
44             $supported_gzip_encodings[0] : FALSE;
45     }
46
47 }