summaryrefslogtreecommitdiff
path: root/server/vendor/php-opencloud/common/src/Common/Transport/Utils.php
diff options
context:
space:
mode:
authorEoleDev <root@serverpc.home>2016-03-09 15:36:02 +0100
committerEoleDev <root@serverpc.home>2016-03-09 15:36:02 +0100
commitc479658f0bb953ded4b29ca573404a318f1e798f (patch)
treef4c4fa4b7e245abd462794df5b6525ed41306e77 /server/vendor/php-opencloud/common/src/Common/Transport/Utils.php
parent5c6f6c97b7b906476ad5b9ed193e0140dd66f977 (diff)
New Library
Diffstat (limited to 'server/vendor/php-opencloud/common/src/Common/Transport/Utils.php')
-rw-r--r--server/vendor/php-opencloud/common/src/Common/Transport/Utils.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/server/vendor/php-opencloud/common/src/Common/Transport/Utils.php b/server/vendor/php-opencloud/common/src/Common/Transport/Utils.php
new file mode 100644
index 0000000..c2a2dc1
--- /dev/null
+++ b/server/vendor/php-opencloud/common/src/Common/Transport/Utils.php
@@ -0,0 +1,88 @@
+<?php
+
+namespace OpenCloud\Common\Transport;
+
+use function GuzzleHttp\Psr7\uri_for;
+use Psr\Http\Message\ResponseInterface;
+use Psr\Http\Message\UriInterface;
+
+class Utils
+{
+ public static function jsonDecode(ResponseInterface $response, $assoc = true)
+ {
+ $jsonErrors = [
+ JSON_ERROR_DEPTH => 'JSON_ERROR_DEPTH - Maximum stack depth exceeded',
+ JSON_ERROR_STATE_MISMATCH => 'JSON_ERROR_STATE_MISMATCH - Underflow or the modes mismatch',
+ JSON_ERROR_CTRL_CHAR => 'JSON_ERROR_CTRL_CHAR - Unexpected control character found',
+ JSON_ERROR_SYNTAX => 'JSON_ERROR_SYNTAX - Syntax error, malformed JSON',
+ JSON_ERROR_UTF8 => 'JSON_ERROR_UTF8 - Malformed UTF-8 characters, possibly incorrectly encoded'
+ ];
+
+ $responseBody = (string) $response->getBody();
+
+ if (strlen($responseBody) === 0) {
+ return $responseBody;
+ }
+
+ $data = json_decode($responseBody, $assoc);
+
+ if (JSON_ERROR_NONE !== json_last_error()) {
+ $last = json_last_error();
+ throw new \InvalidArgumentException(
+ 'Unable to parse JSON data: ' . (isset($jsonErrors[$last]) ? $jsonErrors[$last] : 'Unknown error')
+ );
+ }
+
+ return $data;
+ }
+
+ /**
+ * Method for flattening a nested array.
+ *
+ * @param array $data The nested array
+ * @param null $key The key to extract
+ *
+ * @return array
+ */
+ public static function flattenJson($data, $key = null)
+ {
+ return (!empty($data) && $key && isset($data[$key])) ? $data[$key] : $data;
+ }
+
+ /**
+ * Method for normalize an URL string.
+ *
+ * Append the http:// prefix if not present, and add a
+ * closing url separator when missing.
+ *
+ * @param string $url The url representation.
+ *
+ * @return string
+ */
+ public static function normalizeUrl($url)
+ {
+ if (strpos($url, 'http') === false) {
+ $url = 'http://' . $url;
+ }
+
+ return rtrim($url, '/') . '/';
+ }
+
+ /**
+ * Add an unlimited list of paths to a given URI.
+ *
+ * @param UriInterface $uri
+ * @param ...$paths
+ *
+ * @return UriInterface
+ */
+ public static function addPaths(UriInterface $uri, ...$paths)
+ {
+ return uri_for(rtrim((string) $uri, '/') . '/' . implode('/', $paths));
+ }
+
+ public static function appendPath(UriInterface $uri, $path)
+ {
+ return uri_for(rtrim((string) $uri, '/') . '/' . $path);
+ }
+}