69b7ef305bd4ede5fd00174f0bf814a7d6dbb2b3
[WebKit-https.git] / Websites / test-results / public / include / json-shared.php
1 <?php
2 ini_set('memory_limit','-1');
3
4 require_once('db.php');
5
6 header('Content-type: application/json');
7 $maxage = config('jsonCacheMaxAge');
8 header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $maxage) . ' GMT');
9 header("Cache-Control: maxage=$maxage");
10
11 function exit_with_error($status, $details = array()) {
12     $details['status'] = $status;
13     merge_additional_details($details);
14
15     echo json_encode($details);
16     exit(1);
17 }
18
19 function echo_success($details = array()) {
20     $details['status'] = 'OK';
21     merge_additional_details($details);
22
23     echo json_encode($details);
24 }
25
26 function exit_with_success($details = array()) {
27     echo_success($details);
28     exit(0);
29 }
30
31 $additional_exit_details = array();
32
33 function set_exit_detail($name, $value) {
34     global $additional_exit_details;
35     $additional_exit_details[$name] = $value;
36 }
37
38 function merge_additional_details(&$details) {
39     global $additional_exit_details;
40     foreach ($additional_exit_details as $name => $value) {
41         if (!array_key_exists($name, $details))
42             $details[$name] = $value;
43     }
44 }
45
46 function connect() {
47     $db = new Database;
48     if (!$db->connect())
49         exit_with_error('DatabaseConnectionError');
50     return $db;
51 }
52
53 function camel_case_words_separated_by_underscore($name) {
54     return implode('', array_map('ucfirst', explode('_', $name)));
55 }
56
57 function require_format($key, $value, $pattern) {
58     if (!preg_match($pattern, $value))
59         exit_with_error('Invalid' . camel_case_words_separated_by_underscore($key), array('value' => $value));
60 }
61
62 function require_existence_of($array, $list_of_arguments, $prefix = '') {
63     if ($prefix)
64         $prefix .= '_';
65     foreach ($list_of_arguments as $key => $pattern) {
66         $name = camel_case_words_separated_by_underscore($prefix . $key);
67         if (!array_key_exists($key, $array))
68             exit_with_error($name . 'NotSpecified');
69         require_format($name, $array[$key], $pattern);
70     }
71 }
72
73 ?>