Showing lists of flaky tests for a builder takes too long
[WebKit-https.git] / Websites / test-results / include / json-shared.php
1 <?php
2
3 require_once('../include/db.php');
4
5 header('Content-type: application/json');
6 $maxage = config('jsonCacheMaxAge');
7 header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $maxage) . ' GMT');
8 header("Cache-Control: maxage=$maxage");
9
10 function exit_with_error($status, $details = array()) {
11     $details['status'] = $status;
12     echo json_encode($details);
13     exit(1);
14 }
15
16 function echo_success($details = array()) {
17     $details['status'] = 'OK';
18     echo json_encode($details);
19 }
20
21 function exit_with_success($details = array()) {
22     echo_success($details);
23     exit(0);
24 }
25
26 function connect() {
27     $db = new Database;
28     if (!$db->connect())
29         exit_with_error('DatabaseConnectionError');
30     return $db;
31 }
32
33 function camel_case_words_separated_by_underscore($name) {
34     return implode('', array_map('ucfirst', explode('_', $name)));
35 }
36
37 function require_format($key, $value, $pattern) {
38     if (!preg_match($pattern, $value))
39         exit_with_error('Invalid' . camel_case_words_separated_by_underscore($key), array('value' => $value));
40 }
41
42 function require_existence_of($array, $list_of_arguments, $prefix = '') {
43     if ($prefix)
44         $prefix .= '_';
45     foreach ($list_of_arguments as $key => $pattern) {
46         $name = camel_case_words_separated_by_underscore($prefix . $key);
47         if (!array_key_exists($key, $array))
48             exit_with_error($name . 'NotSpecified');
49         require_format($name, $array[$key], $pattern);
50     }
51 }
52
53 ?>