| 
<?php/**
 * @author stev leibelt <[email protected]>
 * @since 2017-04-26
 */
 
 require __DIR__ . '/../../vendor/autoload.php';
 
 if ($argc < 2) {
 echo 'Invalid number of arguments provided.' . PHP_EOL;
 echo 'Usage:' . PHP_EOL;
 echo '    ' . basename(__FILE__) . ' <int: pid> [<string: uri path> [<string: path to the example file>]]' . PHP_EOL;
 
 exit(1);
 }
 //begin of dependencies
 $foundNoMatchingDetail          = true;
 $listOfPidToUriPathWithQuery    = [];
 $pathToTheExampleFile           = (
 ($argc > 3)
 ? $argv[3]
 : __DIR__ . '/server-status?notable.html'
 );
 $parserBuilderFactory           = new \Net\Bazzline\Component\ApacheServerStatusParser\Service\Builder\ParserBuilderFactory();
 $pid                            = $argv[1];
 $stringUtility                  = new \JonasRudolph\PHPComponents\StringUtility\Implementation\StringUtility();
 $storageBuilder                 = new \Net\Bazzline\Component\ApacheServerStatusParser\Service\Builder\LocalStorageBuilder();
 $uriPath                        = (
 ($argc > 2)
 ? $argv[2]
 : ''
 );
 //end of dependencies
 
 //begin of business logic
 $parserBuilder      = $parserBuilderFactory->create();
 $uriPathProvided    = (strlen($uriPath) > 0);
 
 $storageBuilder->setPathToTheApacheStatusFileToParseUpfront($pathToTheExampleFile);
 $storageBuilder->selectParseModeDetailOnlyUpfront();
 $storageBuilder->build();
 
 $storage = $storageBuilder->andGetStorageAfterTheBuild();
 
 $parserBuilder->setStorageUpfront($storage);
 $parserBuilder->build();
 
 $listOfDetail = $parserBuilder->andGetListOfDetailOrNullAfterwards();
 
 $listOfDetailIsTraversable = (is_array($listOfDetail));
 
 if ($listOfDetailIsTraversable) {
 foreach ($listOfDetail as $detail) {
 $listOfPidToUriPathWithQuery[$detail->pid()] = $detail->uriPathWithQuery();
 
 if ($detail->pid() == $pid) {
 if ($uriPathProvided) {
 if ($stringUtility->startsWith($detail->uriPathWithQuery(), $uriPath)) {
 $foundNoMatchingDetail = false;
 
 echo ':: Found a request with the pid: "' . $pid . '".' . PHP_EOL;
 echo ':: Found a request where the uri path with query starts with: "' . $uriPath . '".' . PHP_EOL;
 echo ':: Uri path with query' . PHP_EOL;
 echo $detail->uriPathWithQuery() . PHP_EOL;
 }
 } else {
 $foundNoMatchingDetail = false;
 
 echo ':: Found a request with the pid: "' . $pid . '".' . PHP_EOL;
 echo ':: Uri path with query' . PHP_EOL;
 echo $detail->uriPathWithQuery() . PHP_EOL;
 }
 }
 }
 
 if ($foundNoMatchingDetail) {
 echo ':: Dumping list of available requests.' . PHP_EOL;
 echo PHP_EOL;
 echo 'pid' . "\t" . 'uri path with query' . PHP_EOL;
 echo '--------------------------------' . PHP_EOL;
 
 foreach ($listOfPidToUriPathWithQuery as $pid => $uriPathWithQuery) {
 echo $pid . "\t" . $uriPathWithQuery . PHP_EOL;
 }
 }
 } else {
 echo ':: Error' . PHP_EOL;
 echo 'no details found in file "' . $pathToTheExampleFile . '"' . PHP_EOL;
 }
 //end of business logic
 |