PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.2
Independent Analytics – WordPress Analytics Plugin v2.15.2
2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / illuminate / support / ConfigurationUrlParser.php
independent-analytics / vendor / illuminate / support Last commit date
Exceptions 2 weeks ago Facades 2 weeks ago Testing 2 weeks ago Traits 2 weeks ago AggregateServiceProvider.php 2 years ago Benchmark.php 2 weeks ago Carbon.php 2 weeks ago Composer.php 2 weeks ago ConfigurationUrlParser.php 2 weeks ago DateFactory.php 2 weeks ago Env.php 2 weeks ago Fluent.php 2 weeks ago HigherOrderTapProxy.php 2 years ago HtmlString.php 2 years ago InteractsWithTime.php 2 years ago Js.php 2 weeks ago Lottery.php 2 weeks ago Manager.php 2 years ago MessageBag.php 2 weeks ago MultipleInstanceManager.php 2 weeks ago NamespacedItemResolver.php 2 weeks ago Optional.php 2 weeks ago Pluralizer.php 2 weeks ago ProcessUtils.php 2 weeks ago Reflector.php 2 weeks ago ServiceProvider.php 2 years ago Str.php 2 weeks ago Stringable.php 2 weeks ago Timebox.php 2 weeks ago ValidatedInput.php 2 weeks ago ViewErrorBag.php 2 weeks ago helpers.php 2 weeks ago
ConfigurationUrlParser.php
152 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Support;
4
5 use InvalidArgumentException;
6 /** @internal */
7 class ConfigurationUrlParser
8 {
9 /**
10 * The drivers aliases map.
11 *
12 * @var array
13 */
14 protected static $driverAliases = [
15 'mssql' => 'sqlsrv',
16 'mysql2' => 'mysql',
17 // RDS
18 'postgres' => 'pgsql',
19 'postgresql' => 'pgsql',
20 'sqlite3' => 'sqlite',
21 'redis' => 'tcp',
22 'rediss' => 'tls',
23 ];
24 /**
25 * Parse the database configuration, hydrating options using a database configuration URL if possible.
26 *
27 * @param array|string $config
28 * @return array
29 */
30 public function parseConfiguration($config)
31 {
32 if (\is_string($config)) {
33 $config = ['url' => $config];
34 }
35 $url = Arr::pull($config, 'url');
36 if (!$url) {
37 return $config;
38 }
39 $rawComponents = $this->parseUrl($url);
40 $decodedComponents = $this->parseStringsToNativeTypes(\array_map('rawurldecode', $rawComponents));
41 return \array_merge($config, $this->getPrimaryOptions($decodedComponents), $this->getQueryOptions($rawComponents));
42 }
43 /**
44 * Get the primary database connection options.
45 *
46 * @param array $url
47 * @return array
48 */
49 protected function getPrimaryOptions($url)
50 {
51 return \array_filter(['driver' => $this->getDriver($url), 'database' => $this->getDatabase($url), 'host' => $url['host'] ?? null, 'port' => $url['port'] ?? null, 'username' => $url['user'] ?? null, 'password' => $url['pass'] ?? null], fn($value) => !\is_null($value));
52 }
53 /**
54 * Get the database driver from the URL.
55 *
56 * @param array $url
57 * @return string|null
58 */
59 protected function getDriver($url)
60 {
61 $alias = $url['scheme'] ?? null;
62 if (!$alias) {
63 return;
64 }
65 return static::$driverAliases[$alias] ?? $alias;
66 }
67 /**
68 * Get the database name from the URL.
69 *
70 * @param array $url
71 * @return string|null
72 */
73 protected function getDatabase($url)
74 {
75 $path = $url['path'] ?? null;
76 return $path && $path !== '/' ? \substr($path, 1) : null;
77 }
78 /**
79 * Get all of the additional database options from the query string.
80 *
81 * @param array $url
82 * @return array
83 */
84 protected function getQueryOptions($url)
85 {
86 $queryString = $url['query'] ?? null;
87 if (!$queryString) {
88 return [];
89 }
90 $query = [];
91 \parse_str($queryString, $query);
92 return $this->parseStringsToNativeTypes($query);
93 }
94 /**
95 * Parse the string URL to an array of components.
96 *
97 * @param string $url
98 * @return array
99 *
100 * @throws \InvalidArgumentException
101 */
102 protected function parseUrl($url)
103 {
104 $url = \preg_replace('#^(sqlite3?):///#', '$1://null/', $url);
105 $parsedUrl = \parse_url($url);
106 if ($parsedUrl === \false) {
107 throw new InvalidArgumentException('The database configuration URL is malformed.');
108 }
109 return $parsedUrl;
110 }
111 /**
112 * Convert string casted values to their native types.
113 *
114 * @param mixed $value
115 * @return mixed
116 */
117 protected function parseStringsToNativeTypes($value)
118 {
119 if (\is_array($value)) {
120 return \array_map([$this, 'parseStringsToNativeTypes'], $value);
121 }
122 if (!\is_string($value)) {
123 return $value;
124 }
125 $parsedValue = \json_decode($value, \true);
126 if (\json_last_error() === \JSON_ERROR_NONE) {
127 return $parsedValue;
128 }
129 return $value;
130 }
131 /**
132 * Get all of the current drivers' aliases.
133 *
134 * @return array
135 */
136 public static function getDriverAliases()
137 {
138 return static::$driverAliases;
139 }
140 /**
141 * Add the given driver alias to the driver aliases array.
142 *
143 * @param string $alias
144 * @param string $driver
145 * @return void
146 */
147 public static function addDriverAlias($alias, $driver)
148 {
149 static::$driverAliases[$alias] = $driver;
150 }
151 }
152