One more travis https test
[plcapi.git] / tests / parse_args.php
1 <?php
2
3 /**
4  * Common parameter parsing for benchmarks and tests scripts.
5  *
6  * @param integer DEBUG
7  * @param string  LOCALSERVER
8  * @param string  URI
9  * @param string  HTTPSSERVER
10  * @param string  HTTPSSURI
11  * @param string  PROXY
12  * @param string  NOPROXY
13  *
14  * @copyright (C) 2007-20014 G. Giunta
15  * @license code licensed under the BSD License: see file license.txt
16  **/
17 class argParser
18 {
19     public static function getArgs()
20     {
21         global $argv;
22
23         $args = array(
24             'DEBUG' => 0,
25             'LOCALSERVER' => 'localhost',
26             'HTTPSSERVER' => 'gggeek.ssl.altervista.org',
27             'HTTPSURI' => '/sw/xmlrpc/demo/server/server.php',
28             'HTTPSIGNOREPEER' => false,
29             'PROXYSERVER' => null,
30             'NOPROXY' => false,
31             'LOCALPATH' => __DIR__,
32         );
33
34         // check for command line vs web page input params
35         if (!isset($_SERVER['REQUEST_METHOD'])) {
36             if (isset($argv)) {
37                 foreach ($argv as $param) {
38                     $param = explode('=', $param);
39                     if (count($param) > 1) {
40                         $pname = strtoupper(ltrim($param[0], '-'));
41                         $$pname = $param[1];
42                     }
43                 }
44             }
45         } else {
46             // NB: we might as well consider using $_GET stuff later on...
47             extract($_GET);
48             extract($_POST);
49         }
50
51         if (isset($DEBUG)) {
52             $args['DEBUG'] = intval($DEBUG);
53         }
54         if (isset($LOCALSERVER)) {
55             $args['LOCALSERVER'] = $LOCALSERVER;
56         } else {
57             if (isset($HTTP_HOST)) {
58                 $args['LOCALSERVER'] = $HTTP_HOST;
59             } elseif (isset($_SERVER['HTTP_HOST'])) {
60                 $args['LOCALSERVER'] = $_SERVER['HTTP_HOST'];
61             }
62         }
63         if (isset($HTTPSSERVER)) {
64             $args['HTTPSSERVER'] = $HTTPSSERVER;
65         }
66         if (isset($HTTPSURI)) {
67             $args['HTTPSURI'] = $HTTPSURI;
68         }
69         if (isset($HTTPSIGNOREPEER)) {
70             $args['HTTPSIGNOREPEER'] = (bool)$HTTPSIGNOREPEER;
71         }
72         if (isset($PROXY)) {
73             $arr = explode(':', $PROXY);
74             $args['PROXYSERVER'] = $arr[0];
75             if (count($arr) > 1) {
76                 $args['PROXYPORT'] = $arr[1];
77             } else {
78                 $args['PROXYPORT'] = 8080;
79             }
80         }
81         // used to silence testsuite warnings about proxy code not being tested
82         if (isset($NOPROXY)) {
83             $args['NOPROXY'] = true;
84         }
85         if (!isset($URI)) {
86             // GUESTIMATE the url of local demo server
87             // play nice to php 3 and 4-5 in retrieving URL of server.php
88             /// @todo filter out query string from REQUEST_URI
89             if (isset($REQUEST_URI)) {
90                 $URI = str_replace('/tests/testsuite.php', '/demo/server/server.php', $REQUEST_URI);
91                 $URI = str_replace('/testsuite.php', '/server.php', $URI);
92                 $URI = str_replace('/tests/benchmark.php', '/demo/server/server.php', $URI);
93                 $URI = str_replace('/benchmark.php', '/server.php', $URI);
94             } elseif (isset($_SERVER['PHP_SELF']) && isset($_SERVER['REQUEST_METHOD'])) {
95                 $URI = str_replace('/tests/testsuite.php', '/demo/server/server.php', $_SERVER['PHP_SELF']);
96                 $URI = str_replace('/testsuite.php', '/server.php', $URI);
97                 $URI = str_replace('/tests/benchmark.php', '/demo/server/server.php', $URI);
98                 $URI = str_replace('/benchmark.php', '/server.php', $URI);
99             } else {
100                 $URI = '/demo/server/server.php';
101             }
102         }
103         if ($URI[0] != '/') {
104             $URI = '/' . $URI;
105         }
106         $args['URI'] = $URI;
107         if (isset($LOCALPATH)) {
108             $args['LOCALPATH'] = $LOCALPATH;
109         }
110
111         return $args;
112     }
113 }