Refactor [su_ajax|admin_cmd|api_webhook] methods into single /api/ interface
This commit is contained in:
179
www/extern/egg/Utils.php
vendored
Normal file
179
www/extern/egg/Utils.php
vendored
Normal file
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
|
||||
class Utils
|
||||
{
|
||||
/**
|
||||
* @param string $str
|
||||
* @param string[] $args
|
||||
* @return string
|
||||
*/
|
||||
public static function sharpFormat(string $str, array $args)
|
||||
{
|
||||
foreach ($args as $key => $val)
|
||||
{
|
||||
$str = str_replace('{'.$key.'}', $val, $str);
|
||||
}
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $haystack
|
||||
* @param string $needle
|
||||
* @return bool
|
||||
*/
|
||||
public static function startsWith(string $haystack, string $needle)
|
||||
{
|
||||
$length = strlen($needle);
|
||||
return (substr($haystack, 0, $length) === $needle);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $haystack
|
||||
* @param string $needle
|
||||
* @return bool
|
||||
*/
|
||||
public static function endsWith(string $haystack, string $needle)
|
||||
{
|
||||
$length = strlen($needle);
|
||||
return ($length === 0) || (substr($haystack, -$length) === $needle);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $filter
|
||||
* @param string[] $exclusions
|
||||
* @param string $name
|
||||
* @return bool
|
||||
*/
|
||||
public static function isRepoFilterMatch(string $filter, array $exclusions, string $name)
|
||||
{
|
||||
foreach ($exclusions as $ex)
|
||||
{
|
||||
if (strtolower($ex) === strtolower($name)) return false;
|
||||
}
|
||||
|
||||
$f0 = explode('/', $filter);
|
||||
$f1 = explode('/', $name);
|
||||
|
||||
if (count($f0) !== 2) return false;
|
||||
if (count($f1) !== 2) return false;
|
||||
|
||||
if ($f0[0] !== $f1[0] && $f0[0] !== '*') return false;
|
||||
if ($f0[1] !== $f1[1] && $f0[1] !== '*') return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ILogger $logger
|
||||
* @param string $url
|
||||
* @param string $authtoken
|
||||
* @return array|mixed
|
||||
*/
|
||||
public static function getJSONWithTokenAuth($logger, $url, $authtoken)
|
||||
{
|
||||
return Utils::getJSON($logger, $url, 'Authorization: token ' . $authtoken);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ILogger $logger
|
||||
* @param string $url
|
||||
* @param string $usr
|
||||
* @param string $pass
|
||||
* @return array|mixed
|
||||
*/
|
||||
public static function getJSONWithTokenBasicAuth($logger, $url, $usr, $pass)
|
||||
{
|
||||
return Utils::getJSON($logger, $url, 'Authorization: Basic ' . base64_encode($usr.':'.$pass));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ILogger $logger
|
||||
* @param string $url
|
||||
* @param string $header
|
||||
* @return array|mixed
|
||||
*/
|
||||
private static function getJSON($logger, $url, $header)
|
||||
{
|
||||
//$logger->proclog("[@] " . $url);
|
||||
|
||||
if (array_key_exists('HTTP_USER_AGENT', $_SERVER)) {
|
||||
$options =
|
||||
[
|
||||
'http' =>
|
||||
[
|
||||
'user_agent' => $_SERVER['HTTP_USER_AGENT'],
|
||||
'header' => $header,
|
||||
],
|
||||
'https' =>
|
||||
[
|
||||
'user_agent' => $_SERVER['HTTP_USER_AGENT'],
|
||||
'header' => $header,
|
||||
],
|
||||
];
|
||||
} else {
|
||||
$options =
|
||||
[
|
||||
'http' =>
|
||||
[
|
||||
'user_agent' => 'ExtendedGitGraph_for_mikescher.com',
|
||||
'header' => $header,
|
||||
'ignore_errors' => true,
|
||||
],
|
||||
'https' =>
|
||||
[
|
||||
'user_agent' => 'ExtendedGitGraph_for_mikescher.com',
|
||||
'header' => $header,
|
||||
'ignore_errors' => true,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
$context = stream_context_create($options);
|
||||
|
||||
$response = @file_get_contents($url, false, $context);
|
||||
|
||||
if ($response === false)
|
||||
{
|
||||
$logger->proclog("Error recieving json: '" . $url . "'");
|
||||
$logger->proclog(print_r(error_get_last(), true));
|
||||
return [];
|
||||
}
|
||||
|
||||
return json_decode($response);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public static function sqlnow()
|
||||
{
|
||||
return gmdate("Y-m-d H:i:s");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $n0
|
||||
* @param array $dbdata
|
||||
* @return int
|
||||
*/
|
||||
public static function array_value_max(int $n0, array $dbdata): int
|
||||
{
|
||||
foreach ($dbdata as $_ => $val) $n0 = max($n0, $val);
|
||||
return $n0;
|
||||
}
|
||||
|
||||
public static function urlCombine(string... $elements)
|
||||
{
|
||||
$r = $elements[0];
|
||||
$skip = true;
|
||||
foreach ($elements as $e)
|
||||
{
|
||||
if ($skip) { $skip=false; continue; }
|
||||
|
||||
if (Utils::endsWith($r, '/')) $r = substr($r, 0, strlen($r)-1);
|
||||
if (Utils::startsWith($e, '/')) $e = substr($e, 1);
|
||||
|
||||
$r = $r . '/' . $e;
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user