042660b15c
* Added static code analysis * Updated code to solve psalm issue
108 lines
2.6 KiB
PHP
108 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace Appwrite\URL;
|
|
|
|
class URL
|
|
{
|
|
/**
|
|
* Parse URL
|
|
*
|
|
* Take a URL string and split it to array parts
|
|
*
|
|
* @param string $url
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function parse(string $url):array
|
|
{
|
|
$default = [
|
|
'scheme' => '',
|
|
'pass' => '',
|
|
'user' => '',
|
|
'host' => '',
|
|
'port' => null,
|
|
'path' => '',
|
|
'query' => '',
|
|
'fragment' => '',
|
|
];
|
|
|
|
return \array_merge($default, \parse_url($url));
|
|
}
|
|
|
|
/**
|
|
* Un-Parse URL
|
|
*
|
|
* Take URL parts and combine them to a valid string
|
|
*
|
|
* @param array $url
|
|
* @param array $ommit
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function unparse(array $url, array $ommit = []):string
|
|
{
|
|
if (isset($url['path']) && \mb_substr($url['path'], 0, 1) !== '/') {
|
|
$url['path'] = '/'.$url['path'];
|
|
}
|
|
|
|
$parts = [];
|
|
|
|
$parts['scheme'] = isset($url['scheme']) ? $url['scheme'].'://' : '';
|
|
|
|
$parts['host'] = isset($url['host']) ? $url['host'] : '';
|
|
|
|
$parts['port'] = isset($url['port']) ? ':'.$url['port'] : '';
|
|
|
|
$parts['user'] = isset($url['user']) ? $url['user'] : '';
|
|
|
|
$parts['pass'] = isset($url['pass']) ? ':'.$url['pass'] : '';
|
|
|
|
$parts['pass'] = ($parts['user'] || $parts['pass']) ? $parts['pass'].'@' : '';
|
|
|
|
$parts['path'] = isset($url['path']) ? $url['path'] : '';
|
|
|
|
$parts['query'] = isset($url['query']) && !empty($url['query']) ? '?'.$url['query'] : '';
|
|
|
|
$parts['fragment'] = isset($url['fragment']) ? '#'.$url['fragment'] : '';
|
|
|
|
if ($ommit) {
|
|
foreach ($ommit as $key) {
|
|
if (isset($parts[ $key ])) {
|
|
$parts[ $key ] = '';
|
|
}
|
|
}
|
|
}
|
|
|
|
return $parts['scheme'].$parts['user'].$parts['pass'].$parts['host'].$parts['port'].$parts['path'].$parts['query'].$parts['fragment'];
|
|
}
|
|
|
|
/**
|
|
* Parse Query String
|
|
*
|
|
* Convert query string to array
|
|
*
|
|
* @param string $query
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function parseQuery(string $query):array
|
|
{
|
|
\parse_str($query, $result);
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Un-Parse Query String
|
|
*
|
|
* Convert query string array to string
|
|
*
|
|
* @param array $query
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function unparseQuery(array $query):string
|
|
{
|
|
return \http_build_query($query);
|
|
}
|
|
}
|