Parcourir la source

会议短信提醒功能

q il y a 1 an
Parent
commit
6d78090c55
100 fichiers modifiés avec 13720 ajouts et 1 suppressions
  1. 15 1
      .gitignore
  2. 24 0
      include/composer.json
  3. 1828 0
      include/composer.lock
  4. 21 0
      include/vendor/adbario/php-dot-notation/LICENSE.md
  5. 29 0
      include/vendor/adbario/php-dot-notation/composer.json
  6. 623 0
      include/vendor/adbario/php-dot-notation/src/Dot.php
  7. 24 0
      include/vendor/adbario/php-dot-notation/src/helpers.php
  8. 14 0
      include/vendor/alibabacloud/credentials/CHANGELOG.md
  9. 30 0
      include/vendor/alibabacloud/credentials/CONTRIBUTING.md
  10. 13 0
      include/vendor/alibabacloud/credentials/LICENSE.md
  11. 88 0
      include/vendor/alibabacloud/credentials/NOTICE.md
  12. 250 0
      include/vendor/alibabacloud/credentials/README-zh-CN.md
  13. 251 0
      include/vendor/alibabacloud/credentials/README.md
  14. 21 0
      include/vendor/alibabacloud/credentials/SECURITY.md
  15. 6 0
      include/vendor/alibabacloud/credentials/UPGRADING.md
  16. 107 0
      include/vendor/alibabacloud/credentials/composer.json
  17. 72 0
      include/vendor/alibabacloud/credentials/src/AccessKeyCredential.php
  18. 53 0
      include/vendor/alibabacloud/credentials/src/BearerTokenCredential.php
  19. 183 0
      include/vendor/alibabacloud/credentials/src/Credential.php
  20. 50 0
      include/vendor/alibabacloud/credentials/src/Credential/Config.php
  21. 102 0
      include/vendor/alibabacloud/credentials/src/Credentials.php
  22. 23 0
      include/vendor/alibabacloud/credentials/src/CredentialsInterface.php
  23. 151 0
      include/vendor/alibabacloud/credentials/src/EcsRamRoleCredential.php
  24. 134 0
      include/vendor/alibabacloud/credentials/src/Filter.php
  25. 202 0
      include/vendor/alibabacloud/credentials/src/Helper.php
  26. 98 0
      include/vendor/alibabacloud/credentials/src/MockTrait.php
  27. 187 0
      include/vendor/alibabacloud/credentials/src/Providers/ChainProvider.php
  28. 94 0
      include/vendor/alibabacloud/credentials/src/Providers/EcsRamRoleProvider.php
  29. 82 0
      include/vendor/alibabacloud/credentials/src/Providers/Provider.php
  30. 49 0
      include/vendor/alibabacloud/credentials/src/Providers/RamRoleArnProvider.php
  31. 53 0
      include/vendor/alibabacloud/credentials/src/Providers/RsaKeyPairProvider.php
  32. 218 0
      include/vendor/alibabacloud/credentials/src/RamRoleArnCredential.php
  33. 37 0
      include/vendor/alibabacloud/credentials/src/Request/AssumeRole.php
  34. 33 0
      include/vendor/alibabacloud/credentials/src/Request/GenerateSessionAccessKey.php
  35. 155 0
      include/vendor/alibabacloud/credentials/src/Request/Request.php
  36. 158 0
      include/vendor/alibabacloud/credentials/src/RsaKeyPairCredential.php
  37. 47 0
      include/vendor/alibabacloud/credentials/src/Signature/BearerTokenSignature.php
  38. 47 0
      include/vendor/alibabacloud/credentials/src/Signature/ShaHmac1Signature.php
  39. 47 0
      include/vendor/alibabacloud/credentials/src/Signature/ShaHmac256Signature.php
  40. 64 0
      include/vendor/alibabacloud/credentials/src/Signature/ShaHmac256WithRsaSignature.php
  41. 34 0
      include/vendor/alibabacloud/credentials/src/Signature/SignatureInterface.php
  42. 98 0
      include/vendor/alibabacloud/credentials/src/StsCredential.php
  43. 15 0
      include/vendor/alibabacloud/darabonba-openapi/.gitignore
  44. 65 0
      include/vendor/alibabacloud/darabonba-openapi/.php_cs.dist
  45. 31 0
      include/vendor/alibabacloud/darabonba-openapi/README-CN.md
  46. 31 0
      include/vendor/alibabacloud/darabonba-openapi/README.md
  47. 15 0
      include/vendor/alibabacloud/darabonba-openapi/autoload.php
  48. 34 0
      include/vendor/alibabacloud/darabonba-openapi/composer.json
  49. 31 0
      include/vendor/alibabacloud/darabonba-openapi/phpunit.xml
  50. 424 0
      include/vendor/alibabacloud/darabonba-openapi/src/Models/Config.php
  51. 42 0
      include/vendor/alibabacloud/darabonba-openapi/src/Models/GlobalParameters.php
  52. 74 0
      include/vendor/alibabacloud/darabonba-openapi/src/Models/OpenApiRequest.php
  53. 130 0
      include/vendor/alibabacloud/darabonba-openapi/src/Models/Params.php
  54. 1183 0
      include/vendor/alibabacloud/darabonba-openapi/src/OpenApiClient.php
  55. 328 0
      include/vendor/alibabacloud/darabonba-openapi/tests/OpenApiClientTest.php
  56. 3 0
      include/vendor/alibabacloud/darabonba-openapi/tests/bootstrap.php
  57. 15 0
      include/vendor/alibabacloud/dysmsapi-20170525/.gitignore
  58. 65 0
      include/vendor/alibabacloud/dysmsapi-20170525/.php_cs.dist
  59. 66 0
      include/vendor/alibabacloud/dysmsapi-20170525/ChangeLog.md
  60. 201 0
      include/vendor/alibabacloud/dysmsapi-20170525/LICENSE
  61. 35 0
      include/vendor/alibabacloud/dysmsapi-20170525/README-CN.md
  62. 35 0
      include/vendor/alibabacloud/dysmsapi-20170525/README.md
  63. 17 0
      include/vendor/alibabacloud/dysmsapi-20170525/autoload.php
  64. 33 0
      include/vendor/alibabacloud/dysmsapi-20170525/composer.json
  65. 2147 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php
  66. 111 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php
  67. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php
  68. 90 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php
  69. 77 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php
  70. 148 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest.php
  71. 63 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest/signFileList.php
  72. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponse.php
  73. 89 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponseBody.php
  74. 121 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateRequest.php
  75. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponse.php
  76. 91 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php
  77. 63 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportRequest.php
  78. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponse.php
  79. 90 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody.php
  80. 60 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody/data.php
  81. 63 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody/data/queryResult.php
  82. 99 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlRequest.php
  83. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlResponse.php
  84. 77 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlResponseBody.php
  85. 85 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateRequest.php
  86. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponse.php
  87. 90 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponseBody.php
  88. 49 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponseBody/data.php
  89. 85 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateShrinkRequest.php
  90. 127 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlRequest.php
  91. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponse.php
  92. 102 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponseBody.php
  93. 105 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponseBody/model_.php
  94. 85 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php
  95. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php
  96. 77 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php
  97. 83 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignRequest.php
  98. 74 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponse.php
  99. 89 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php
  100. 0 0
      include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateRequest.php

+ 15 - 1
.gitignore

@@ -5,4 +5,18 @@ nginx.htaccess
 .htaccess
 base_db.gz
 /webmain/webmainConfig.php~Stashed changes
-.user.ini
+.user.ini
+
+composer.phar
+/vendor/
+
+.vscode/
+.idea
+.DS_Store
+
+cache/
+*.cache
+runtime/
+.php_cs.cache
+/include1
+/include2

+ 24 - 0
include/composer.json

@@ -0,0 +1,24 @@
+{
+    "require": {
+        "phpoffice/phpword": "^0.17.0",
+		"aliyuncs/oss-sdk-php": "~2.4",
+        "alibabacloud/dysmsapi-20170525": "^2.0.24",
+        "alibabacloud/darabonba-openapi": "^0.2.10",
+        "alibabacloud/tea-console": "^0.1.0",
+        "alibabacloud/tea-utils": "^0.2.19"
+    },
+    "autoload": {
+        "psr-4": {
+            "AlibabaCloud\\SDK\\Sample\\": "src"
+        }
+    },
+    "scripts": {
+        "fixer": "php-cs-fixer fix ./"
+    },
+    "config": {
+        "sort-packages": true,
+        "preferred-install": "dist",
+        "optimize-autoloader": true
+    },
+    "prefer-stable": true
+}

Fichier diff supprimé car celui-ci est trop grand
+ 1828 - 0
include/composer.lock


+ 21 - 0
include/vendor/adbario/php-dot-notation/LICENSE.md

@@ -0,0 +1,21 @@
+# The MIT License (MIT)
+
+Copyright (c) 2016-2019 Riku Särkinen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 29 - 0
include/vendor/adbario/php-dot-notation/composer.json

@@ -0,0 +1,29 @@
+{
+    "name": "adbario/php-dot-notation",
+    "description": "PHP dot notation access to arrays",
+    "keywords": ["dotnotation", "arrayaccess"],
+    "homepage": "https://github.com/adbario/php-dot-notation",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Riku Särkinen",
+            "email": "riku@adbar.io"
+        }
+    ],
+    "require": {
+        "php": "^5.5 || ^7.0 || ^8.0",
+        "ext-json": "*"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5",
+        "squizlabs/php_codesniffer": "^3.6"
+    },
+    "autoload": {
+        "files": [
+            "src/helpers.php"
+        ],
+        "psr-4": {
+            "Adbar\\": "src"
+        }
+    }
+}

+ 623 - 0
include/vendor/adbario/php-dot-notation/src/Dot.php

@@ -0,0 +1,623 @@
+<?php
+/**
+ * Dot - PHP dot notation access to arrays
+ *
+ * @author  Riku Särkinen <riku@adbar.io>
+ * @link    https://github.com/adbario/php-dot-notation
+ * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License)
+ */
+namespace Adbar;
+
+use Countable;
+use ArrayAccess;
+use ArrayIterator;
+use JsonSerializable;
+use IteratorAggregate;
+
+/**
+ * Dot
+ *
+ * This class provides a dot notation access and helper functions for
+ * working with arrays of data. Inspired by Laravel Collection.
+ */
+class Dot implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable
+{
+    /**
+     * The stored items
+     *
+     * @var array
+     */
+    protected $items = [];
+
+
+    /**
+     * The delimiter (alternative to a '.') to be used.
+     *
+     * @var string
+     */
+    protected $delimiter = '.';
+
+
+    /**
+     * Create a new Dot instance
+     *
+     * @param mixed $items
+     * @param string $delimiter
+     */
+    public function __construct($items = [], $delimiter = '.')
+    {
+        $this->items = $this->getArrayItems($items);
+        $this->delimiter = strlen($delimiter) ? $delimiter : '.';
+    }
+
+    /**
+     * Set a given key / value pair or pairs
+     * if the key doesn't exist already
+     *
+     * @param array|int|string $keys
+     * @param mixed            $value
+     */
+    public function add($keys, $value = null)
+    {
+        if (is_array($keys)) {
+            foreach ($keys as $key => $value) {
+                $this->add($key, $value);
+            }
+        } elseif (is_null($this->get($keys))) {
+            $this->set($keys, $value);
+        }
+    }
+
+    /**
+     * Return all the stored items
+     *
+     * @return array
+     */
+    public function all()
+    {
+        return $this->items;
+    }
+
+    /**
+     * Delete the contents of a given key or keys
+     *
+     * @param array|int|string|null $keys
+     */
+    public function clear($keys = null)
+    {
+        if (is_null($keys)) {
+            $this->items = [];
+
+            return;
+        }
+
+        $keys = (array) $keys;
+
+        foreach ($keys as $key) {
+            $this->set($key, []);
+        }
+    }
+
+    /**
+     * Delete the given key or keys
+     *
+     * @param array|int|string $keys
+     */
+    public function delete($keys)
+    {
+        $keys = (array) $keys;
+
+        foreach ($keys as $key) {
+            if ($this->exists($this->items, $key)) {
+                unset($this->items[$key]);
+
+                continue;
+            }
+
+            $items = &$this->items;
+            $segments = explode($this->delimiter, $key);
+            $lastSegment = array_pop($segments);
+
+            foreach ($segments as $segment) {
+                if (!isset($items[$segment]) || !is_array($items[$segment])) {
+                    continue 2;
+                }
+
+                $items = &$items[$segment];
+            }
+
+            unset($items[$lastSegment]);
+        }
+    }
+
+    /**
+     * Checks if the given key exists in the provided array.
+     *
+     * @param  array      $array Array to validate
+     * @param  int|string $key   The key to look for
+     *
+     * @return bool
+     */
+    protected function exists($array, $key)
+    {
+        return array_key_exists($key, $array);
+    }
+
+    /**
+     * Flatten an array with the given character as a key delimiter
+     *
+     * @param  string     $delimiter
+     * @param  array|null $items
+     * @param  string     $prepend
+     * @return array
+     */
+    public function flatten($delimiter = '.', $items = null, $prepend = '')
+    {
+        $flatten = [];
+
+        if (is_null($items)) {
+            $items = $this->items;
+        }
+
+        if (!func_num_args()) {
+            $delimiter = $this->delimiter;
+        }
+
+        foreach ($items as $key => $value) {
+            if (is_array($value) && !empty($value)) {
+                $flatten = array_merge(
+                    $flatten,
+                    $this->flatten($delimiter, $value, $prepend.$key.$delimiter)
+                );
+            } else {
+                $flatten[$prepend.$key] = $value;
+            }
+        }
+
+        return $flatten;
+    }
+
+    /**
+     * Return the value of a given key
+     *
+     * @param  int|string|null $key
+     * @param  mixed           $default
+     * @return mixed
+     */
+    public function get($key = null, $default = null)
+    {
+        if (is_null($key)) {
+            return $this->items;
+        }
+
+        if ($this->exists($this->items, $key)) {
+            return $this->items[$key];
+        }
+
+        if (strpos($key, $this->delimiter) === false) {
+            return $default;
+        }
+
+        $items = $this->items;
+
+        foreach (explode($this->delimiter, $key) as $segment) {
+            if (!is_array($items) || !$this->exists($items, $segment)) {
+                return $default;
+            }
+
+            $items = &$items[$segment];
+        }
+
+        return $items;
+    }
+
+    /**
+     * Return the given items as an array
+     *
+     * @param  mixed $items
+     * @return array
+     */
+    protected function getArrayItems($items)
+    {
+        if (is_array($items)) {
+            return $items;
+        } elseif ($items instanceof self) {
+            return $items->all();
+        }
+
+        return (array) $items;
+    }
+
+    /**
+     * Check if a given key or keys exists
+     *
+     * @param  array|int|string $keys
+     * @return bool
+     */
+    public function has($keys)
+    {
+        $keys = (array) $keys;
+
+        if (!$this->items || $keys === []) {
+            return false;
+        }
+
+        foreach ($keys as $key) {
+            $items = $this->items;
+
+            if ($this->exists($items, $key)) {
+                continue;
+            }
+
+            foreach (explode($this->delimiter, $key) as $segment) {
+                if (!is_array($items) || !$this->exists($items, $segment)) {
+                    return false;
+                }
+
+                $items = $items[$segment];
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Check if a given key or keys are empty
+     *
+     * @param  array|int|string|null $keys
+     * @return bool
+     */
+    public function isEmpty($keys = null)
+    {
+        if (is_null($keys)) {
+            return empty($this->items);
+        }
+
+        $keys = (array) $keys;
+
+        foreach ($keys as $key) {
+            if (!empty($this->get($key))) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Merge a given array or a Dot object with the given key
+     * or with the whole Dot object
+     *
+     * @param array|string|self $key
+     * @param array|self        $value
+     */
+    public function merge($key, $value = [])
+    {
+        if (is_array($key)) {
+            $this->items = array_merge($this->items, $key);
+        } elseif (is_string($key)) {
+            $items = (array) $this->get($key);
+            $value = array_merge($items, $this->getArrayItems($value));
+
+            $this->set($key, $value);
+        } elseif ($key instanceof self) {
+            $this->items = array_merge($this->items, $key->all());
+        }
+    }
+
+    /**
+     * Recursively merge a given array or a Dot object with the given key
+     * or with the whole Dot object.
+     *
+     * Duplicate keys are converted to arrays.
+     *
+     * @param array|string|self $key
+     * @param array|self        $value
+     */
+    public function mergeRecursive($key, $value = [])
+    {
+        if (is_array($key)) {
+            $this->items = array_merge_recursive($this->items, $key);
+        } elseif (is_string($key)) {
+            $items = (array) $this->get($key);
+            $value = array_merge_recursive($items, $this->getArrayItems($value));
+
+            $this->set($key, $value);
+        } elseif ($key instanceof self) {
+            $this->items = array_merge_recursive($this->items, $key->all());
+        }
+    }
+
+    /**
+     * Recursively merge a given array or a Dot object with the given key
+     * or with the whole Dot object.
+     *
+     * Instead of converting duplicate keys to arrays, the value from
+     * given array will replace the value in Dot object.
+     *
+     * @param array|string|self $key
+     * @param array|self        $value
+     */
+    public function mergeRecursiveDistinct($key, $value = [])
+    {
+        if (is_array($key)) {
+            $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key);
+        } elseif (is_string($key)) {
+            $items = (array) $this->get($key);
+            $value = $this->arrayMergeRecursiveDistinct($items, $this->getArrayItems($value));
+
+            $this->set($key, $value);
+        } elseif ($key instanceof self) {
+            $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key->all());
+        }
+    }
+
+    /**
+     * Merges two arrays recursively. In contrast to array_merge_recursive,
+     * duplicate keys are not converted to arrays but rather overwrite the
+     * value in the first array with the duplicate value in the second array.
+     *
+     * @param  array $array1 Initial array to merge
+     * @param  array $array2 Array to recursively merge
+     * @return array
+     */
+    protected function arrayMergeRecursiveDistinct(array $array1, array $array2)
+    {
+        $merged = &$array1;
+
+        foreach ($array2 as $key => $value) {
+            if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) {
+                $merged[$key] = $this->arrayMergeRecursiveDistinct($merged[$key], $value);
+            } else {
+                $merged[$key] = $value;
+            }
+        }
+
+        return $merged;
+    }
+
+    /**
+     * Return the value of a given key and
+     * delete the key
+     *
+     * @param  int|string|null $key
+     * @param  mixed           $default
+     * @return mixed
+     */
+    public function pull($key = null, $default = null)
+    {
+        if (is_null($key)) {
+            $value = $this->all();
+            $this->clear();
+
+            return $value;
+        }
+
+        $value = $this->get($key, $default);
+        $this->delete($key);
+
+        return $value;
+    }
+
+    /**
+     * Push a given value to the end of the array
+     * in a given key
+     *
+     * @param mixed $key
+     * @param mixed $value
+     */
+    public function push($key, $value = null)
+    {
+        if (is_null($value)) {
+            $this->items[] = $key;
+
+            return;
+        }
+
+        $items = $this->get($key);
+
+        if (is_array($items) || is_null($items)) {
+            $items[] = $value;
+            $this->set($key, $items);
+        }
+    }
+
+    /**
+     * Replace all values or values within the given key
+     * with an array or Dot object
+     *
+     * @param array|string|self $key
+     * @param array|self        $value
+     */
+    public function replace($key, $value = [])
+    {
+        if (is_array($key)) {
+            $this->items = array_replace($this->items, $key);
+        } elseif (is_string($key)) {
+            $items = (array) $this->get($key);
+            $value = array_replace($items, $this->getArrayItems($value));
+
+            $this->set($key, $value);
+        } elseif ($key instanceof self) {
+            $this->items = array_replace($this->items, $key->all());
+        }
+    }
+
+    /**
+     * Set a given key / value pair or pairs
+     *
+     * @param array|int|string $keys
+     * @param mixed            $value
+     */
+    public function set($keys, $value = null)
+    {
+        if (is_array($keys)) {
+            foreach ($keys as $key => $value) {
+                $this->set($key, $value);
+            }
+
+            return;
+        }
+
+        $items = &$this->items;
+
+        foreach (explode($this->delimiter, $keys) as $key) {
+            if (!isset($items[$key]) || !is_array($items[$key])) {
+                $items[$key] = [];
+            }
+
+            $items = &$items[$key];
+        }
+
+        $items = $value;
+    }
+
+    /**
+     * Replace all items with a given array
+     *
+     * @param mixed $items
+     */
+    public function setArray($items)
+    {
+        $this->items = $this->getArrayItems($items);
+    }
+
+    /**
+     * Replace all items with a given array as a reference
+     *
+     * @param array $items
+     */
+    public function setReference(array &$items)
+    {
+        $this->items = &$items;
+    }
+
+    /**
+     * Return the value of a given key or all the values as JSON
+     *
+     * @param  mixed  $key
+     * @param  int    $options
+     * @return string
+     */
+    public function toJson($key = null, $options = 0)
+    {
+        if (is_string($key)) {
+            return json_encode($this->get($key), $options);
+        }
+
+        $options = $key === null ? 0 : $key;
+
+        return json_encode($this->items, $options);
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * ArrayAccess interface
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * Check if a given key exists
+     *
+     * @param  int|string $key
+     * @return bool
+     */
+    #[\ReturnTypeWillChange]
+    public function offsetExists($key)
+    {
+        return $this->has($key);
+    }
+
+    /**
+     * Return the value of a given key
+     *
+     * @param  int|string $key
+     * @return mixed
+     */
+    #[\ReturnTypeWillChange]
+    public function offsetGet($key)
+    {
+        return $this->get($key);
+    }
+
+    /**
+     * Set a given value to the given key
+     *
+     * @param int|string|null $key
+     * @param mixed           $value
+     */
+    #[\ReturnTypeWillChange]
+    public function offsetSet($key, $value)
+    {
+        if (is_null($key)) {
+            $this->items[] = $value;
+
+            return;
+        }
+
+        $this->set($key, $value);
+    }
+
+    /**
+     * Delete the given key
+     *
+     * @param int|string $key
+     */
+    #[\ReturnTypeWillChange]
+    public function offsetUnset($key)
+    {
+        $this->delete($key);
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * Countable interface
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * Return the number of items in a given key
+     *
+     * @param  int|string|null $key
+     * @return int
+     */
+    #[\ReturnTypeWillChange]
+    public function count($key = null)
+    {
+        return count($this->get($key));
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * IteratorAggregate interface
+     * --------------------------------------------------------------
+     */
+
+     /**
+     * Get an iterator for the stored items
+     *
+     * @return \ArrayIterator
+     */
+    #[\ReturnTypeWillChange]
+    public function getIterator()
+    {
+        return new ArrayIterator($this->items);
+    }
+
+    /*
+     * --------------------------------------------------------------
+     * JsonSerializable interface
+     * --------------------------------------------------------------
+     */
+
+    /**
+     * Return items for JSON serialization
+     *
+     * @return array
+     */
+    #[\ReturnTypeWillChange]
+    public function jsonSerialize()
+    {
+        return $this->items;
+    }
+}

+ 24 - 0
include/vendor/adbario/php-dot-notation/src/helpers.php

@@ -0,0 +1,24 @@
+<?php
+/**
+ * Dot - PHP dot notation access to arrays
+ *
+ * @author  Riku Särkinen <riku@adbar.io>
+ * @link    https://github.com/adbario/php-dot-notation
+ * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License)
+ */
+
+use Adbar\Dot;
+
+if (! function_exists('dot')) {
+    /**
+     * Create a new Dot object with the given items and optional delimiter
+     *
+     * @param  mixed  $items
+     * @param  string $delimiter
+     * @return \Adbar\Dot
+     */
+    function dot($items, $delimiter = '.')
+    {
+        return new Dot($items, $delimiter);
+    }
+}

+ 14 - 0
include/vendor/alibabacloud/credentials/CHANGELOG.md

@@ -0,0 +1,14 @@
+# CHANGELOG
+
+## 1.1.3 - 2020-12-24
+
+- Require guzzle ^6.3|^7.0
+
+## 1.0.2 - 2020-02-14
+- Update Tea.
+
+## 1.0.1 - 2019-12-30
+- Supported get `Role Name` automatically.
+
+## 1.0.0 - 2019-09-01
+- Initial release of the Alibaba Cloud Credentials for PHP Version 1.0.0 on Packagist See <https://github.com/aliyun/credentials-php> for more information.

+ 30 - 0
include/vendor/alibabacloud/credentials/CONTRIBUTING.md

@@ -0,0 +1,30 @@
+# CONTRIBUTING
+
+We work hard to provide a high-quality and useful SDK for Alibaba Cloud, and
+we greatly value feedback and contributions from our community. Please submit
+your [issues][issues] or [pull requests][pull-requests] through GitHub.
+
+## Tips
+
+- The SDK is released under the [Apache license][license]. Any code you submit
+   will be released under that license. For substantial contributions, we may
+   ask you to sign a [Alibaba Documentation Corporate Contributor License 
+   Agreement (CLA)][cla].
+- We follow all of the relevant PSR recommendations from the [PHP Framework
+   Interop Group][php-fig]. Please submit code that follows these standards.
+   The [PHP CS Fixer][cs-fixer] tool can be helpful for formatting your code.
+   Your can use `composer fixer` to fix code.
+- We maintain a high percentage of code coverage in our unit tests. If you make
+   changes to the code, please add, update, and/or remove tests as appropriate.
+- If your code does not conform to the PSR standards, does not include adequate
+   tests, or does not contain a changelog document, we may ask you to update
+   your pull requests before we accept them. We also reserve the right to deny
+   any pull requests that do not align with our standards or goals.
+
+[issues]: https://github.com/aliyun/credentials-php/issues
+[pull-requests]: https://github.com/aliyun/credentials-php/pulls
+[license]: http://www.apache.org/licenses/LICENSE-2.0
+[cla]: https://alibaba-cla-2018.oss-cn-beijing.aliyuncs.com/Alibaba_Documentation_Open_Source_Corporate_CLA.pdf
+[php-fig]: http://php-fig.org
+[cs-fixer]: http://cs.sensiolabs.org/
+[docs-readme]: https://github.com/aliyun/credentials-php/blob/master/README.md

+ 13 - 0
include/vendor/alibabacloud/credentials/LICENSE.md

@@ -0,0 +1,13 @@
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.

+ 88 - 0
include/vendor/alibabacloud/credentials/NOTICE.md

@@ -0,0 +1,88 @@
+# NOTICE
+
+<https://www.alibabacloud.com/>
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License").
+You may not use this file except in compliance with the License.
+A copy of the License is located at
+
+<http://www.apache.org/licenses/LICENSE-2.0>
+
+or in the "license" file accompanying this file. This file is distributed
+on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+express or implied. See the License for the specific language governing
+permissions and limitations under the License.
+
+# Guzzle
+
+<https://github.com/guzzle/guzzle>
+
+Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+# jmespath.php
+
+<https://github.com/mtdowling/jmespath.php>
+
+Copyright (c) 2014 Michael Dowling, https://github.com/mtdowling
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+# Dot
+
+<https://github.com/adbario/php-dot-notation>
+
+Copyright (c) 2016-2019 Riku Särkinen
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

Fichier diff supprimé car celui-ci est trop grand
+ 250 - 0
include/vendor/alibabacloud/credentials/README-zh-CN.md


Fichier diff supprimé car celui-ci est trop grand
+ 251 - 0
include/vendor/alibabacloud/credentials/README.md


+ 21 - 0
include/vendor/alibabacloud/credentials/SECURITY.md

@@ -0,0 +1,21 @@
+# Security Policy
+
+## Supported Versions
+
+Use this section to tell people about which versions of your project are
+currently being supported with security updates.
+
+| Version | Supported          |
+| ------- | ------------------ |
+| 5.1.x   | :white_check_mark: |
+| 5.0.x   | :x:                |
+| 4.0.x   | :white_check_mark: |
+| < 4.0   | :x:                |
+
+## Reporting a Vulnerability
+
+Use this section to tell people how to report a vulnerability.
+
+Tell them where to go, how often they can expect to get an update on a
+reported vulnerability, what to expect if the vulnerability is accepted or
+declined, etc.

+ 6 - 0
include/vendor/alibabacloud/credentials/UPGRADING.md

@@ -0,0 +1,6 @@
+Upgrading Guide
+===============
+
+1.x
+-----------------------
+- This is the first version. See <https://github.com/aliyun/credentials-php> for more information.

+ 107 - 0
include/vendor/alibabacloud/credentials/composer.json

@@ -0,0 +1,107 @@
+{
+    "name": "alibabacloud/credentials",
+    "homepage": "https://www.alibabacloud.com/",
+    "description": "Alibaba Cloud Credentials for PHP",
+    "keywords": [
+        "sdk",
+        "tool",
+        "cloud",
+        "client",
+        "aliyun",
+        "library",
+        "alibaba",
+        "Credentials",
+        "alibabacloud"
+    ],
+    "type": "library",
+    "license": "Apache-2.0",
+    "support": {
+        "source": "https://github.com/aliyun/credentials-php",
+        "issues": "https://github.com/aliyun/credentials-php/issues"
+    },
+    "authors": [
+        {
+            "name": "Alibaba Cloud SDK",
+            "email": "sdk-team@alibabacloud.com",
+            "homepage": "http://www.alibabacloud.com"
+        }
+    ],
+    "require": {
+        "php": ">=5.6",
+        "ext-curl": "*",
+        "ext-json": "*",
+        "ext-libxml": "*",
+        "ext-openssl": "*",
+        "ext-mbstring": "*",
+        "ext-simplexml": "*",
+        "ext-xmlwriter": "*",
+        "guzzlehttp/guzzle": "^6.3|^7.0",
+        "adbario/php-dot-notation": "^2.2",
+        "alibabacloud/tea": "^3.0"
+    },
+    "require-dev": {
+        "ext-spl": "*",
+        "ext-dom": "*",
+        "ext-pcre": "*",
+        "psr/cache": "^1.0",
+        "ext-sockets": "*",
+        "drupal/coder": "^8.3",
+        "symfony/dotenv": "^3.4",
+        "phpunit/phpunit": "^5.7|^6.6|^7.5",
+        "monolog/monolog": "^1.24",
+        "composer/composer": "^1.8",
+        "mikey179/vfsstream": "^1.6",
+        "symfony/var-dumper": "^3.4"
+    },
+    "suggest": {
+        "ext-sockets": "To use client-side monitoring"
+    },
+    "autoload": {
+        "psr-4": {
+            "AlibabaCloud\\Credentials\\": "src"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "AlibabaCloud\\Credentials\\Tests\\": "tests/"
+        }
+    },
+    "config": {
+        "preferred-install": "dist",
+        "optimize-autoloader": true,
+        "allow-plugins": {
+            "dealerdirect/phpcodesniffer-composer-installer": true
+        }
+    },
+    "minimum-stability": "dev",
+    "prefer-stable": true,
+    "scripts-descriptions": {
+        "cs": "Tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard.",
+        "cbf": "Automatically correct coding standard violations.",
+        "fixer": "Fixes code to follow standards.",
+        "test": "Run all tests.",
+        "unit": "Run Unit tests.",
+        "feature": "Run Feature tests.",
+        "clearCache": "Clear cache like coverage.",
+        "coverage": "Show Coverage html.",
+        "endpoints": "Update endpoints from OSS."
+    },
+    "scripts": {
+        "cs": "phpcs --standard=PSR2 -n ./",
+        "cbf": "phpcbf --standard=PSR2 -n ./",
+        "fixer": "php-cs-fixer fix ./",
+        "test": [
+            "phpunit --colors=always"
+        ],
+        "unit": [
+            "@clearCache",
+            "phpunit --testsuite=Unit --colors=always"
+        ],
+        "feature": [
+            "@clearCache",
+            "phpunit --testsuite=Feature --colors=always"
+        ],
+        "coverage": "open cache/coverage/index.html",
+        "clearCache": "rm -rf cache/*"
+    }
+}

+ 72 - 0
include/vendor/alibabacloud/credentials/src/AccessKeyCredential.php

@@ -0,0 +1,72 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Signature\ShaHmac1Signature;
+
+/**
+ * Use the AccessKey to complete the authentication.
+ */
+class AccessKeyCredential implements CredentialsInterface
+{
+    /**
+     * @var string
+     */
+    private $accessKeyId;
+
+    /**
+     * @var string
+     */
+    private $accessKeySecret;
+
+    /**
+     * AccessKeyCredential constructor.
+     *
+     * @param string $access_key_id     Access key ID
+     * @param string $access_key_secret Access Key Secret
+     */
+    public function __construct($access_key_id, $access_key_secret)
+    {
+        Filter::accessKey($access_key_id, $access_key_secret);
+
+        $this->accessKeyId     = $access_key_id;
+        $this->accessKeySecret = $access_key_secret;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeyId()
+    {
+        return $this->accessKeyId;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeySecret()
+    {
+        return $this->accessKeySecret;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "$this->accessKeyId#$this->accessKeySecret";
+    }
+
+    /**
+     * @return ShaHmac1Signature
+     */
+    public function getSignature()
+    {
+        return new ShaHmac1Signature();
+    }
+
+    public function getSecurityToken()
+    {
+        return '';
+    }
+}

+ 53 - 0
include/vendor/alibabacloud/credentials/src/BearerTokenCredential.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Signature\BearerTokenSignature;
+
+/**
+ * Class BearerTokenCredential
+ */
+class BearerTokenCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $bearerToken;
+
+    /**
+     * BearerTokenCredential constructor.
+     *
+     * @param $bearer_token
+     */
+    public function __construct($bearer_token)
+    {
+        Filter::bearerToken($bearer_token);
+
+        $this->bearerToken = $bearer_token;
+    }
+
+    /**
+     * @return string
+     */
+    public function getBearerToken()
+    {
+        return $this->bearerToken;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "bearerToken#$this->bearerToken";
+    }
+
+    /**
+     * @return BearerTokenSignature
+     */
+    public function getSignature()
+    {
+        return new BearerTokenSignature();
+    }
+}

+ 183 - 0
include/vendor/alibabacloud/credentials/src/Credential.php

@@ -0,0 +1,183 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Credential\Config;
+use InvalidArgumentException;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionParameter;
+
+/**
+ * Class Credential
+ *
+ * @package AlibabaCloud\Credentials
+ *
+ * @mixin AccessKeyCredential
+ * @mixin BearerTokenCredential
+ * @mixin EcsRamRoleCredential
+ * @mixin RamRoleArnCredential
+ * @mixin RsaKeyPairCredential
+ */
+class Credential
+{
+    /**
+     * @var array
+     */
+    protected $config = [];
+
+    /**
+     * @var array
+     */
+    protected $types = [
+        'access_key'   => AccessKeyCredential::class,
+        'sts'          => StsCredential::class,
+        'ecs_ram_role' => EcsRamRoleCredential::class,
+        'ram_role_arn' => RamRoleArnCredential::class,
+        'rsa_key_pair' => RsaKeyPairCredential::class,
+        'bearer' => BearerTokenCredential::class,
+    ];
+
+    /**
+     * @var AccessKeyCredential|BearerTokenCredential|EcsRamRoleCredential|RamRoleArnCredential|RsaKeyPairCredential
+     */
+    protected $credential;
+
+    /**
+     * @var string
+     */
+    protected $type;
+
+    /**
+     * Credential constructor.
+     *
+     * @param array|Config $config
+     *
+     * @throws ReflectionException
+     */
+    public function __construct($config = [])
+    {
+        if ($config instanceof Config) {
+            $config = $this->parse($config);
+        }
+        if ($config !== []) {
+            $this->config = array_change_key_case($config);
+            $this->parseConfig();
+        } else {
+            $this->credential = Credentials::get()->getCredential();
+        }
+    }
+
+    /**
+     * @param Config $config
+     *
+     * @return array
+     */
+    private function parse($config)
+    {
+        $config = get_object_vars($config);
+        $res    = [];
+        foreach ($config as $key => $value) {
+            $res[$this->toUnderScore($key)] = $value;
+        }
+        return $res;
+    }
+
+    private function toUnderScore($str)
+    {
+        $dstr = preg_replace_callback('/([A-Z]+)/', function ($matchs) {
+            return '_' . strtolower($matchs[0]);
+        }, $str);
+        return trim(preg_replace('/_{2,}/', '_', $dstr), '_');
+    }
+
+    /**
+     * @throws ReflectionException
+     */
+    private function parseConfig()
+    {
+        if (!isset($this->config['type'])) {
+            throw  new InvalidArgumentException('Missing required type option');
+        }
+
+        $this->type = $this->config['type'];
+        if (!isset($this->types[$this->type])) {
+            throw  new InvalidArgumentException(
+                'Invalid type option, support: ' .
+                implode(', ', array_keys($this->types))
+            );
+        }
+
+        $class      = new ReflectionClass($this->types[$this->type]);
+        $parameters = [];
+        /**
+         * @var $parameter ReflectionParameter
+         */
+        foreach ($class->getConstructor()->getParameters() as $parameter) {
+            $parameters[] = $this->getValue($parameter);
+        }
+
+        $this->credential = $class->newInstance(...$parameters);
+    }
+
+    /**
+     * @param ReflectionParameter $parameter
+     *
+     * @return string|array
+     * @throws ReflectionException
+     */
+    protected function getValue(ReflectionParameter $parameter)
+    {
+        if ($parameter->name === 'config' || $parameter->name === 'credential') {
+            return $this->config;
+        }
+
+        foreach ($this->config as $key => $value) {
+            if (strtolower($parameter->name) === $key) {
+                return $value;
+            }
+        }
+
+        if ($parameter->isDefaultValueAvailable()) {
+            return $parameter->getDefaultValue();
+        }
+
+        throw new InvalidArgumentException("Missing required {$parameter->name} option in config for {$this->type}");
+    }
+
+    /**
+     * @return AccessKeyCredential|BearerTokenCredential|EcsRamRoleCredential|RamRoleArnCredential|RsaKeyPairCredential
+     */
+    public function getCredential()
+    {
+        return $this->credential;
+    }
+
+    /**
+     * @return array
+     */
+    public function getConfig()
+    {
+        return $this->config;
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return $this->type;
+    }
+
+
+    /**
+     * @param string $name
+     * @param array  $arguments
+     *
+     * @return mixed
+     */
+    public function __call($name, $arguments)
+    {
+        return $this->credential->$name($arguments);
+    }
+}

+ 50 - 0
include/vendor/alibabacloud/credentials/src/Credential/Config.php

@@ -0,0 +1,50 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Credential;
+
+class Config
+{
+    /**
+     * @var string
+     */
+    public $type = 'default';
+
+    public $accessKeyId = "";
+
+    public $accessKeySecret = "";
+
+    public $securityToken = "";
+
+    public $bearerToken = "";
+
+    public $roleName = "";
+
+    public $roleArn = "";
+
+    public $roleSessionName = "";
+
+    public $host = "";
+
+    public $publicKeyId = "";
+
+    public $privateKeyFile = "";
+
+    public $readTimeout = 0;
+
+    public $connectTimeout = 0;
+
+    public $certFile = "";
+
+    public $certPassword = "";
+
+    public $proxy = "";
+
+    public $expiration = 0;
+
+    public function __construct($config)
+    {
+        foreach ($config as $k => $v) {
+            $this->{$k} = $v;
+        }
+    }
+}

+ 102 - 0
include/vendor/alibabacloud/credentials/src/Credentials.php

@@ -0,0 +1,102 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Providers\ChainProvider;
+use ReflectionException;
+use RuntimeException;
+
+/**
+ * Class Credentials
+ *
+ * @package AlibabaCloud\Credentials
+ */
+class Credentials
+{
+    use MockTrait;
+
+    /**
+     * @var array|CredentialsInterface[] containers of credentials
+     */
+    protected static $credentials = [];
+
+    /**
+     * Get the credential instance by name.
+     *
+     * @param string $name
+     *
+     * @return Credential
+     * @throws ReflectionException
+     */
+    public static function get($name = null)
+    {
+        if ($name !== null) {
+            Filter::credentialName($name);
+        } else {
+            $name = ChainProvider::getDefaultName();
+        }
+
+        self::load();
+
+        if (self::has($name)) {
+            return new Credential(self::$credentials[\strtolower($name)]);
+        }
+
+        throw new RuntimeException("Credential '$name' not found");
+    }
+
+    private static function load()
+    {
+        if (self::$credentials) {
+            return;
+        }
+
+        if (ChainProvider::hasCustomChain()) {
+            ChainProvider::customProvider(ChainProvider::getDefaultName());
+        } else {
+            ChainProvider::defaultProvider(ChainProvider::getDefaultName());
+        }
+    }
+
+    /**
+     * Determine whether there is a credential.
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public static function has($name)
+    {
+        Filter::credentialName($name);
+
+        return isset(self::$credentials[\strtolower($name)]);
+    }
+
+    public static function flush()
+    {
+        self::$credentials = [];
+    }
+
+    /**
+     * Get all credentials.
+     *
+     * @return array
+     */
+    public static function all()
+    {
+        self::load();
+
+        return self::$credentials;
+    }
+
+    /**
+     * @param string $name
+     * @param array  $credential
+     */
+    public static function set($name, array $credential)
+    {
+        Filter::credentialName($name);
+
+        self::$credentials[\strtolower($name)] = \array_change_key_case($credential);
+    }
+}

+ 23 - 0
include/vendor/alibabacloud/credentials/src/CredentialsInterface.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Signature\SignatureInterface;
+
+/**
+ * Interface CredentialsInterface
+ *
+ * @codeCoverageIgnore
+ */
+interface CredentialsInterface
+{
+    /**
+     * @return string
+     */
+    public function __toString();
+
+    /**
+     * @return SignatureInterface
+     */
+    public function getSignature();
+}

+ 151 - 0
include/vendor/alibabacloud/credentials/src/EcsRamRoleCredential.php

@@ -0,0 +1,151 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Providers\EcsRamRoleProvider;
+use AlibabaCloud\Credentials\Request\Request;
+use AlibabaCloud\Credentials\Signature\ShaHmac1Signature;
+use Exception;
+use GuzzleHttp\Exception\GuzzleException;
+use InvalidArgumentException;
+use RuntimeException;
+
+/**
+ * Use the RAM role of an ECS instance to complete the authentication.
+ */
+class EcsRamRoleCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $roleName;
+
+    /**
+     * EcsRamRoleCredential constructor.
+     *
+     * @param $role_name
+     */
+    public function __construct($role_name = null)
+    {
+        Filter::roleName($role_name);
+
+        $this->roleName = $role_name;
+    }
+
+    /**
+     * @return string
+     * @throws GuzzleException
+     * @throws Exception
+     */
+    public function getRoleName()
+    {
+        if ($this->roleName !== null) {
+            return $this->roleName;
+        }
+
+        $this->roleName = $this->getRoleNameFromMeta();
+
+        return $this->roleName;
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     */
+    public function getRoleNameFromMeta()
+    {
+        $options = [
+            'http_errors'     => false,
+            'timeout'         => 1,
+            'connect_timeout' => 1,
+        ];
+
+        $result = Request::createClient()->request(
+            'GET',
+            'http://100.100.100.200/latest/meta-data/ram/security-credentials/',
+            $options
+        );
+
+        if ($result->getStatusCode() === 404) {
+            throw new InvalidArgumentException('The role name was not found in the instance');
+        }
+
+        if ($result->getStatusCode() !== 200) {
+            throw new RuntimeException('Error retrieving credentials from result: ' . $result->getBody());
+        }
+
+        $role_name = (string)$result;
+        if (!$role_name) {
+            throw new RuntimeException('Error retrieving credentials from result is empty');
+        }
+
+        return $role_name;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "roleName#$this->roleName";
+    }
+
+    /**
+     * @return ShaHmac1Signature
+     */
+    public function getSignature()
+    {
+        return new ShaHmac1Signature();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getAccessKeyId()
+    {
+        return $this->getSessionCredential()->getAccessKeyId();
+    }
+
+    /**
+     * @return StsCredential
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    protected function getSessionCredential()
+    {
+        return (new EcsRamRoleProvider($this))->get();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getAccessKeySecret()
+    {
+        return $this->getSessionCredential()->getAccessKeySecret();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getSecurityToken()
+    {
+        return $this->getSessionCredential()->getSecurityToken();
+    }
+
+    /**
+     * @return int
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getExpiration()
+    {
+        return $this->getSessionCredential()->getExpiration();
+    }
+}

+ 134 - 0
include/vendor/alibabacloud/credentials/src/Filter.php

@@ -0,0 +1,134 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use InvalidArgumentException;
+
+class Filter
+{
+
+    /**
+     * @param $name
+     *
+     * @codeCoverageIgnore
+     * @return string
+     */
+    public static function credentialName($name)
+    {
+        if (!is_string($name)) {
+            throw new InvalidArgumentException('Name must be a string');
+        }
+
+        if ($name === '') {
+            throw new InvalidArgumentException('Name cannot be empty');
+        }
+
+        return $name;
+    }
+
+    /**
+     * @param $bearerToken
+     *
+     * @return mixed
+     * @throws InvalidArgumentException
+     */
+    public static function bearerToken($bearerToken)
+    {
+        if (!is_string($bearerToken)) {
+            throw new InvalidArgumentException('bearer_token must be a string');
+        }
+
+        if ($bearerToken === '') {
+            throw new InvalidArgumentException('bearer_token cannot be empty');
+        }
+
+        return $bearerToken;
+    }
+
+    /**
+     * @param $publicKeyId
+     *
+     * @return mixed
+     */
+    public static function publicKeyId($publicKeyId)
+    {
+        if (!is_string($publicKeyId)) {
+            throw new InvalidArgumentException('public_key_id must be a string');
+        }
+
+        if ($publicKeyId === '') {
+            throw new InvalidArgumentException('public_key_id cannot be empty');
+        }
+
+        return $publicKeyId;
+    }
+
+    /**
+     * @param $privateKeyFile
+     *
+     * @return mixed
+     */
+    public static function privateKeyFile($privateKeyFile)
+    {
+        if (!is_string($privateKeyFile)) {
+            throw new InvalidArgumentException('private_key_file must be a string');
+        }
+
+        if ($privateKeyFile === '') {
+            throw new InvalidArgumentException('private_key_file cannot be empty');
+        }
+
+        return $privateKeyFile;
+    }
+
+    /**
+     * @param string|null $role_name
+     */
+    public static function roleName($role_name)
+    {
+        if ($role_name === null) {
+            return;
+        }
+
+        if (!is_string($role_name)) {
+            throw new InvalidArgumentException('role_name must be a string');
+        }
+
+        if ($role_name === '') {
+            throw new InvalidArgumentException('role_name cannot be empty');
+        }
+    }
+
+    /**
+     * @param string $accessKeyId
+     * @param string $accessKeySecret
+     */
+    public static function accessKey($accessKeyId, $accessKeySecret)
+    {
+        if (!is_string($accessKeyId)) {
+            throw new InvalidArgumentException('access_key_id must be a string');
+        }
+
+        if ($accessKeyId === '') {
+            throw new InvalidArgumentException('access_key_id cannot be empty');
+        }
+
+        if (!is_string($accessKeySecret)) {
+            throw new InvalidArgumentException('access_key_secret must be a string');
+        }
+
+        if ($accessKeySecret === '') {
+            throw new InvalidArgumentException('access_key_secret cannot be empty');
+        }
+    }
+
+    /**
+     * @param int $expiration
+     */
+    public static function expiration($expiration)
+    {
+        if (!is_int($expiration)) {
+            throw new InvalidArgumentException('expiration must be a int');
+        }
+    }
+}

+ 202 - 0
include/vendor/alibabacloud/credentials/src/Helper.php

@@ -0,0 +1,202 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use Closure;
+
+/**
+ * Class Helper
+ *
+ * @package AlibabaCloud\Credentials
+ */
+class Helper
+{
+    /**
+     * @param array $arrays
+     *
+     * @return array
+     */
+    public static function merge(array $arrays)
+    {
+        $result = [];
+        foreach ($arrays as $array) {
+            foreach ($array as $key => $value) {
+                if (is_int($key)) {
+                    $result[] = $value;
+                    continue;
+                }
+
+                if (isset($result[$key]) && is_array($result[$key])) {
+                    $result[$key] = self::merge(
+                        [$result[$key], $value]
+                    );
+                    continue;
+                }
+
+                $result[$key] = $value;
+            }
+        }
+
+        return $result;
+    }
+
+    /**
+     * @param      $filename
+     *
+     * @return bool
+     */
+    public static function inOpenBasedir($filename)
+    {
+        $open_basedir = ini_get('open_basedir');
+        if (!$open_basedir) {
+            return true;
+        }
+
+        $dirs = explode(PATH_SEPARATOR, $open_basedir);
+
+        return empty($dirs) || self::inDir($filename, $dirs);
+    }
+
+    /**
+     * @param string $filename
+     * @param array  $dirs
+     *
+     * @return bool
+     */
+    public static function inDir($filename, array $dirs)
+    {
+        foreach ($dirs as $dir) {
+            if ($dir[strlen($dir) - 1] !== DIRECTORY_SEPARATOR) {
+                $dir .= DIRECTORY_SEPARATOR;
+            }
+
+            if (0 === strpos($filename, $dir)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * @return bool
+     */
+    public static function isWindows()
+    {
+        return PATH_SEPARATOR === ';';
+    }
+
+    /**
+     * @param $key
+     *
+     * @return bool|mixed
+     */
+    public static function envNotEmpty($key)
+    {
+        $value = self::env($key, false);
+        if ($value) {
+            return $value;
+        }
+
+        return false;
+    }
+
+    /**
+     * Gets the value of an environment variable.
+     *
+     * @param string $key
+     * @param mixed  $default
+     *
+     * @return mixed
+     */
+    public static function env($key, $default = null)
+    {
+        $value = getenv($key);
+
+        if ($value === false) {
+            return self::value($default);
+        }
+
+        if (self::envSubstr($value)) {
+            return substr($value, 1, -1);
+        }
+
+        return self::envConversion($value);
+    }
+
+    /**
+     * Return the default value of the given value.
+     *
+     * @param mixed $value
+     *
+     * @return mixed
+     */
+    public static function value($value)
+    {
+        return $value instanceof Closure ? $value() : $value;
+    }
+
+    /**
+     * @param $value
+     *
+     * @return bool
+     */
+    public static function envSubstr($value)
+    {
+        return ($valueLength = strlen($value)) > 1
+            && strpos($value, '"') === 0
+            && $value[$valueLength - 1] === '"';
+    }
+
+    /**
+     * @param $value
+     *
+     * @return bool|string|null
+     */
+    public static function envConversion($value)
+    {
+        $key = strtolower($value);
+
+        if ($key === 'null' || $key === '(null)') {
+            return null;
+        }
+
+        $list = [
+            'true'    => true,
+            '(true)'  => true,
+            'false'   => false,
+            '(false)' => false,
+            'empty'   => '',
+            '(empty)' => '',
+        ];
+
+        return isset($list[$key]) ? $list[$key] : $value;
+    }
+
+    /**
+     * Gets the environment's HOME directory.
+     *
+     * @return null|string
+     */
+    public static function getHomeDirectory()
+    {
+        if (getenv('HOME')) {
+            return getenv('HOME');
+        }
+
+        return (getenv('HOMEDRIVE') && getenv('HOMEPATH'))
+            ? getenv('HOMEDRIVE') . getenv('HOMEPATH')
+            : null;
+    }
+
+    /**
+     * @param mixed ...$parameters
+     *
+     * @codeCoverageIgnore
+     */
+    public static function dd(...$parameters)
+    {
+        dump(...$parameters);
+        exit;
+    }
+}

+ 98 - 0
include/vendor/alibabacloud/credentials/src/MockTrait.php

@@ -0,0 +1,98 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use Exception;
+use GuzzleHttp\Exception\RequestException;
+use GuzzleHttp\Handler\MockHandler;
+use GuzzleHttp\Psr7\Response;
+use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
+
+/**
+ * Trait MockTrait
+ *
+ * @package AlibabaCloud\Credentials
+ */
+trait MockTrait
+{
+    /**
+     * @var array
+     */
+    private static $mockQueue = [];
+
+    /**
+     * @var MockHandler
+     */
+    private static $mock;
+
+    /**
+     * @param integer             $status
+     * @param array               $headers
+     * @param array|string|object $body
+     */
+    public static function mockResponse($status = 200, array $headers = [], $body = null)
+    {
+        if (is_array($body) || is_object($body)) {
+            $body = json_encode($body);
+        }
+
+        self::$mockQueue[] = new Response($status, $headers, $body);
+        self::createHandlerStack();
+    }
+
+    private static function createHandlerStack()
+    {
+        self::$mock = new MockHandler(self::$mockQueue);
+    }
+
+    /**
+     * @param string                 $message
+     * @param RequestInterface       $request
+     * @param ResponseInterface|null $response
+     * @param Exception|null         $previous
+     * @param array                  $handlerContext
+     */
+    public static function mockRequestException(
+        $message,
+        RequestInterface $request,
+        ResponseInterface $response = null,
+        Exception $previous = null,
+        array $handlerContext = []
+    ) {
+        self::$mockQueue[] = new RequestException(
+            $message,
+            $request,
+            $response,
+            $previous,
+            $handlerContext
+        );
+
+        self::createHandlerStack();
+    }
+
+    /**
+     * @return void
+     */
+    public static function cancelMock()
+    {
+        self::$mockQueue = [];
+        self::$mock      = null;
+    }
+
+    /**
+     * @return bool
+     */
+    public static function hasMock()
+    {
+        return (bool)self::$mockQueue;
+    }
+
+    /**
+     * @return MockHandler
+     */
+    public static function getMock()
+    {
+        return self::$mock;
+    }
+}

+ 187 - 0
include/vendor/alibabacloud/credentials/src/Providers/ChainProvider.php

@@ -0,0 +1,187 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Providers;
+
+use AlibabaCloud\Credentials\Credentials;
+use AlibabaCloud\Credentials\Helper;
+use Closure;
+use InvalidArgumentException;
+use RuntimeException;
+
+/**
+ * Class ChainProvider
+ *
+ * @package AlibabaCloud\Credentials\Providers
+ */
+class ChainProvider
+{
+    /**
+     * @var array
+     */
+    private static $customChains;
+
+    /**
+     * @param callable ...$providers
+     */
+    public static function set(...$providers)
+    {
+        if (empty($providers)) {
+            throw new InvalidArgumentException('No providers in chain');
+        }
+
+        foreach ($providers as $provider) {
+            if (!$provider instanceof Closure) {
+                throw new InvalidArgumentException('Providers must all be Closures');
+            }
+        }
+
+        self::$customChains = $providers;
+    }
+
+    /**
+     * @return bool
+     */
+    public static function hasCustomChain()
+    {
+        return (bool)self::$customChains;
+    }
+
+    public static function flush()
+    {
+        self::$customChains = [];
+    }
+
+    /**
+     * @param string $name
+     */
+    public static function customProvider($name)
+    {
+        foreach (self::$customChains as $provider) {
+            $provider();
+
+            if (Credentials::has($name)) {
+                break;
+            }
+        }
+    }
+
+    /**
+     * @param string $name
+     */
+    public static function defaultProvider($name)
+    {
+        $providers = [
+            self::env(),
+            self::ini(),
+            self::instance(),
+        ];
+
+        foreach ($providers as $provider) {
+            $provider();
+
+            if (Credentials::has($name)) {
+                break;
+            }
+        }
+    }
+
+    /**
+     * @return Closure
+     */
+    public static function env()
+    {
+        return static function () {
+            $accessKeyId     = Helper::envNotEmpty('ALIBABA_CLOUD_ACCESS_KEY_ID');
+            $accessKeySecret = Helper::envNotEmpty('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
+
+            if ($accessKeyId && $accessKeySecret) {
+                Credentials::set(
+                    self::getDefaultName(),
+                    [
+                        'type'              => 'access_key',
+                        'access_key_id'     => $accessKeyId,
+                        'access_key_secret' => $accessKeySecret,
+                    ]
+                );
+            }
+        };
+    }
+
+    /**
+     * @return string
+     */
+    public static function getDefaultName()
+    {
+        $name = Helper::envNotEmpty('ALIBABA_CLOUD_PROFILE');
+
+        if ($name) {
+            return $name;
+        }
+
+        return 'default';
+    }
+
+    /**
+     * @return Closure
+     */
+    public static function ini()
+    {
+        return static function () {
+            $filename = Helper::envNotEmpty('ALIBABA_CLOUD_CREDENTIALS_FILE');
+            if (!$filename) {
+                $filename = self::getDefaultFile();
+            }
+
+            if (!Helper::inOpenBasedir($filename)) {
+                return;
+            }
+
+            if ($filename !== self::getDefaultFile() && (!\is_readable($filename) || !\is_file($filename))) {
+                throw new RuntimeException(
+                    'Credentials file is not readable: ' . $filename
+                );
+            }
+
+            $file_array = \parse_ini_file($filename, true);
+
+            if (\is_array($file_array) && !empty($file_array)) {
+                foreach (\array_change_key_case($file_array) as $name => $configures) {
+                    Credentials::set($name, $configures);
+                }
+            }
+        };
+    }
+
+    /**
+     * Get the default credential file.
+     *
+     * @return string
+     */
+    public static function getDefaultFile()
+    {
+        return Helper::getHomeDirectory() .
+               DIRECTORY_SEPARATOR .
+               '.alibabacloud' .
+               DIRECTORY_SEPARATOR .
+               'credentials';
+    }
+
+    /**
+     * @return Closure
+     */
+    public static function instance()
+    {
+        return static function () {
+            $instance = Helper::envNotEmpty('ALIBABA_CLOUD_ECS_METADATA');
+            if ($instance) {
+                Credentials::set(
+                    self::getDefaultName(),
+                    [
+                        'type'      => 'ecs_ram_role',
+                        'role_name' => $instance,
+                    ]
+                );
+            }
+        };
+    }
+}

+ 94 - 0
include/vendor/alibabacloud/credentials/src/Providers/EcsRamRoleProvider.php

@@ -0,0 +1,94 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Providers;
+
+use AlibabaCloud\Credentials\Request\Request;
+use AlibabaCloud\Credentials\StsCredential;
+use Exception;
+use GuzzleHttp\Exception\GuzzleException;
+use AlibabaCloud\Tea\Response;
+use InvalidArgumentException;
+use Psr\Http\Message\ResponseInterface;
+use RuntimeException;
+
+/**
+ * Class EcsRamRoleProvider
+ *
+ * @package AlibabaCloud\Credentials\Providers
+ */
+class EcsRamRoleProvider extends Provider
+{
+
+    /**
+     * Expiration time slot for temporary security credentials.
+     *
+     * @var int
+     */
+    protected $expirationSlot = 10;
+
+    /**
+     * @var string
+     */
+    private $uri = 'http://100.100.100.200/latest/meta-data/ram/security-credentials/';
+
+    /**
+     * Get credential.
+     *
+     * @return StsCredential
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function get()
+    {
+        $result = $this->getCredentialsInCache();
+
+        if ($result === null) {
+            $result = $this->request();
+
+            if (!isset($result['AccessKeyId'], $result['AccessKeySecret'], $result['SecurityToken'])) {
+                throw new RuntimeException($this->error);
+            }
+
+            $this->cache($result->toArray());
+        }
+
+        return new StsCredential(
+            $result['AccessKeyId'],
+            $result['AccessKeySecret'],
+            strtotime($result['Expiration']),
+            $result['SecurityToken']
+        );
+    }
+
+    /**
+     * Get credentials by request.
+     *
+     * @return ResponseInterface
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function request()
+    {
+        $credential = $this->credential;
+        $url        = $this->uri . $credential->getRoleName();
+
+        $options = [
+            'http_errors'     => false,
+            'timeout'         => 1,
+            'connect_timeout' => 1,
+        ];
+
+        $result = Request::createClient()->request('GET', $url, $options);
+
+        if ($result->getStatusCode() === 404) {
+            $message = 'The role was not found in the instance';
+            throw new InvalidArgumentException($message);
+        }
+
+        if ($result->getStatusCode() !== 200) {
+            throw new RuntimeException('Error retrieving credentials from result: ' . $result->toJson());
+        }
+
+        return $result;
+    }
+}

+ 82 - 0
include/vendor/alibabacloud/credentials/src/Providers/Provider.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Providers;
+
+use AlibabaCloud\Credentials\CredentialsInterface;
+use AlibabaCloud\Credentials\EcsRamRoleCredential;
+use AlibabaCloud\Credentials\RamRoleArnCredential;
+use AlibabaCloud\Credentials\RsaKeyPairCredential;
+
+abstract class Provider
+{
+    /**
+     * For TSC Duration Seconds
+     */
+    const DURATION_SECONDS = 3600;
+
+    /**
+     * @var array
+     */
+    protected static $credentialsCache = [];
+
+    /**
+     * Expiration time slot for temporary security credentials.
+     *
+     * @var int
+     */
+    protected $expirationSlot = 180;
+
+    /**
+     * @var RamRoleArnCredential|RsaKeyPairCredential|EcsRamRoleCredential
+     */
+    protected $credential;
+
+    /**
+     * @var string
+     */
+    protected $error = 'Result contains no credentials';
+
+    /**
+     * @var array
+     */
+    protected $config = [];
+
+    /**
+     * CredentialTrait constructor.
+     *
+     * @param CredentialsInterface $credential
+     * @param array                $config
+     */
+    public function __construct(CredentialsInterface $credential, $config = [])
+    {
+        $this->credential = $credential;
+        $this->config     = $config;
+    }
+
+    /**
+     * Get the credentials from the cache in the validity period.
+     *
+     * @return array|null
+     */
+    public function getCredentialsInCache()
+    {
+        if (isset(self::$credentialsCache[(string)$this->credential])) {
+            $result = self::$credentialsCache[(string)$this->credential];
+            if (\strtotime($result['Expiration']) - \time() >= $this->expirationSlot) {
+                return $result;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * Cache credentials.
+     *
+     * @param array $credential
+     */
+    protected function cache(array $credential)
+    {
+        self::$credentialsCache[(string)$this->credential] = $credential;
+    }
+}

+ 49 - 0
include/vendor/alibabacloud/credentials/src/Providers/RamRoleArnProvider.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Providers;
+
+use AlibabaCloud\Credentials\Request\AssumeRole;
+use AlibabaCloud\Credentials\StsCredential;
+use Exception;
+use GuzzleHttp\Exception\GuzzleException;
+use RuntimeException;
+
+class RamRoleArnProvider extends Provider
+{
+
+    /**
+     * Get credential.
+     *
+     * @return StsCredential
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function get()
+    {
+        $credential = $this->getCredentialsInCache();
+
+        if (null === $credential) {
+            $result = (new AssumeRole($this->credential))->request();
+
+            if ($result->getStatusCode() !== 200) {
+                throw new RuntimeException(isset($result['Message']) ? $result['Message'] : (string)$result->getBody());
+            }
+
+            if (!isset($result['Credentials']['AccessKeyId'],
+                $result['Credentials']['AccessKeySecret'],
+                $result['Credentials']['SecurityToken'])) {
+                throw new RuntimeException($this->error);
+            }
+
+            $credential = $result['Credentials'];
+            $this->cache($credential);
+        }
+
+        return new StsCredential(
+            $credential['AccessKeyId'],
+            $credential['AccessKeySecret'],
+            strtotime($credential['Expiration']),
+            $credential['SecurityToken']
+        );
+    }
+}

+ 53 - 0
include/vendor/alibabacloud/credentials/src/Providers/RsaKeyPairProvider.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Providers;
+
+use AlibabaCloud\Credentials\Request\GenerateSessionAccessKey;
+use AlibabaCloud\Credentials\StsCredential;
+use Exception;
+use GuzzleHttp\Exception\GuzzleException;
+use RuntimeException;
+
+/**
+ * Class RsaKeyPairProvider
+ *
+ * @package AlibabaCloud\Credentials\Providers
+ */
+class RsaKeyPairProvider extends Provider
+{
+
+    /**
+     * Get credential.
+     *
+     *
+     * @return StsCredential
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function get()
+    {
+        $credential = $this->getCredentialsInCache();
+
+        if ($credential === null) {
+            $result = (new GenerateSessionAccessKey($this->credential))->request();
+
+            if ($result->getStatusCode() !== 200) {
+                throw new RuntimeException(isset($result['Message']) ? $result['Message'] : (string)$result->getBody());
+            }
+
+            if (!isset($result['SessionAccessKey']['SessionAccessKeyId'],
+                $result['SessionAccessKey']['SessionAccessKeySecret'])) {
+                throw new RuntimeException($this->error);
+            }
+
+            $credential = $result['SessionAccessKey'];
+            $this->cache($credential);
+        }
+
+        return new StsCredential(
+            $credential['SessionAccessKeyId'],
+            $credential['SessionAccessKeySecret'],
+            strtotime($credential['Expiration'])
+        );
+    }
+}

+ 218 - 0
include/vendor/alibabacloud/credentials/src/RamRoleArnCredential.php

@@ -0,0 +1,218 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Providers\RamRoleArnProvider;
+use AlibabaCloud\Credentials\Signature\ShaHmac1Signature;
+use Exception;
+use GuzzleHttp\Exception\GuzzleException;
+use InvalidArgumentException;
+
+/**
+ * Use the AssumeRole of the RAM account to complete  the authentication.
+ */
+class RamRoleArnCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $accessKeyId;
+
+    /**
+     * @var string
+     */
+    private $accessKeySecret;
+
+    /**
+     * @var string
+     */
+    private $roleArn;
+
+    /**
+     * @var string
+     */
+    private $roleSessionName;
+
+    /**
+     * @var string
+     */
+    private $policy;
+
+    /**
+     * @var array
+     */
+    private $config;
+
+    /**
+     * RamRoleArnCredential constructor.
+     *
+     * @param array $credential
+     * @param array $config
+     */
+    public function __construct(array $credential = [], array $config = [])
+    {
+        $this->filterParameters($credential);
+        $this->filterPolicy($credential);
+
+        Filter::accessKey($credential['access_key_id'], $credential['access_key_secret']);
+
+        $this->config          = $config;
+        $this->accessKeyId     = $credential['access_key_id'];
+        $this->accessKeySecret = $credential['access_key_secret'];
+        $this->roleArn         = $credential['role_arn'];
+        $this->roleSessionName = $credential['role_session_name'];
+    }
+
+    /**
+     * @param array $credential
+     */
+    private function filterParameters(array $credential)
+    {
+        if (!isset($credential['access_key_id'])) {
+            throw new InvalidArgumentException('Missing required access_key_id option in config for ram_role_arn');
+        }
+
+        if (!isset($credential['access_key_secret'])) {
+            throw new InvalidArgumentException('Missing required access_key_secret option in config for ram_role_arn');
+        }
+
+        if (!isset($credential['role_arn'])) {
+            throw new InvalidArgumentException('Missing required role_arn option in config for ram_role_arn');
+        }
+
+        if (!isset($credential['role_session_name'])) {
+            throw new InvalidArgumentException('Missing required role_session_name option in config for ram_role_arn');
+        }
+    }
+
+    /**
+     * @param array $credential
+     */
+    private function filterPolicy(array $credential)
+    {
+        if (isset($credential['policy'])) {
+            if (is_string($credential['policy'])) {
+                $this->policy = $credential['policy'];
+            }
+
+            if (is_array($credential['policy'])) {
+                $this->policy = json_encode($credential['policy']);
+            }
+        }
+    }
+
+    /**
+     * @return array
+     */
+    public function getConfig()
+    {
+        return $this->config;
+    }
+
+    /**
+     * @return string
+     */
+    public function getRoleArn()
+    {
+        return $this->roleArn;
+    }
+
+    /**
+     * @return string
+     */
+    public function getRoleSessionName()
+    {
+        return $this->roleSessionName;
+    }
+
+    /**
+     * @return string
+     */
+    public function getPolicy()
+    {
+        return $this->policy;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "$this->accessKeyId#$this->accessKeySecret#$this->roleArn#$this->roleSessionName";
+    }
+
+    /**
+     * @return ShaHmac1Signature
+     */
+    public function getSignature()
+    {
+        return new ShaHmac1Signature();
+    }
+
+    /**
+     * @return string
+     */
+    public function getOriginalAccessKeyId()
+    {
+        return $this->accessKeyId;
+    }
+
+    /**
+     * @return string
+     */
+    public function getOriginalAccessKeySecret()
+    {
+        return $this->accessKeySecret;
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getAccessKeyId()
+    {
+        return $this->getSessionCredential()->getAccessKeyId();
+    }
+
+    /**
+     * @return StsCredential
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    protected function getSessionCredential()
+    {
+        return (new RamRoleArnProvider($this))->get();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getAccessKeySecret()
+    {
+        return $this->getSessionCredential()->getAccessKeySecret();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getSecurityToken()
+    {
+        return $this->getSessionCredential()->getSecurityToken();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getExpiration()
+    {
+        return $this->getSessionCredential()->getExpiration();
+    }
+}

+ 37 - 0
include/vendor/alibabacloud/credentials/src/Request/AssumeRole.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Request;
+
+use AlibabaCloud\Credentials\Providers\Provider;
+use AlibabaCloud\Credentials\RamRoleArnCredential;
+use AlibabaCloud\Credentials\Signature\ShaHmac1Signature;
+
+/**
+ * Retrieving assume role credentials.
+ */
+class AssumeRole extends Request
+{
+    /**
+     * AssumeRole constructor.
+     *
+     * @param RamRoleArnCredential $arnCredential
+     */
+    public function __construct(RamRoleArnCredential $arnCredential)
+    {
+        parent::__construct();
+        $this->signature                           = new ShaHmac1Signature();
+        $this->credential                          = $arnCredential;
+        $this->uri                                 = $this->uri->withHost('sts.aliyuncs.com');
+        $this->options['verify']                   = false;
+        $this->options['query']['RoleArn']         = $arnCredential->getRoleArn();
+        $this->options['query']['RoleSessionName'] = $arnCredential->getRoleSessionName();
+        $this->options['query']['DurationSeconds'] = Provider::DURATION_SECONDS;
+        $this->options['query']['AccessKeyId']     = $this->credential->getOriginalAccessKeyId();
+        $this->options['query']['Version']         = '2015-04-01';
+        $this->options['query']['Action']          = 'AssumeRole';
+        $this->options['query']['RegionId']        = 'cn-hangzhou';
+        if ($arnCredential->getPolicy()) {
+            $this->options['query']['Policy'] = $arnCredential->getPolicy();
+        }
+    }
+}

+ 33 - 0
include/vendor/alibabacloud/credentials/src/Request/GenerateSessionAccessKey.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Request;
+
+use AlibabaCloud\Credentials\Providers\Provider;
+use AlibabaCloud\Credentials\RsaKeyPairCredential;
+use AlibabaCloud\Credentials\Signature\ShaHmac256WithRsaSignature;
+
+/**
+ * Use the RSA key pair to complete the authentication (supported only on Japanese site)
+ */
+class GenerateSessionAccessKey extends Request
+{
+    /**
+     * GenerateSessionAccessKey constructor.
+     *
+     * @param RsaKeyPairCredential $credential
+     */
+    public function __construct(RsaKeyPairCredential $credential)
+    {
+        parent::__construct();
+        $this->signature                           = new ShaHmac256WithRsaSignature();
+        $this->credential                          = $credential;
+        $this->uri                                 = $this->uri->withHost('sts.ap-northeast-1.aliyuncs.com');
+        $this->options['verify']                   = false;
+        $this->options['query']['Version']         = '2015-04-01';
+        $this->options['query']['Action']          = 'GenerateSessionAccessKey';
+        $this->options['query']['RegionId']        = 'cn-hangzhou';
+        $this->options['query']['AccessKeyId']     = $credential->getPublicKeyId();
+        $this->options['query']['PublicKeyId']     = $credential->getPublicKeyId();
+        $this->options['query']['DurationSeconds'] = Provider::DURATION_SECONDS;
+    }
+}

+ 155 - 0
include/vendor/alibabacloud/credentials/src/Request/Request.php

@@ -0,0 +1,155 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Request;
+
+use AlibabaCloud\Credentials\Credentials;
+use AlibabaCloud\Credentials\EcsRamRoleCredential;
+use AlibabaCloud\Credentials\Helper;
+use AlibabaCloud\Credentials\RamRoleArnCredential;
+use AlibabaCloud\Credentials\Signature\ShaHmac1Signature;
+use AlibabaCloud\Credentials\Signature\ShaHmac256WithRsaSignature;
+use Exception;
+use GuzzleHttp\Client;
+use GuzzleHttp\HandlerStack;
+use GuzzleHttp\Middleware;
+use GuzzleHttp\Psr7\Uri;
+use AlibabaCloud\Tea\Response;
+use Psr\Http\Message\ResponseInterface;
+
+/**
+ * RESTful RPC Request.
+ */
+class Request
+{
+
+    /**
+     * Request Connect Timeout
+     */
+    const CONNECT_TIMEOUT = 5;
+
+    /**
+     * Request Timeout
+     */
+    const TIMEOUT = 10;
+
+    /**
+     * @var array
+     */
+    private static $config = [];
+
+    /**
+     * @var array
+     */
+    public $options = [];
+
+    /**
+     * @var Uri
+     */
+    public $uri;
+
+    /**
+     * @var EcsRamRoleCredential|RamRoleArnCredential
+     */
+    protected $credential;
+
+    /**
+     * @var ShaHmac256WithRsaSignature|ShaHmac1Signature
+     */
+    protected $signature;
+
+    /**
+     * Request constructor.
+     */
+    public function __construct()
+    {
+        $this->uri                        = (new Uri())->withScheme('https');
+        $this->options['http_errors']     = false;
+        $this->options['connect_timeout'] = self::CONNECT_TIMEOUT;
+        $this->options['timeout']         = self::TIMEOUT;
+
+        // Turn on debug mode based on environment variable.
+        if (strtolower(Helper::env('DEBUG')) === 'sdk') {
+            $this->options['debug'] = true;
+        }
+    }
+
+    /**
+     * @return ResponseInterface
+     * @throws Exception
+     */
+    public function request()
+    {
+        $this->options['query']['Format']           = 'JSON';
+        $this->options['query']['SignatureMethod']  = $this->signature->getMethod();
+        $this->options['query']['SignatureVersion'] = $this->signature->getVersion();
+        $this->options['query']['SignatureNonce']   = self::uuid(json_encode($this->options['query']));
+        $this->options['query']['Timestamp']        = gmdate('Y-m-d\TH:i:s\Z');
+        $this->options['query']['Signature']        = $this->signature->sign(
+            self::signString('GET', $this->options['query']),
+            $this->credential->getOriginalAccessKeySecret() . '&'
+        );
+        return self::createClient()->request('GET', (string)$this->uri, $this->options);
+    }
+
+    /**
+     * @param string $salt
+     *
+     * @return string
+     */
+    public static function uuid($salt)
+    {
+        return md5($salt . uniqid(md5(microtime(true)), true));
+    }
+
+    /**
+     * @param string $method
+     * @param array  $parameters
+     *
+     * @return string
+     */
+    public static function signString($method, array $parameters)
+    {
+        ksort($parameters);
+        $canonicalized = '';
+        foreach ($parameters as $key => $value) {
+            $canonicalized .= '&' . self::percentEncode($key) . '=' . self::percentEncode($value);
+        }
+
+        return $method . '&%2F&' . self::percentEncode(substr($canonicalized, 1));
+    }
+
+    /**
+     * @param string $string
+     *
+     * @return null|string|string[]
+     */
+    private static function percentEncode($string)
+    {
+        $result = rawurlencode($string);
+        $result = str_replace(['+', '*'], ['%20', '%2A'], $result);
+        $result = preg_replace('/%7E/', '~', $result);
+
+        return $result;
+    }
+
+    /**
+     * @return Client
+     * @throws Exception
+     */
+    public static function createClient()
+    {
+        if (Credentials::hasMock()) {
+            $stack = HandlerStack::create(Credentials::getMock());
+        } else {
+            $stack = HandlerStack::create();
+        }
+
+        $stack->push(Middleware::mapResponse(static function (ResponseInterface $response) {
+            return new Response($response);
+        }));
+
+        self::$config['handler'] = $stack;
+
+        return new Client(self::$config);
+    }
+}

+ 158 - 0
include/vendor/alibabacloud/credentials/src/RsaKeyPairCredential.php

@@ -0,0 +1,158 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Providers\RsaKeyPairProvider;
+use AlibabaCloud\Credentials\Signature\ShaHmac1Signature;
+use Exception;
+use GuzzleHttp\Exception\GuzzleException;
+use InvalidArgumentException;
+
+/**
+ * Use the RSA key pair to complete the authentication (supported only on Japanese site)
+ */
+class RsaKeyPairCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $publicKeyId;
+
+    /**
+     * @var string
+     */
+    private $privateKey;
+
+    /**
+     * @var array
+     */
+    private $config;
+
+    /**
+     * RsaKeyPairCredential constructor.
+     *
+     * @param string $public_key_id
+     * @param string $private_key_file
+     * @param array  $config
+     */
+    public function __construct($public_key_id, $private_key_file, array $config = [])
+    {
+        Filter::publicKeyId($public_key_id);
+        Filter::privateKeyFile($private_key_file);
+
+        $this->publicKeyId = $public_key_id;
+        $this->config      = $config;
+        try {
+            $this->privateKey = file_get_contents($private_key_file);
+        } catch (Exception $exception) {
+            throw new InvalidArgumentException($exception->getMessage());
+        }
+    }
+
+    /**
+     * @return array
+     */
+    public function getConfig()
+    {
+        return $this->config;
+    }
+
+    /**
+     * @return string
+     */
+    public function getOriginalAccessKeyId()
+    {
+        return $this->getPublicKeyId();
+    }
+
+    /**
+     * @return string
+     */
+    public function getPublicKeyId()
+    {
+        return $this->publicKeyId;
+    }
+
+    /**
+     * @return string
+     */
+    public function getOriginalAccessKeySecret()
+    {
+        return $this->getPrivateKey();
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getPrivateKey()
+    {
+        return $this->privateKey;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "publicKeyId#$this->publicKeyId";
+    }
+
+    /**
+     * @return ShaHmac1Signature
+     */
+    public function getSignature()
+    {
+        return new ShaHmac1Signature();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getAccessKeyId()
+    {
+        return $this->getSessionCredential()->getAccessKeyId();
+    }
+
+    /**
+     * @return StsCredential
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    protected function getSessionCredential()
+    {
+        return (new RsaKeyPairProvider($this))->get();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getAccessKeySecret()
+    {
+        return $this->getSessionCredential()->getAccessKeySecret();
+    }
+
+    /**
+     * @return string
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getSecurityToken()
+    {
+        return $this->getSessionCredential()->getSecurityToken();
+    }
+
+    /**
+     * @return int
+     * @throws Exception
+     * @throws GuzzleException
+     */
+    public function getExpiration()
+    {
+        return $this->getSessionCredential()->getExpiration();
+    }
+}

+ 47 - 0
include/vendor/alibabacloud/credentials/src/Signature/BearerTokenSignature.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Signature;
+
+/**
+ * Class BearerTokenSignature
+ *
+ * @package AlibabaCloud\Credentials\Signature
+ */
+class BearerTokenSignature implements SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod()
+    {
+        return '';
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return 'BEARERTOKEN';
+    }
+
+    /**
+     * @return string
+     */
+    public function getVersion()
+    {
+        return '1.0';
+    }
+
+    /**
+     * @param string $string
+     * @param string $accessKeySecret
+     *
+     * @return string
+     */
+    public function sign($string, $accessKeySecret)
+    {
+        return '';
+    }
+}

+ 47 - 0
include/vendor/alibabacloud/credentials/src/Signature/ShaHmac1Signature.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Signature;
+
+/**
+ * Class ShaHmac1Signature
+ *
+ * @package AlibabaCloud\Credentials\Signature
+ */
+class ShaHmac1Signature implements SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod()
+    {
+        return 'HMAC-SHA1';
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return '';
+    }
+
+    /**
+     * @return string
+     */
+    public function getVersion()
+    {
+        return '1.0';
+    }
+
+    /**
+     * @param string $string
+     * @param string $accessKeySecret
+     *
+     * @return string
+     */
+    public function sign($string, $accessKeySecret)
+    {
+        return base64_encode(hash_hmac('sha1', $string, $accessKeySecret, true));
+    }
+}

+ 47 - 0
include/vendor/alibabacloud/credentials/src/Signature/ShaHmac256Signature.php

@@ -0,0 +1,47 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Signature;
+
+/**
+ * Class ShaHmac256Signature
+ *
+ * @package AlibabaCloud\Credentials\Signature
+ */
+class ShaHmac256Signature implements SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod()
+    {
+        return 'HMAC-SHA256';
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return '';
+    }
+
+    /**
+     * @return string
+     */
+    public function getVersion()
+    {
+        return '1.0';
+    }
+
+    /**
+     * @param string $string
+     * @param string $accessKeySecret
+     *
+     * @return string
+     */
+    public function sign($string, $accessKeySecret)
+    {
+        return base64_encode(hash_hmac('sha256', $string, $accessKeySecret, true));
+    }
+}

+ 64 - 0
include/vendor/alibabacloud/credentials/src/Signature/ShaHmac256WithRsaSignature.php

@@ -0,0 +1,64 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Signature;
+
+use Exception;
+use InvalidArgumentException;
+
+/**
+ * Class ShaHmac256WithRsaSignature
+ *
+ * @package AlibabaCloud\Credentials\Signature
+ */
+class ShaHmac256WithRsaSignature implements SignatureInterface
+{
+
+    /**
+     * @return string
+     */
+    public function getMethod()
+    {
+        return 'SHA256withRSA';
+    }
+
+    /**
+     * @return string
+     */
+    public function getType()
+    {
+        return 'PRIVATEKEY';
+    }
+
+    /**
+     * @return string
+     */
+    public function getVersion()
+    {
+        return '1.0';
+    }
+
+    /**
+     * @param string $string
+     * @param string $privateKey
+     *
+     * @return string
+     */
+    public function sign($string, $privateKey)
+    {
+        $binarySignature = '';
+        try {
+            openssl_sign(
+                $string,
+                $binarySignature,
+                $privateKey,
+                \OPENSSL_ALGO_SHA256
+            );
+        } catch (Exception $exception) {
+            throw  new InvalidArgumentException(
+                $exception->getMessage()
+            );
+        }
+
+        return base64_encode($binarySignature);
+    }
+}

+ 34 - 0
include/vendor/alibabacloud/credentials/src/Signature/SignatureInterface.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace AlibabaCloud\Credentials\Signature;
+
+/**
+ * Interface SignatureInterface
+ *
+ * @package AlibabaCloud\Credentials\Signature
+ */
+interface SignatureInterface
+{
+    /**
+     * @return string
+     */
+    public function getMethod();
+
+    /**
+     * @return string
+     */
+    public function getVersion();
+
+    /**
+     * @param string $string
+     * @param string $accessKeySecret
+     *
+     * @return string
+     */
+    public function sign($string, $accessKeySecret);
+
+    /**
+     * @return string
+     */
+    public function getType();
+}

+ 98 - 0
include/vendor/alibabacloud/credentials/src/StsCredential.php

@@ -0,0 +1,98 @@
+<?php
+
+namespace AlibabaCloud\Credentials;
+
+use AlibabaCloud\Credentials\Signature\ShaHmac1Signature;
+
+/**
+ * Use the STS Token to complete the authentication.
+ */
+class StsCredential implements CredentialsInterface
+{
+
+    /**
+     * @var string
+     */
+    private $accessKeyId;
+
+    /**
+     * @var string
+     */
+    private $accessKeySecret;
+
+    /**
+     * @var string
+     */
+    private $securityToken;
+
+    /**
+     * @var int
+     */
+    private $expiration;
+
+    /**
+     * StsCredential constructor.
+     *
+     * @param string $access_key_id     Access key ID
+     * @param string $access_key_secret Access Key Secret
+     * @param int    $expiration
+     * @param string $security_token    Security Token
+     */
+    public function __construct($access_key_id, $access_key_secret, $expiration, $security_token = '')
+    {
+        Filter::accessKey($access_key_id, $access_key_secret);
+        Filter::expiration($expiration);
+        $this->accessKeyId     = $access_key_id;
+        $this->accessKeySecret = $access_key_secret;
+        $this->expiration      = $expiration;
+        $this->securityToken   = $security_token;
+    }
+
+    /**
+     * @return int
+     */
+    public function getExpiration()
+    {
+        return $this->expiration;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeyId()
+    {
+        return $this->accessKeyId;
+    }
+
+    /**
+     * @return string
+     */
+    public function getAccessKeySecret()
+    {
+        return $this->accessKeySecret;
+    }
+
+    /**
+     * @return string
+     */
+    public function getSecurityToken()
+    {
+        return $this->securityToken;
+    }
+
+    /**
+     * @return string
+     */
+    public function __toString()
+    {
+        return "$this->accessKeyId#$this->accessKeySecret#$this->securityToken";
+    }
+
+    /**
+     * @return ShaHmac1Signature
+     */
+    public function getSignature()
+    {
+        return new ShaHmac1Signature();
+    }
+}

+ 15 - 0
include/vendor/alibabacloud/darabonba-openapi/.gitignore

@@ -0,0 +1,15 @@
+composer.phar
+/vendor/
+
+# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
+# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
+composer.lock
+
+.vscode/
+.idea
+.DS_Store
+
+cache/
+*.cache
+runtime/
+.php_cs.cache

+ 65 - 0
include/vendor/alibabacloud/darabonba-openapi/.php_cs.dist

@@ -0,0 +1,65 @@
+<?php
+/*
+ * This document has been generated with
+ * https://mlocati.github.io/php-cs-fixer-configurator/#version:2.15|configurator
+ * you can change this configuration by importing this file.
+ */
+
+return PhpCsFixer\Config::create()
+    ->setRiskyAllowed(true)
+    ->setIndent('    ')
+    ->setRules([
+        '@PSR2'                                       => true,
+        '@PhpCsFixer'                                 => true,
+        '@Symfony:risky'                              => true,
+        'concat_space'                                => ['spacing' => 'one'],
+        'array_syntax'                                => ['syntax' => 'short'],
+        'array_indentation'                           => true,
+        'combine_consecutive_unsets'                  => true,
+        'method_separation'                           => true,
+        'single_quote'                                => true,
+        'declare_equal_normalize'                     => true,
+        'function_typehint_space'                     => true,
+        'hash_to_slash_comment'                       => true,
+        'include'                                     => true,
+        'lowercase_cast'                              => true,
+        'no_multiline_whitespace_before_semicolons'   => true,
+        'no_leading_import_slash'                     => true,
+        'no_multiline_whitespace_around_double_arrow' => true,
+        'no_spaces_around_offset'                     => true,
+        'no_unneeded_control_parentheses'             => true,
+        'no_unused_imports'                           => true,
+        'no_whitespace_before_comma_in_array'         => true,
+        'no_whitespace_in_blank_line'                 => true,
+        'object_operator_without_whitespace'          => true,
+        'single_blank_line_before_namespace'          => true,
+        'single_class_element_per_statement'          => true,
+        'space_after_semicolon'                       => true,
+        'standardize_not_equals'                      => true,
+        'ternary_operator_spaces'                     => true,
+        'trailing_comma_in_multiline_array'           => true,
+        'trim_array_spaces'                           => true,
+        'unary_operator_spaces'                       => true,
+        'whitespace_after_comma_in_array'             => true,
+        'no_extra_consecutive_blank_lines'            => [
+            'curly_brace_block',
+            'extra',
+            'parenthesis_brace_block',
+            'square_brace_block',
+            'throw',
+            'use',
+        ],
+        'binary_operator_spaces'       => [
+            'align_double_arrow' => true,
+            'align_equals'       => true,
+        ],
+        'braces'                                    => [
+            'allow_single_line_closure' => true,
+        ],
+    ])
+    ->setFinder(
+        PhpCsFixer\Finder::create()
+            ->exclude('vendor')
+            ->exclude('tests')
+            ->in(__DIR__)
+  );

+ 31 - 0
include/vendor/alibabacloud/darabonba-openapi/README-CN.md

@@ -0,0 +1,31 @@
+[English](README.md) | 简体中文
+
+![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)
+
+## Alibaba Cloud OpenApi Client
+
+## 安装
+
+### Composer
+
+```bash
+composer require alibabacloud/darabonba-openapi
+```
+
+## 问题
+
+[提交 Issue](https://github.com/aliyun/darabonba-openapi/issues/new),不符合指南的问题可能会立即关闭。
+
+## 发行说明
+
+每个版本的详细更改记录在[发行说明](./ChangeLog.txt)中。
+
+## 相关
+
+* [最新源码](https://github.com/aliyun/darabonba-openapi)
+
+## 许可证
+
+[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.

+ 31 - 0
include/vendor/alibabacloud/darabonba-openapi/README.md

@@ -0,0 +1,31 @@
+English | [简体中文](README-CN.md)
+
+![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)
+
+## Alibaba Cloud OpenApi Client
+
+## Installation
+
+### Composer
+
+```bash
+composer require alibabacloud/darabonba-openapi
+```
+
+## Issues
+
+[Opening an Issue](https://github.com/aliyun/darabonba-openapi/issues/new), Issues not conforming to the guidelines may be closed immediately.
+
+## Changelog
+
+Detailed changes for each release are documented in the [release notes](./ChangeLog.txt).
+
+## References
+
+* [Latest Release](https://github.com/aliyun/darabonba-openapi)
+
+## License
+
+[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.

+ 15 - 0
include/vendor/alibabacloud/darabonba-openapi/autoload.php

@@ -0,0 +1,15 @@
+<?php
+
+if (file_exists(__DIR__ . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php')) {
+    require_once __DIR__ . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
+}
+
+spl_autoload_register(function ($class) {
+    $name = str_replace('Darabonba\\OpenApi\\', '', $class);
+    $file = __DIR__ . \DIRECTORY_SEPARATOR . 'src' . \DIRECTORY_SEPARATOR . str_replace('\\', \DIRECTORY_SEPARATOR, $name) . '.php';
+    if (file_exists($file)) {
+        require_once $file;
+        return true;
+    }
+    return false;
+});

+ 34 - 0
include/vendor/alibabacloud/darabonba-openapi/composer.json

@@ -0,0 +1,34 @@
+{
+  "name": "alibabacloud/darabonba-openapi",
+  "description": "Alibaba Cloud OpenApi Client",
+  "type": "library",
+  "license": "Apache-2.0",
+  "authors": [
+    {
+      "name": "Alibaba Cloud SDK",
+      "email": "sdk-team@alibabacloud.com"
+    }
+  ],
+  "require": {
+    "php": ">5.5",
+    "alibabacloud/tea-utils": "^0.2.19",
+    "alibabacloud/credentials": "^1.1",
+    "alibabacloud/openapi-util": "^0.1.10|^0.2.1",
+    "alibabacloud/gateway-spi": "^1",
+    "alibabacloud/tea-xml": "^0.2"
+  },
+  "autoload": {
+    "psr-4": {
+      "Darabonba\\OpenApi\\": "src"
+    }
+  },
+  "scripts": {
+    "fixer": "php-cs-fixer fix ./"
+  },
+  "config": {
+    "sort-packages": true,
+    "preferred-install": "dist",
+    "optimize-autoloader": true
+  },
+  "prefer-stable": true
+}

+ 31 - 0
include/vendor/alibabacloud/darabonba-openapi/phpunit.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit bootstrap="./tests/bootstrap.php" colors="true" processIsolation="false" stopOnFailure="false"
+         convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true"
+         testSuiteLoaderFile="phpunit/src/Runner/StandardTestSuiteLoader.php">
+
+    <testsuites>
+        <testsuite name="All">
+            <directory>tests</directory>
+        </testsuite>
+        <testsuite name="Unit">
+            <directory suffix="Test.php">./tests/Unit</directory>
+        </testsuite>
+    </testsuites>
+
+    <groups>
+        <exclude>
+            <group>integration</group>
+        </exclude>
+    </groups>
+
+    <logging>
+        <log type="coverage-html" target="cache/coverage" lowUpperBound="35" highLowerBound="70"/>
+        <log type="coverage-clover" target="cache/coverage.clover"/>
+    </logging>
+
+    <filter>
+        <whitelist processUncoveredFilesFromWhitelist="true">
+            <directory suffix=".php">./src</directory>
+        </whitelist>
+    </filter>
+</phpunit>

+ 424 - 0
include/vendor/alibabacloud/darabonba-openapi/src/Models/Config.php

@@ -0,0 +1,424 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+namespace Darabonba\OpenApi\Models;
+
+use AlibabaCloud\Tea\Model;
+use AlibabaCloud\Credentials\Credential;
+
+use Darabonba\OpenApi\Models\GlobalParameters;
+
+/**
+ * Model for initing client
+ */
+class Config extends Model
+{
+    protected $_default = [
+        'accessKeyId' => '',
+        'accessKeySecret' => '',
+        'securityToken' => '',
+        'protocol' => 'http',
+        'method' => '',
+        'regionId' => '',
+        'readTimeout' => '',
+        'connectTimeout' => '',
+        'httpProxy' => '',
+        'httpsProxy' => '',
+        'credential' => '',
+        'endpoint' => '',
+        'noProxy' => '',
+        'maxIdleConns' => '',
+        'network' => '',
+        'userAgent' => '',
+        'suffix' => '',
+        'socks5Proxy' => '',
+        'socks5NetWork' => '',
+        'endpointType' => '',
+        'openPlatformEndpoint' => '',
+        'type' => '',
+        'signatureVersion' => '',
+        'signatureAlgorithm' => '',
+        'key' => '',
+        'cert' => '',
+        'ca' => '',
+    ];
+    public function validate()
+    {
+    }
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->accessKeyId) {
+            $res['accessKeyId'] = $this->accessKeyId;
+        }
+        if (null !== $this->accessKeySecret) {
+            $res['accessKeySecret'] = $this->accessKeySecret;
+        }
+        if (null !== $this->securityToken) {
+            $res['securityToken'] = $this->securityToken;
+        }
+        if (null !== $this->protocol) {
+            $res['protocol'] = $this->protocol;
+        }
+        if (null !== $this->method) {
+            $res['method'] = $this->method;
+        }
+        if (null !== $this->regionId) {
+            $res['regionId'] = $this->regionId;
+        }
+        if (null !== $this->readTimeout) {
+            $res['readTimeout'] = $this->readTimeout;
+        }
+        if (null !== $this->connectTimeout) {
+            $res['connectTimeout'] = $this->connectTimeout;
+        }
+        if (null !== $this->httpProxy) {
+            $res['httpProxy'] = $this->httpProxy;
+        }
+        if (null !== $this->httpsProxy) {
+            $res['httpsProxy'] = $this->httpsProxy;
+        }
+        if (null !== $this->credential) {
+            $res['credential'] = null !== $this->credential ? $this->credential->toMap() : null;
+        }
+        if (null !== $this->endpoint) {
+            $res['endpoint'] = $this->endpoint;
+        }
+        if (null !== $this->noProxy) {
+            $res['noProxy'] = $this->noProxy;
+        }
+        if (null !== $this->maxIdleConns) {
+            $res['maxIdleConns'] = $this->maxIdleConns;
+        }
+        if (null !== $this->network) {
+            $res['network'] = $this->network;
+        }
+        if (null !== $this->userAgent) {
+            $res['userAgent'] = $this->userAgent;
+        }
+        if (null !== $this->suffix) {
+            $res['suffix'] = $this->suffix;
+        }
+        if (null !== $this->socks5Proxy) {
+            $res['socks5Proxy'] = $this->socks5Proxy;
+        }
+        if (null !== $this->socks5NetWork) {
+            $res['socks5NetWork'] = $this->socks5NetWork;
+        }
+        if (null !== $this->endpointType) {
+            $res['endpointType'] = $this->endpointType;
+        }
+        if (null !== $this->openPlatformEndpoint) {
+            $res['openPlatformEndpoint'] = $this->openPlatformEndpoint;
+        }
+        if (null !== $this->type) {
+            $res['type'] = $this->type;
+        }
+        if (null !== $this->signatureVersion) {
+            $res['signatureVersion'] = $this->signatureVersion;
+        }
+        if (null !== $this->signatureAlgorithm) {
+            $res['signatureAlgorithm'] = $this->signatureAlgorithm;
+        }
+        if (null !== $this->globalParameters) {
+            $res['globalParameters'] = null !== $this->globalParameters ? $this->globalParameters->toMap() : null;
+        }
+        if (null !== $this->key) {
+            $res['key'] = $this->key;
+        }
+        if (null !== $this->cert) {
+            $res['cert'] = $this->cert;
+        }
+        if (null !== $this->ca) {
+            $res['ca'] = $this->ca;
+        }
+        return $res;
+    }
+    /**
+     * @param array $map
+     * @return Config
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['accessKeyId'])) {
+            $model->accessKeyId = $map['accessKeyId'];
+        }
+        if (isset($map['accessKeySecret'])) {
+            $model->accessKeySecret = $map['accessKeySecret'];
+        }
+        if (isset($map['securityToken'])) {
+            $model->securityToken = $map['securityToken'];
+        }
+        if (isset($map['protocol'])) {
+            $model->protocol = $map['protocol'];
+        }
+        if (isset($map['method'])) {
+            $model->method = $map['method'];
+        }
+        if (isset($map['regionId'])) {
+            $model->regionId = $map['regionId'];
+        }
+        if (isset($map['readTimeout'])) {
+            $model->readTimeout = $map['readTimeout'];
+        }
+        if (isset($map['connectTimeout'])) {
+            $model->connectTimeout = $map['connectTimeout'];
+        }
+        if (isset($map['httpProxy'])) {
+            $model->httpProxy = $map['httpProxy'];
+        }
+        if (isset($map['httpsProxy'])) {
+            $model->httpsProxy = $map['httpsProxy'];
+        }
+        if (isset($map['credential'])) {
+            $model->credential = Credential::fromMap($map['credential']);
+        }
+        if (isset($map['endpoint'])) {
+            $model->endpoint = $map['endpoint'];
+        }
+        if (isset($map['noProxy'])) {
+            $model->noProxy = $map['noProxy'];
+        }
+        if (isset($map['maxIdleConns'])) {
+            $model->maxIdleConns = $map['maxIdleConns'];
+        }
+        if (isset($map['network'])) {
+            $model->network = $map['network'];
+        }
+        if (isset($map['userAgent'])) {
+            $model->userAgent = $map['userAgent'];
+        }
+        if (isset($map['suffix'])) {
+            $model->suffix = $map['suffix'];
+        }
+        if (isset($map['socks5Proxy'])) {
+            $model->socks5Proxy = $map['socks5Proxy'];
+        }
+        if (isset($map['socks5NetWork'])) {
+            $model->socks5NetWork = $map['socks5NetWork'];
+        }
+        if (isset($map['endpointType'])) {
+            $model->endpointType = $map['endpointType'];
+        }
+        if (isset($map['openPlatformEndpoint'])) {
+            $model->openPlatformEndpoint = $map['openPlatformEndpoint'];
+        }
+        if (isset($map['type'])) {
+            $model->type = $map['type'];
+        }
+        if (isset($map['signatureVersion'])) {
+            $model->signatureVersion = $map['signatureVersion'];
+        }
+        if (isset($map['signatureAlgorithm'])) {
+            $model->signatureAlgorithm = $map['signatureAlgorithm'];
+        }
+        if (isset($map['globalParameters'])) {
+            $model->globalParameters = GlobalParameters::fromMap($map['globalParameters']);
+        }
+        if (isset($map['key'])) {
+            $model->key = $map['key'];
+        }
+        if (isset($map['cert'])) {
+            $model->cert = $map['cert'];
+        }
+        if (isset($map['ca'])) {
+            $model->ca = $map['ca'];
+        }
+        return $model;
+    }
+    /**
+     * @description accesskey id
+     * @var string
+     */
+    public $accessKeyId;
+
+    /**
+     * @description accesskey secret
+     * @var string
+     */
+    public $accessKeySecret;
+
+    /**
+     * @description security token
+     * @example a.txt
+     * @var string
+     */
+    public $securityToken;
+
+    /**
+     * @description http protocol
+     * @example http
+     * @var string
+     */
+    public $protocol;
+
+    /**
+     * @description http method
+     * @example GET
+     * @var string
+     */
+    public $method;
+
+    /**
+     * @description region id
+     * @example cn-hangzhou
+     * @var string
+     */
+    public $regionId;
+
+    /**
+     * @description read timeout
+     * @example 10
+     * @var int
+     */
+    public $readTimeout;
+
+    /**
+     * @description connect timeout
+     * @example 10
+     * @var int
+     */
+    public $connectTimeout;
+
+    /**
+     * @description http proxy
+     * @example http://localhost
+     * @var string
+     */
+    public $httpProxy;
+
+    /**
+     * @description https proxy
+     * @example https://localhost
+     * @var string
+     */
+    public $httpsProxy;
+
+    /**
+     * @description credential
+     * @example 
+     * @var Credential
+     */
+    public $credential;
+
+    /**
+     * @description endpoint
+     * @example cs.aliyuncs.com
+     * @var string
+     */
+    public $endpoint;
+
+    /**
+     * @description proxy white list
+     * @example http://localhost
+     * @var string
+     */
+    public $noProxy;
+
+    /**
+     * @description max idle conns
+     * @example 3
+     * @var int
+     */
+    public $maxIdleConns;
+
+    /**
+     * @description network for endpoint
+     * @example public
+     * @var string
+     */
+    public $network;
+
+    /**
+     * @description user agent
+     * @example Alibabacloud/1
+     * @var string
+     */
+    public $userAgent;
+
+    /**
+     * @description suffix for endpoint
+     * @example aliyun
+     * @var string
+     */
+    public $suffix;
+
+    /**
+     * @description socks5 proxy
+     * @var string
+     */
+    public $socks5Proxy;
+
+    /**
+     * @description socks5 network
+     * @example TCP
+     * @var string
+     */
+    public $socks5NetWork;
+
+    /**
+     * @description endpoint type
+     * @example internal
+     * @var string
+     */
+    public $endpointType;
+
+    /**
+     * @description OpenPlatform endpoint
+     * @example openplatform.aliyuncs.com
+     * @var string
+     */
+    public $openPlatformEndpoint;
+
+    /**
+     * @description credential type
+     * @example access_key
+     * @deprecated
+     * @var string
+     */
+    public $type;
+
+    /**
+     * @description Signature Version
+     * @example v1
+     * @var string
+     */
+    public $signatureVersion;
+
+    /**
+     * @description Signature Algorithm
+     * @example ACS3-HMAC-SHA256
+     * @var string
+     */
+    public $signatureAlgorithm;
+
+    /**
+     * @description Global Parameters
+     * @var GlobalParameters
+     */
+    public $globalParameters;
+
+    /**
+     * @description privite key for client certificate
+     * @example MIIEvQ
+     * @var string
+     */
+    public $key;
+
+    /**
+     * @description client certificate
+     * @example -----BEGIN CERTIFICATE-----
+xxx-----END CERTIFICATE-----
+     * @var string
+     */
+    public $cert;
+
+    /**
+     * @description server certificate
+     * @example -----BEGIN CERTIFICATE-----
+xxx-----END CERTIFICATE-----
+     * @var string
+     */
+    public $ca;
+}

+ 42 - 0
include/vendor/alibabacloud/darabonba-openapi/src/Models/GlobalParameters.php

@@ -0,0 +1,42 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+namespace Darabonba\OpenApi\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class GlobalParameters extends Model
+{
+    public function validate()
+    {
+    }
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->queries) {
+            $res['queries'] = $this->queries;
+        }
+        return $res;
+    }
+    /**
+     * @param array $map
+     * @return GlobalParameters
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['queries'])) {
+            $model->queries = $map['queries'];
+        }
+        return $model;
+    }
+    public $headers;
+
+    public $queries;
+}

+ 74 - 0
include/vendor/alibabacloud/darabonba-openapi/src/Models/OpenApiRequest.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+namespace Darabonba\OpenApi\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class OpenApiRequest extends Model
+{
+    public function validate()
+    {
+    }
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->query) {
+            $res['query'] = $this->query;
+        }
+        if (null !== $this->body) {
+            $res['body'] = $this->body;
+        }
+        if (null !== $this->stream) {
+            $res['stream'] = $this->stream;
+        }
+        if (null !== $this->hostMap) {
+            $res['hostMap'] = $this->hostMap;
+        }
+        if (null !== $this->endpointOverride) {
+            $res['endpointOverride'] = $this->endpointOverride;
+        }
+        return $res;
+    }
+    /**
+     * @param array $map
+     * @return OpenApiRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['query'])) {
+            $model->query = $map['query'];
+        }
+        if (isset($map['body'])) {
+            $model->body = $map['body'];
+        }
+        if (isset($map['stream'])) {
+            $model->stream = $map['stream'];
+        }
+        if (isset($map['hostMap'])) {
+            $model->hostMap = $map['hostMap'];
+        }
+        if (isset($map['endpointOverride'])) {
+            $model->endpointOverride = $map['endpointOverride'];
+        }
+        return $model;
+    }
+    public $headers;
+
+    public $query;
+
+    public $body;
+
+    public $stream;
+
+    public $hostMap;
+
+    public $endpointOverride;
+}

+ 130 - 0
include/vendor/alibabacloud/darabonba-openapi/src/Models/Params.php

@@ -0,0 +1,130 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+namespace Darabonba\OpenApi\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class Params extends Model
+{
+    public function validate()
+    {
+        Model::validateRequired('action', $this->action, true);
+        Model::validateRequired('version', $this->version, true);
+        Model::validateRequired('protocol', $this->protocol, true);
+        Model::validateRequired('pathname', $this->pathname, true);
+        Model::validateRequired('method', $this->method, true);
+        Model::validateRequired('authType', $this->authType, true);
+        Model::validateRequired('bodyType', $this->bodyType, true);
+        Model::validateRequired('reqBodyType', $this->reqBodyType, true);
+    }
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->action) {
+            $res['action'] = $this->action;
+        }
+        if (null !== $this->version) {
+            $res['version'] = $this->version;
+        }
+        if (null !== $this->protocol) {
+            $res['protocol'] = $this->protocol;
+        }
+        if (null !== $this->pathname) {
+            $res['pathname'] = $this->pathname;
+        }
+        if (null !== $this->method) {
+            $res['method'] = $this->method;
+        }
+        if (null !== $this->authType) {
+            $res['authType'] = $this->authType;
+        }
+        if (null !== $this->bodyType) {
+            $res['bodyType'] = $this->bodyType;
+        }
+        if (null !== $this->reqBodyType) {
+            $res['reqBodyType'] = $this->reqBodyType;
+        }
+        if (null !== $this->style) {
+            $res['style'] = $this->style;
+        }
+        return $res;
+    }
+    /**
+     * @param array $map
+     * @return Params
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['action'])) {
+            $model->action = $map['action'];
+        }
+        if (isset($map['version'])) {
+            $model->version = $map['version'];
+        }
+        if (isset($map['protocol'])) {
+            $model->protocol = $map['protocol'];
+        }
+        if (isset($map['pathname'])) {
+            $model->pathname = $map['pathname'];
+        }
+        if (isset($map['method'])) {
+            $model->method = $map['method'];
+        }
+        if (isset($map['authType'])) {
+            $model->authType = $map['authType'];
+        }
+        if (isset($map['bodyType'])) {
+            $model->bodyType = $map['bodyType'];
+        }
+        if (isset($map['reqBodyType'])) {
+            $model->reqBodyType = $map['reqBodyType'];
+        }
+        if (isset($map['style'])) {
+            $model->style = $map['style'];
+        }
+        return $model;
+    }
+    /**
+     * @var string
+     */
+    public $action;
+
+    /**
+     * @var string
+     */
+    public $version;
+
+    /**
+     * @var string
+     */
+    public $protocol;
+
+    /**
+     * @var string
+     */
+    public $pathname;
+
+    /**
+     * @var string
+     */
+    public $method;
+
+    /**
+     * @var string
+     */
+    public $authType;
+
+    /**
+     * @var string
+     */
+    public $bodyType;
+
+    /**
+     * @var string
+     */
+    public $reqBodyType;
+
+    public $style;
+}

Fichier diff supprimé car celui-ci est trop grand
+ 1183 - 0
include/vendor/alibabacloud/darabonba-openapi/src/OpenApiClient.php


+ 328 - 0
include/vendor/alibabacloud/darabonba-openapi/tests/OpenApiClientTest.php

@@ -0,0 +1,328 @@
+<?php
+
+namespace Darabonba\OpenApi\Tests;
+
+use Darabonba\OpenApi\OpenApiClient;
+use AlibabaCloud\Tea\Model;
+use AlibabaCloud\Tea\Request;
+use AlibabaCloud\Tea\Utils\Utils;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @internal
+ * @coversNothing
+ */
+class OpenApiClientTest extends TestCase
+{
+    public function testConfig(){
+        $globalParameters = new GlobalParameters([
+            "headers" => [
+                "global-key" => "global-value"
+            ],
+            "queries" => [
+                "global-query" => "global-value"
+            ]
+        ]);
+        $config = new Config([
+            "endpoint" => "config.endpoint",
+            "endpointType" => "regional",
+            "network" => "config.network",
+            "suffix" => "config.suffix",
+            "protocol" => "config.protocol",
+            "method" => "config.method",
+            "regionId" => "config.regionId",
+            "userAgent" => "config.userAgent",
+            "readTimeout" => 3000,
+            "connectTimeout" => 3000,
+            "httpProxy" => "config.httpProxy",
+            "httpsProxy" => "config.httpsProxy",
+            "noProxy" => "config.noProxy",
+            "socks5Proxy" => "config.socks5Proxy",
+            "socks5NetWork" => "config.socks5NetWork",
+            "maxIdleConns" => 128,
+            "signatureVersion" => "config.signatureVersion",
+            "signatureAlgorithm" => "config.signatureAlgorithm",
+            "globalParameters" => $globalParameters
+        ]);
+        $creConfig = new \AlibabaCloud\Credentials\Credential\Config([
+            "accessKeyId" => "accessKeyId",
+            "accessKeySecret" => "accessKeySecret",
+            "securityToken" => "securityToken",
+            "type" => "sts"
+        ]);
+        $credential = new Credential($creConfig);
+        $config->credential = $credential;
+        $client = new OpenApiClient($config);
+        $config->accessKeyId = "ak";
+        $config->accessKeySecret = "secret";
+        $config->securityToken = "token";
+        $config->type = "sts";
+        $client = new OpenApiClient($config);
+    }
+
+    /**
+     * @return Config
+     */
+    public static function createConfig(){
+        $globalParameters = new GlobalParameters([
+            "headers" => [
+                "global-key" => "global-value"
+            ],
+            "queries" => [
+                "global-query" => "global-value"
+            ]
+        ]);
+        $config = new Config([
+            "accessKeyId" => "ak",
+            "accessKeySecret" => "secret",
+            "securityToken" => "token",
+            "type" => "sts",
+            "userAgent" => "config.userAgent",
+            "readTimeout" => 3000,
+            "connectTimeout" => 3000,
+            "maxIdleConns" => 128,
+            "signatureVersion" => "config.signatureVersion",
+            "signatureAlgorithm" => "ACS3-HMAC-SHA256",
+            "globalParameters" => $globalParameters
+        ]);
+        return $config;
+    }
+
+    /**
+     * @return RuntimeOptions
+     */
+    public static function createRuntimeOptions(){
+        $runtime = new RuntimeOptions([
+            "readTimeout" => 4000,
+            "connectTimeout" => 4000,
+            "maxIdleConns" => 100,
+            "autoretry" => true,
+            "maxAttempts" => 1,
+            "backoffPolicy" => "no",
+            "backoffPeriod" => 1,
+            "ignoreSSL" => true
+        ]);
+        return $runtime;
+    }
+
+    /**
+     * @return OpenApiRequest
+     */
+    public static function createOpenApiRequest(){
+        $query = [];
+        $query["key1"] = "value";
+        $query["key2"] = 1;
+        $query["key3"] = true;
+        $body = [];
+        $body["key1"] = "value";
+        $body["key2"] = 1;
+        $body["key3"] = true;
+        $headers = [
+            "for-test" => "sdk"
+        ];
+        $req = new OpenApiRequest([
+            "headers" => $headers,
+            "query" => OpenApiUtilClient::query($query),
+            "body" => OpenApiUtilClient::parseToMap($body)
+        ]);
+        return $req;
+    }
+
+    public function testCallApiForRPCWithV2Sign_AK_Form(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->protocol = "HTTP";
+        $config->signatureAlgorithm = "v2";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/",
+            "method" => "POST",
+            "authType" => "AK",
+            "style" => "RPC",
+            "reqBodyType" => "formData",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+    }
+
+    public function testCallApiForRPCWithV2Sign_Anonymous_JSON(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->protocol = "HTTP";
+        $config->signatureAlgorithm = "v2";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/",
+            "method" => "POST",
+            "authType" => "Anonymous",
+            "style" => "RPC",
+            "reqBodyType" => "json",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+    }
+
+    public function testCallApiForROAWithV2Sign_HTTPS_AK_Form(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->signatureAlgorithm = "v2";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/test",
+            "method" => "POST",
+            "authType" => "AK",
+            "style" => "ROA",
+            "reqBodyType" => "formData",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+    }
+
+    public function testCallApiForROAWithV2Sign_Anonymous_JSON(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->protocol = "HTTP";
+        $config->signatureAlgorithm = "v2";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/test",
+            "method" => "POST",
+            "authType" => "Anonymous",
+            "style" => "ROA",
+            "reqBodyType" => "json",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+    }
+
+    public function testCallApiForRPCWithV3Sign_AK_Form(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->protocol = "HTTP";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/",
+            "method" => "POST",
+            "authType" => "AK",
+            "style" => "RPC",
+            "reqBodyType" => "formData",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+    }
+
+    public function testCallApiForRPCWithV3Sign_Anonymous_JSON(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->protocol = "HTTP";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/",
+            "method" => "POST",
+            "authType" => "Anonymous",
+            "style" => "RPC",
+            "reqBodyType" => "json",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+    }
+
+    public function testCallApiForROAWithV3Sign_AK_Form(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->protocol = "HTTP";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/test",
+            "method" => "POST",
+            "authType" => "AK",
+            "style" => "ROA",
+            "reqBodyType" => "formData",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+    }
+
+    public function testCallApiForROAWithV3Sign_Anonymous_JSON(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->protocol = "HTTP";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/test",
+            "method" => "POST",
+            "authType" => "Anonymous",
+            "style" => "ROA",
+            "reqBodyType" => "json",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+    }
+
+    public function testResponseBodyType(){
+        $config = self::createConfig();
+        $runtime = self::createRuntimeOptions();
+        $config->protocol = "HTTP";
+        $config->endpoint = "test.aliyuncs.com";
+        $client = new OpenApiClient($config);
+        $request = self::createOpenApiRequest();
+        $params = new Params([
+            "action" => "TestAPI",
+            "version" => "2022-06-01",
+            "protocol" => "HTTPS",
+            "pathname" => "/test",
+            "method" => "POST",
+            "authType" => "AK",
+            "style" => "ROA",
+            "reqBodyType" => "formData",
+            "bodyType" => "json"
+        ]);
+        $client->callApi($params, $request, $runtime);
+        $params->bodyType = "array";
+        $client->callApi($params, $request, $runtime);
+        $params->bodyType = "string";
+        $client->callApi($params, $request, $runtime);
+        $params->bodyType = "byte";
+        $client->callApi($params, $request, $runtime);
+    }
+}

+ 3 - 0
include/vendor/alibabacloud/darabonba-openapi/tests/bootstrap.php

@@ -0,0 +1,3 @@
+<?php
+
+require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';

+ 15 - 0
include/vendor/alibabacloud/dysmsapi-20170525/.gitignore

@@ -0,0 +1,15 @@
+composer.phar
+/vendor/
+
+# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
+# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
+composer.lock
+
+.vscode/
+.idea
+.DS_Store
+
+cache/
+*.cache
+runtime/
+.php_cs.cache

+ 65 - 0
include/vendor/alibabacloud/dysmsapi-20170525/.php_cs.dist

@@ -0,0 +1,65 @@
+<?php
+/*
+ * This document has been generated with
+ * https://mlocati.github.io/php-cs-fixer-configurator/#version:2.15|configurator
+ * you can change this configuration by importing this file.
+ */
+
+return PhpCsFixer\Config::create()
+    ->setRiskyAllowed(true)
+    ->setIndent('    ')
+    ->setRules([
+        '@PSR2'                                       => true,
+        '@PhpCsFixer'                                 => true,
+        '@Symfony:risky'                              => true,
+        'concat_space'                                => ['spacing' => 'one'],
+        'array_syntax'                                => ['syntax' => 'short'],
+        'array_indentation'                           => true,
+        'combine_consecutive_unsets'                  => true,
+        'method_separation'                           => true,
+        'single_quote'                                => true,
+        'declare_equal_normalize'                     => true,
+        'function_typehint_space'                     => true,
+        'hash_to_slash_comment'                       => true,
+        'include'                                     => true,
+        'lowercase_cast'                              => true,
+        'no_multiline_whitespace_before_semicolons'   => true,
+        'no_leading_import_slash'                     => true,
+        'no_multiline_whitespace_around_double_arrow' => true,
+        'no_spaces_around_offset'                     => true,
+        'no_unneeded_control_parentheses'             => true,
+        'no_unused_imports'                           => true,
+        'no_whitespace_before_comma_in_array'         => true,
+        'no_whitespace_in_blank_line'                 => true,
+        'object_operator_without_whitespace'          => true,
+        'single_blank_line_before_namespace'          => true,
+        'single_class_element_per_statement'          => true,
+        'space_after_semicolon'                       => true,
+        'standardize_not_equals'                      => true,
+        'ternary_operator_spaces'                     => true,
+        'trailing_comma_in_multiline_array'           => true,
+        'trim_array_spaces'                           => true,
+        'unary_operator_spaces'                       => true,
+        'whitespace_after_comma_in_array'             => true,
+        'no_extra_consecutive_blank_lines'            => [
+            'curly_brace_block',
+            'extra',
+            'parenthesis_brace_block',
+            'square_brace_block',
+            'throw',
+            'use',
+        ],
+        'binary_operator_spaces'       => [
+            'align_double_arrow' => true,
+            'align_equals'       => true,
+        ],
+        'braces'                                    => [
+            'allow_single_line_closure' => true,
+        ],
+    ])
+    ->setFinder(
+        PhpCsFixer\Finder::create()
+            ->exclude('vendor')
+            ->exclude('tests')
+            ->in(__DIR__)
+  );

+ 66 - 0
include/vendor/alibabacloud/dysmsapi-20170525/ChangeLog.md

@@ -0,0 +1,66 @@
+2023-07-04 Version: 2.0.24
+- Add CreateSmartShortUrl api.
+
+2022-11-29 Version: 2.0.23
+- Add custom content for QueryCardSmsTemplateReport.
+
+2022-10-11 Version: 2.0.22
+- Add custom content for QueryCardSmsTemplateReport.
+
+2022-09-30 Version: 2.0.21
+- Add custom content for SendBatchSms.
+
+2022-09-29 Version: 2.0.20
+- Add outId for SendBatchSms.
+
+2022-09-28 Version: 2.0.19
+- Upgrade formdata for CheckMobilesCardTemplateSupport.
+
+2022-08-11 Version: 2.0.18
+- Upgrade formdata for SendBatchSms.
+
+2022-08-03 Version: 2.0.17
+- Upgrade Service for SmsStatistics.
+
+2022-07-14 Version: 2.0.16
+- Upgrade Service for SmsTemplate.
+
+2022-07-06 Version: 2.0.15
+- Upgrade Service for SmsSign.
+
+2022-07-06 Version: 2.0.14
+- Upgrade Service for SmsSign.
+
+2022-07-04 Version: 2.0.13
+- Upgrade Service for CardSms.
+
+2022-06-29 Version: 2.0.12
+- Upgrade Service for Template and Sign.
+
+2022-06-17 Version: 2.0.10
+- Upgrade Service for CARDSMS.
+
+2022-01-24 Version: 2.0.9
+- Generated php 2017-05-25 for Dysmsapi.
+
+2021-11-29 Version: 2.0.8
+- Upgrade Service for SMS.
+
+2021-11-16 Version: 2.0.7
+- Upgrade Service for SMS.
+
+2021-10-26 Version: 2.0.6
+- Support Short Url for SMS.
+
+2021-09-01 Version: 1.0.3
+- Generated php 2017-05-25 for Dysmsapi.
+
+2021-07-15 Version: 1.0.2
+- Generated php 2017-05-25 for Dysmsapi.
+
+2021-01-04 Version: 1.0.1
+- AMP Version Change.
+
+2020-12-29 Version: 1.0.0
+- AMP Version Change.
+

+ 201 - 0
include/vendor/alibabacloud/dysmsapi-20170525/LICENSE

@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright (c) 2009-present, Alibaba Cloud All rights reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 35 - 0
include/vendor/alibabacloud/dysmsapi-20170525/README-CN.md

@@ -0,0 +1,35 @@
+[English](README.md) | 简体中文
+
+![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)
+
+# Alibaba Cloud Dysmsapi SDK for PHP
+
+## 安装
+
+### Composer
+
+```bash
+composer require alibabacloud/dysmsapi-20170525
+```
+
+## 问题
+
+[提交 Issue](https://github.com/aliyun/alibabacloud-php-sdk/issues/new),不符合指南的问题可能会立即关闭。
+
+## 使用说明
+
+[快速使用](https://github.com/aliyun/alibabacloud-php-sdk/blob/master/docs/0-Examples-CN.md#%E5%BF%AB%E9%80%9F%E4%BD%BF%E7%94%A8)
+
+## 发行说明
+
+每个版本的详细更改记录在[发行说明](./ChangeLog.txt)中。
+
+## 相关
+
+* [最新源码](https://github.com/aliyun/alibabacloud-php-sdk/)
+
+## 许可证
+
+[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.

+ 35 - 0
include/vendor/alibabacloud/dysmsapi-20170525/README.md

@@ -0,0 +1,35 @@
+English | [简体中文](README-CN.md)
+
+![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg)
+
+# Alibaba Cloud Dysmsapi SDK for PHP
+
+## Installation
+
+### Composer
+
+```bash
+composer require alibabacloud/dysmsapi-20170525
+```
+
+## Issues
+
+[Opening an Issue](https://github.com/aliyun/alibabacloud-php-sdk/issues/new), Issues not conforming to the guidelines may be closed immediately.
+
+## Usage
+
+[Quick Examples](https://github.com/aliyun/alibabacloud-php-sdk/blob/master/docs/0-Examples-EN.md#quick-examples)
+
+## Changelog
+
+Detailed changes for each release are documented in the [release notes](./ChangeLog.txt).
+
+## References
+
+* [Latest Release](https://github.com/aliyun/alibabacloud-php-sdk/)
+
+## License
+
+[Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)
+
+Copyright (c) 2009-present, Alibaba Cloud All rights reserved.

+ 17 - 0
include/vendor/alibabacloud/dysmsapi-20170525/autoload.php

@@ -0,0 +1,17 @@
+<?php
+
+if (file_exists(__DIR__ . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php')) {
+    require_once __DIR__ . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
+}
+
+spl_autoload_register(function ($class) {
+    $name = str_replace('AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\', '', $class);
+    $file = __DIR__ . \DIRECTORY_SEPARATOR . 'src' . \DIRECTORY_SEPARATOR . str_replace('\\', \DIRECTORY_SEPARATOR, $name) . '.php';
+    if (file_exists($file)) {
+        require_once $file;
+
+        return true;
+    }
+
+    return false;
+});

+ 33 - 0
include/vendor/alibabacloud/dysmsapi-20170525/composer.json

@@ -0,0 +1,33 @@
+{
+  "name": "alibabacloud/dysmsapi-20170525",
+  "description": "Alibaba Cloud Dysmsapi (20170525) SDK Library for PHP",
+  "type": "library",
+  "license": "Apache-2.0",
+  "authors": [
+    {
+      "name": "Alibaba Cloud SDK",
+      "email": "sdk-team@alibabacloud.com"
+    }
+  ],
+  "require": {
+    "php": ">5.5",
+    "alibabacloud/tea-utils": "^0.2.19",
+    "alibabacloud/darabonba-openapi": "^0.2.8",
+    "alibabacloud/openapi-util": "^0.1.10|^0.2.1",
+    "alibabacloud/endpoint-util": "^0.1.0"
+  },
+  "autoload": {
+    "psr-4": {
+      "AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\": "src"
+    }
+  },
+  "scripts": {
+    "fixer": "php-cs-fixer fix ./"
+  },
+  "config": {
+    "sort-packages": true,
+    "preferred-install": "dist",
+    "optimize-autoloader": true
+  },
+  "prefer-stable": true
+}

Fichier diff supprimé car celui-ci est trop grand
+ 2147 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php


+ 111 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php

@@ -0,0 +1,111 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class AddShortUrlRequest extends Model
+{
+    /**
+     * @example 7
+     *
+     * @var string
+     */
+    public $effectiveDays;
+
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+
+    /**
+     * @var string
+     */
+    public $shortUrlName;
+
+    /**
+     * @example https://www.****.com/product/sms
+     *
+     * @var string
+     */
+    public $sourceUrl;
+    protected $_name = [
+        'effectiveDays'        => 'EffectiveDays',
+        'ownerId'              => 'OwnerId',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+        'shortUrlName'         => 'ShortUrlName',
+        'sourceUrl'            => 'SourceUrl',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->effectiveDays) {
+            $res['EffectiveDays'] = $this->effectiveDays;
+        }
+        if (null !== $this->ownerId) {
+            $res['OwnerId'] = $this->ownerId;
+        }
+        if (null !== $this->resourceOwnerAccount) {
+            $res['ResourceOwnerAccount'] = $this->resourceOwnerAccount;
+        }
+        if (null !== $this->resourceOwnerId) {
+            $res['ResourceOwnerId'] = $this->resourceOwnerId;
+        }
+        if (null !== $this->shortUrlName) {
+            $res['ShortUrlName'] = $this->shortUrlName;
+        }
+        if (null !== $this->sourceUrl) {
+            $res['SourceUrl'] = $this->sourceUrl;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddShortUrlRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['EffectiveDays'])) {
+            $model->effectiveDays = $map['EffectiveDays'];
+        }
+        if (isset($map['OwnerId'])) {
+            $model->ownerId = $map['OwnerId'];
+        }
+        if (isset($map['ResourceOwnerAccount'])) {
+            $model->resourceOwnerAccount = $map['ResourceOwnerAccount'];
+        }
+        if (isset($map['ResourceOwnerId'])) {
+            $model->resourceOwnerId = $map['ResourceOwnerId'];
+        }
+        if (isset($map['ShortUrlName'])) {
+            $model->shortUrlName = $map['ShortUrlName'];
+        }
+        if (isset($map['SourceUrl'])) {
+            $model->sourceUrl = $map['SourceUrl'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class AddShortUrlResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var AddShortUrlResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddShortUrlResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = AddShortUrlResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 90 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php

@@ -0,0 +1,90 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddShortUrlResponseBody\data;
+use AlibabaCloud\Tea\Model;
+
+class AddShortUrlResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @var data
+     */
+    public $data;
+
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $message;
+
+    /**
+     * @example 819BE656-D2E0-4858-8B21-B2E477085AAF
+     *
+     * @var string
+     */
+    public $requestId;
+    protected $_name = [
+        'code'      => 'Code',
+        'data'      => 'Data',
+        'message'   => 'Message',
+        'requestId' => 'RequestId',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->data) {
+            $res['Data'] = null !== $this->data ? $this->data->toMap() : null;
+        }
+        if (null !== $this->message) {
+            $res['Message'] = $this->message;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddShortUrlResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Data'])) {
+            $model->data = data::fromMap($map['Data']);
+        }
+        if (isset($map['Message'])) {
+            $model->message = $map['Message'];
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+
+        return $model;
+    }
+}

+ 77 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php

@@ -0,0 +1,77 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddShortUrlResponseBody;
+
+use AlibabaCloud\Tea\Model;
+
+class data extends Model
+{
+    /**
+     * @example 2021-09-19 00:00:00
+     *
+     * @var string
+     */
+    public $expireDate;
+
+    /**
+     * @example http://****.cn/6y8uy7
+     *
+     * @var string
+     */
+    public $shortUrl;
+
+    /**
+     * @example https://www.****.com/product/sms
+     *
+     * @var string
+     */
+    public $sourceUrl;
+    protected $_name = [
+        'expireDate' => 'ExpireDate',
+        'shortUrl'   => 'ShortUrl',
+        'sourceUrl'  => 'SourceUrl',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->expireDate) {
+            $res['ExpireDate'] = $this->expireDate;
+        }
+        if (null !== $this->shortUrl) {
+            $res['ShortUrl'] = $this->shortUrl;
+        }
+        if (null !== $this->sourceUrl) {
+            $res['SourceUrl'] = $this->sourceUrl;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return data
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['ExpireDate'])) {
+            $model->expireDate = $map['ExpireDate'];
+        }
+        if (isset($map['ShortUrl'])) {
+            $model->shortUrl = $map['ShortUrl'];
+        }
+        if (isset($map['SourceUrl'])) {
+            $model->sourceUrl = $map['SourceUrl'];
+        }
+
+        return $model;
+    }
+}

+ 148 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest.php

@@ -0,0 +1,148 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddSmsSignRequest\signFileList;
+use AlibabaCloud\Tea\Model;
+
+class AddSmsSignRequest extends Model
+{
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @var string
+     */
+    public $remark;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+
+    /**
+     * @var signFileList[]
+     */
+    public $signFileList;
+
+    /**
+     * @var string
+     */
+    public $signName;
+
+    /**
+     * @example 1
+     *
+     * @var int
+     */
+    public $signSource;
+
+    /**
+     * @example 1
+     *
+     * @var int
+     */
+    public $signType;
+    protected $_name = [
+        'ownerId'              => 'OwnerId',
+        'remark'               => 'Remark',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+        'signFileList'         => 'SignFileList',
+        'signName'             => 'SignName',
+        'signSource'           => 'SignSource',
+        'signType'             => 'SignType',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->ownerId) {
+            $res['OwnerId'] = $this->ownerId;
+        }
+        if (null !== $this->remark) {
+            $res['Remark'] = $this->remark;
+        }
+        if (null !== $this->resourceOwnerAccount) {
+            $res['ResourceOwnerAccount'] = $this->resourceOwnerAccount;
+        }
+        if (null !== $this->resourceOwnerId) {
+            $res['ResourceOwnerId'] = $this->resourceOwnerId;
+        }
+        if (null !== $this->signFileList) {
+            $res['SignFileList'] = [];
+            if (null !== $this->signFileList && \is_array($this->signFileList)) {
+                $n = 0;
+                foreach ($this->signFileList as $item) {
+                    $res['SignFileList'][$n++] = null !== $item ? $item->toMap() : $item;
+                }
+            }
+        }
+        if (null !== $this->signName) {
+            $res['SignName'] = $this->signName;
+        }
+        if (null !== $this->signSource) {
+            $res['SignSource'] = $this->signSource;
+        }
+        if (null !== $this->signType) {
+            $res['SignType'] = $this->signType;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddSmsSignRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['OwnerId'])) {
+            $model->ownerId = $map['OwnerId'];
+        }
+        if (isset($map['Remark'])) {
+            $model->remark = $map['Remark'];
+        }
+        if (isset($map['ResourceOwnerAccount'])) {
+            $model->resourceOwnerAccount = $map['ResourceOwnerAccount'];
+        }
+        if (isset($map['ResourceOwnerId'])) {
+            $model->resourceOwnerId = $map['ResourceOwnerId'];
+        }
+        if (isset($map['SignFileList'])) {
+            if (!empty($map['SignFileList'])) {
+                $model->signFileList = [];
+                $n                   = 0;
+                foreach ($map['SignFileList'] as $item) {
+                    $model->signFileList[$n++] = null !== $item ? signFileList::fromMap($item) : $item;
+                }
+            }
+        }
+        if (isset($map['SignName'])) {
+            $model->signName = $map['SignName'];
+        }
+        if (isset($map['SignSource'])) {
+            $model->signSource = $map['SignSource'];
+        }
+        if (isset($map['SignType'])) {
+            $model->signType = $map['SignType'];
+        }
+
+        return $model;
+    }
+}

+ 63 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest/signFileList.php

@@ -0,0 +1,63 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddSmsSignRequest;
+
+use AlibabaCloud\Tea\Model;
+
+class signFileList extends Model
+{
+    /**
+     * @example R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uL****
+     *
+     * @var string
+     */
+    public $fileContents;
+
+    /**
+     * @example jpg
+     *
+     * @var string
+     */
+    public $fileSuffix;
+    protected $_name = [
+        'fileContents' => 'FileContents',
+        'fileSuffix'   => 'FileSuffix',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->fileContents) {
+            $res['FileContents'] = $this->fileContents;
+        }
+        if (null !== $this->fileSuffix) {
+            $res['FileSuffix'] = $this->fileSuffix;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return signFileList
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['FileContents'])) {
+            $model->fileContents = $map['FileContents'];
+        }
+        if (isset($map['FileSuffix'])) {
+            $model->fileSuffix = $map['FileSuffix'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class AddSmsSignResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var AddSmsSignResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddSmsSignResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = AddSmsSignResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 89 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponseBody.php

@@ -0,0 +1,89 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class AddSmsSignResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $message;
+
+    /**
+     * @example F655A8D5-B967-440B-8683-DAD6FF8DE990
+     *
+     * @var string
+     */
+    public $requestId;
+
+    /**
+     * @var string
+     */
+    public $signName;
+    protected $_name = [
+        'code'      => 'Code',
+        'message'   => 'Message',
+        'requestId' => 'RequestId',
+        'signName'  => 'SignName',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->message) {
+            $res['Message'] = $this->message;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+        if (null !== $this->signName) {
+            $res['SignName'] = $this->signName;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddSmsSignResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Message'])) {
+            $model->message = $map['Message'];
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+        if (isset($map['SignName'])) {
+            $model->signName = $map['SignName'];
+        }
+
+        return $model;
+    }
+}

+ 121 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateRequest.php

@@ -0,0 +1,121 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class AddSmsTemplateRequest extends Model
+{
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @var string
+     */
+    public $remark;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+
+    /**
+     * @var string
+     */
+    public $templateContent;
+
+    /**
+     * @var string
+     */
+    public $templateName;
+
+    /**
+     * @example 1
+     *
+     * @var int
+     */
+    public $templateType;
+    protected $_name = [
+        'ownerId'              => 'OwnerId',
+        'remark'               => 'Remark',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+        'templateContent'      => 'TemplateContent',
+        'templateName'         => 'TemplateName',
+        'templateType'         => 'TemplateType',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->ownerId) {
+            $res['OwnerId'] = $this->ownerId;
+        }
+        if (null !== $this->remark) {
+            $res['Remark'] = $this->remark;
+        }
+        if (null !== $this->resourceOwnerAccount) {
+            $res['ResourceOwnerAccount'] = $this->resourceOwnerAccount;
+        }
+        if (null !== $this->resourceOwnerId) {
+            $res['ResourceOwnerId'] = $this->resourceOwnerId;
+        }
+        if (null !== $this->templateContent) {
+            $res['TemplateContent'] = $this->templateContent;
+        }
+        if (null !== $this->templateName) {
+            $res['TemplateName'] = $this->templateName;
+        }
+        if (null !== $this->templateType) {
+            $res['TemplateType'] = $this->templateType;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddSmsTemplateRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['OwnerId'])) {
+            $model->ownerId = $map['OwnerId'];
+        }
+        if (isset($map['Remark'])) {
+            $model->remark = $map['Remark'];
+        }
+        if (isset($map['ResourceOwnerAccount'])) {
+            $model->resourceOwnerAccount = $map['ResourceOwnerAccount'];
+        }
+        if (isset($map['ResourceOwnerId'])) {
+            $model->resourceOwnerId = $map['ResourceOwnerId'];
+        }
+        if (isset($map['TemplateContent'])) {
+            $model->templateContent = $map['TemplateContent'];
+        }
+        if (isset($map['TemplateName'])) {
+            $model->templateName = $map['TemplateName'];
+        }
+        if (isset($map['TemplateType'])) {
+            $model->templateType = $map['TemplateType'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class AddSmsTemplateResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var AddSmsTemplateResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddSmsTemplateResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = AddSmsTemplateResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 91 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php

@@ -0,0 +1,91 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class AddSmsTemplateResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $message;
+
+    /**
+     * @example F655A8D5-B967-440B-8683-DAD6FF8DE990
+     *
+     * @var string
+     */
+    public $requestId;
+
+    /**
+     * @example SMS_15255****
+     *
+     * @var string
+     */
+    public $templateCode;
+    protected $_name = [
+        'code'         => 'Code',
+        'message'      => 'Message',
+        'requestId'    => 'RequestId',
+        'templateCode' => 'TemplateCode',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->message) {
+            $res['Message'] = $this->message;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+        if (null !== $this->templateCode) {
+            $res['TemplateCode'] = $this->templateCode;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return AddSmsTemplateResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Message'])) {
+            $model->message = $map['Message'];
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+        if (isset($map['TemplateCode'])) {
+            $model->templateCode = $map['TemplateCode'];
+        }
+
+        return $model;
+    }
+}

+ 63 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportRequest.php

@@ -0,0 +1,63 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class CheckMobilesCardSupportRequest extends Model
+{
+    /**
+     * @var mixed[][]
+     */
+    public $mobiles;
+
+    /**
+     * @example CARD_SMS_****
+     *
+     * @var string
+     */
+    public $templateCode;
+    protected $_name = [
+        'mobiles'      => 'Mobiles',
+        'templateCode' => 'TemplateCode',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->mobiles) {
+            $res['Mobiles'] = $this->mobiles;
+        }
+        if (null !== $this->templateCode) {
+            $res['TemplateCode'] = $this->templateCode;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CheckMobilesCardSupportRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Mobiles'])) {
+            if (!empty($map['Mobiles'])) {
+                $model->mobiles = $map['Mobiles'];
+            }
+        }
+        if (isset($map['TemplateCode'])) {
+            $model->templateCode = $map['TemplateCode'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class CheckMobilesCardSupportResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var CheckMobilesCardSupportResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CheckMobilesCardSupportResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = CheckMobilesCardSupportResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 90 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody.php

@@ -0,0 +1,90 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CheckMobilesCardSupportResponseBody\data;
+use AlibabaCloud\Tea\Model;
+
+class CheckMobilesCardSupportResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @var data
+     */
+    public $data;
+
+    /**
+     * @example 819BE656-D2E0-4858-8B21-B2E477085AAF
+     *
+     * @var string
+     */
+    public $requestId;
+
+    /**
+     * @example true
+     *
+     * @var bool
+     */
+    public $success;
+    protected $_name = [
+        'code'      => 'Code',
+        'data'      => 'Data',
+        'requestId' => 'RequestId',
+        'success'   => 'Success',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->data) {
+            $res['Data'] = null !== $this->data ? $this->data->toMap() : null;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+        if (null !== $this->success) {
+            $res['Success'] = $this->success;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CheckMobilesCardSupportResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Data'])) {
+            $model->data = data::fromMap($map['Data']);
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+        if (isset($map['Success'])) {
+            $model->success = $map['Success'];
+        }
+
+        return $model;
+    }
+}

+ 60 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody/data.php

@@ -0,0 +1,60 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CheckMobilesCardSupportResponseBody;
+
+use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CheckMobilesCardSupportResponseBody\data\queryResult;
+use AlibabaCloud\Tea\Model;
+
+class data extends Model
+{
+    /**
+     * @var queryResult[]
+     */
+    public $queryResult;
+    protected $_name = [
+        'queryResult' => 'queryResult',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->queryResult) {
+            $res['queryResult'] = [];
+            if (null !== $this->queryResult && \is_array($this->queryResult)) {
+                $n = 0;
+                foreach ($this->queryResult as $item) {
+                    $res['queryResult'][$n++] = null !== $item ? $item->toMap() : $item;
+                }
+            }
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return data
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['queryResult'])) {
+            if (!empty($map['queryResult'])) {
+                $model->queryResult = [];
+                $n                  = 0;
+                foreach ($map['queryResult'] as $item) {
+                    $model->queryResult[$n++] = null !== $item ? queryResult::fromMap($item) : $item;
+                }
+            }
+        }
+
+        return $model;
+    }
+}

+ 63 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody/data/queryResult.php

@@ -0,0 +1,63 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CheckMobilesCardSupportResponseBody\data;
+
+use AlibabaCloud\Tea\Model;
+
+class queryResult extends Model
+{
+    /**
+     * @example 1390000****
+     *
+     * @var string
+     */
+    public $mobile;
+
+    /**
+     * @example true
+     *
+     * @var bool
+     */
+    public $support;
+    protected $_name = [
+        'mobile'  => 'mobile',
+        'support' => 'support',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->mobile) {
+            $res['mobile'] = $this->mobile;
+        }
+        if (null !== $this->support) {
+            $res['support'] = $this->support;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return queryResult
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['mobile'])) {
+            $model->mobile = $map['mobile'];
+        }
+        if (isset($map['support'])) {
+            $model->support = $map['support'];
+        }
+
+        return $model;
+    }
+}

+ 99 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlRequest.php

@@ -0,0 +1,99 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class ConversionDataIntlRequest extends Model
+{
+    /**
+     * @example 0.53
+     *
+     * @var string
+     */
+    public $conversionRate;
+
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @example 1349055900000
+     *
+     * @var int
+     */
+    public $reportTime;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+    protected $_name = [
+        'conversionRate'       => 'ConversionRate',
+        'ownerId'              => 'OwnerId',
+        'reportTime'           => 'ReportTime',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->conversionRate) {
+            $res['ConversionRate'] = $this->conversionRate;
+        }
+        if (null !== $this->ownerId) {
+            $res['OwnerId'] = $this->ownerId;
+        }
+        if (null !== $this->reportTime) {
+            $res['ReportTime'] = $this->reportTime;
+        }
+        if (null !== $this->resourceOwnerAccount) {
+            $res['ResourceOwnerAccount'] = $this->resourceOwnerAccount;
+        }
+        if (null !== $this->resourceOwnerId) {
+            $res['ResourceOwnerId'] = $this->resourceOwnerId;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return ConversionDataIntlRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['ConversionRate'])) {
+            $model->conversionRate = $map['ConversionRate'];
+        }
+        if (isset($map['OwnerId'])) {
+            $model->ownerId = $map['OwnerId'];
+        }
+        if (isset($map['ReportTime'])) {
+            $model->reportTime = $map['ReportTime'];
+        }
+        if (isset($map['ResourceOwnerAccount'])) {
+            $model->resourceOwnerAccount = $map['ResourceOwnerAccount'];
+        }
+        if (isset($map['ResourceOwnerId'])) {
+            $model->resourceOwnerId = $map['ResourceOwnerId'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class ConversionDataIntlResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var ConversionDataIntlResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return ConversionDataIntlResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = ConversionDataIntlResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 77 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlResponseBody.php

@@ -0,0 +1,77 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class ConversionDataIntlResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $message;
+
+    /**
+     * @example F655A8D5-B967-440B-8683-DAD6FF8D****
+     *
+     * @var string
+     */
+    public $requestId;
+    protected $_name = [
+        'code'      => 'Code',
+        'message'   => 'Message',
+        'requestId' => 'RequestId',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->message) {
+            $res['Message'] = $this->message;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return ConversionDataIntlResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Message'])) {
+            $model->message = $map['Message'];
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+
+        return $model;
+    }
+}

+ 85 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateRequest.php

@@ -0,0 +1,85 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class CreateCardSmsTemplateRequest extends Model
+{
+    /**
+     * @example XiaoMi
+     *
+     * @var string
+     */
+    public $factorys;
+
+    /**
+     * @var string
+     */
+    public $memo;
+
+    /**
+     * @var mixed[]
+     */
+    public $template;
+
+    /**
+     * @var string
+     */
+    public $templateName;
+    protected $_name = [
+        'factorys'     => 'Factorys',
+        'memo'         => 'Memo',
+        'template'     => 'Template',
+        'templateName' => 'TemplateName',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->factorys) {
+            $res['Factorys'] = $this->factorys;
+        }
+        if (null !== $this->memo) {
+            $res['Memo'] = $this->memo;
+        }
+        if (null !== $this->template) {
+            $res['Template'] = $this->template;
+        }
+        if (null !== $this->templateName) {
+            $res['TemplateName'] = $this->templateName;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CreateCardSmsTemplateRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Factorys'])) {
+            $model->factorys = $map['Factorys'];
+        }
+        if (isset($map['Memo'])) {
+            $model->memo = $map['Memo'];
+        }
+        if (isset($map['Template'])) {
+            $model->template = $map['Template'];
+        }
+        if (isset($map['TemplateName'])) {
+            $model->templateName = $map['TemplateName'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class CreateCardSmsTemplateResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var CreateCardSmsTemplateResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CreateCardSmsTemplateResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = CreateCardSmsTemplateResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 90 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponseBody.php

@@ -0,0 +1,90 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CreateCardSmsTemplateResponseBody\data;
+use AlibabaCloud\Tea\Model;
+
+class CreateCardSmsTemplateResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @var data
+     */
+    public $data;
+
+    /**
+     * @example F655A8D5-B967-440B-8683-DAD6FF8DE990
+     *
+     * @var string
+     */
+    public $requestId;
+
+    /**
+     * @example true
+     *
+     * @var bool
+     */
+    public $success;
+    protected $_name = [
+        'code'      => 'Code',
+        'data'      => 'Data',
+        'requestId' => 'RequestId',
+        'success'   => 'Success',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->data) {
+            $res['Data'] = null !== $this->data ? $this->data->toMap() : null;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+        if (null !== $this->success) {
+            $res['Success'] = $this->success;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CreateCardSmsTemplateResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Data'])) {
+            $model->data = data::fromMap($map['Data']);
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+        if (isset($map['Success'])) {
+            $model->success = $map['Success'];
+        }
+
+        return $model;
+    }
+}

+ 49 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponseBody/data.php

@@ -0,0 +1,49 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CreateCardSmsTemplateResponseBody;
+
+use AlibabaCloud\Tea\Model;
+
+class data extends Model
+{
+    /**
+     * @example CARD_SMS_60000****
+     *
+     * @var string
+     */
+    public $templateCode;
+    protected $_name = [
+        'templateCode' => 'TemplateCode',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->templateCode) {
+            $res['TemplateCode'] = $this->templateCode;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return data
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['TemplateCode'])) {
+            $model->templateCode = $map['TemplateCode'];
+        }
+
+        return $model;
+    }
+}

+ 85 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateShrinkRequest.php

@@ -0,0 +1,85 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class CreateCardSmsTemplateShrinkRequest extends Model
+{
+    /**
+     * @example XiaoMi
+     *
+     * @var string
+     */
+    public $factorys;
+
+    /**
+     * @var string
+     */
+    public $memo;
+
+    /**
+     * @var string
+     */
+    public $templateShrink;
+
+    /**
+     * @var string
+     */
+    public $templateName;
+    protected $_name = [
+        'factorys'       => 'Factorys',
+        'memo'           => 'Memo',
+        'templateShrink' => 'Template',
+        'templateName'   => 'TemplateName',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->factorys) {
+            $res['Factorys'] = $this->factorys;
+        }
+        if (null !== $this->memo) {
+            $res['Memo'] = $this->memo;
+        }
+        if (null !== $this->templateShrink) {
+            $res['Template'] = $this->templateShrink;
+        }
+        if (null !== $this->templateName) {
+            $res['TemplateName'] = $this->templateName;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CreateCardSmsTemplateShrinkRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Factorys'])) {
+            $model->factorys = $map['Factorys'];
+        }
+        if (isset($map['Memo'])) {
+            $model->memo = $map['Memo'];
+        }
+        if (isset($map['Template'])) {
+            $model->templateShrink = $map['Template'];
+        }
+        if (isset($map['TemplateName'])) {
+            $model->templateName = $map['TemplateName'];
+        }
+
+        return $model;
+    }
+}

+ 127 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlRequest.php

@@ -0,0 +1,127 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class CreateSmartShortUrlRequest extends Model
+{
+    /**
+     * @example 46
+     *
+     * @var int
+     */
+    public $expiration;
+
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @example 示例值示例值
+     *
+     * @var string
+     */
+    public $phoneNumbers;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+
+    /**
+     * @example 示例值示例值
+     *
+     * @var string
+     */
+    public $sourceName;
+
+    /**
+     * @example 示例值
+     *
+     * @var string
+     */
+    public $sourceUrl;
+    protected $_name = [
+        'expiration'           => 'Expiration',
+        'ownerId'              => 'OwnerId',
+        'phoneNumbers'         => 'PhoneNumbers',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+        'sourceName'           => 'SourceName',
+        'sourceUrl'            => 'SourceUrl',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->expiration) {
+            $res['Expiration'] = $this->expiration;
+        }
+        if (null !== $this->ownerId) {
+            $res['OwnerId'] = $this->ownerId;
+        }
+        if (null !== $this->phoneNumbers) {
+            $res['PhoneNumbers'] = $this->phoneNumbers;
+        }
+        if (null !== $this->resourceOwnerAccount) {
+            $res['ResourceOwnerAccount'] = $this->resourceOwnerAccount;
+        }
+        if (null !== $this->resourceOwnerId) {
+            $res['ResourceOwnerId'] = $this->resourceOwnerId;
+        }
+        if (null !== $this->sourceName) {
+            $res['SourceName'] = $this->sourceName;
+        }
+        if (null !== $this->sourceUrl) {
+            $res['SourceUrl'] = $this->sourceUrl;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CreateSmartShortUrlRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Expiration'])) {
+            $model->expiration = $map['Expiration'];
+        }
+        if (isset($map['OwnerId'])) {
+            $model->ownerId = $map['OwnerId'];
+        }
+        if (isset($map['PhoneNumbers'])) {
+            $model->phoneNumbers = $map['PhoneNumbers'];
+        }
+        if (isset($map['ResourceOwnerAccount'])) {
+            $model->resourceOwnerAccount = $map['ResourceOwnerAccount'];
+        }
+        if (isset($map['ResourceOwnerId'])) {
+            $model->resourceOwnerId = $map['ResourceOwnerId'];
+        }
+        if (isset($map['SourceName'])) {
+            $model->sourceName = $map['SourceName'];
+        }
+        if (isset($map['SourceUrl'])) {
+            $model->sourceUrl = $map['SourceUrl'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class CreateSmartShortUrlResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var CreateSmartShortUrlResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CreateSmartShortUrlResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = CreateSmartShortUrlResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 102 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponseBody.php

@@ -0,0 +1,102 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CreateSmartShortUrlResponseBody\model_;
+use AlibabaCloud\Tea\Model;
+
+class CreateSmartShortUrlResponseBody extends Model
+{
+    /**
+     * @example 示例值示例值示例值
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @example 示例值示例值示例值
+     *
+     * @var string
+     */
+    public $message;
+
+    /**
+     * @var model_[]
+     */
+    public $model;
+
+    /**
+     * @example 示例值示例值
+     *
+     * @var string
+     */
+    public $requestId;
+    protected $_name = [
+        'code'      => 'Code',
+        'message'   => 'Message',
+        'model'     => 'Model',
+        'requestId' => 'RequestId',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->message) {
+            $res['Message'] = $this->message;
+        }
+        if (null !== $this->model) {
+            $res['Model'] = [];
+            if (null !== $this->model && \is_array($this->model)) {
+                $n = 0;
+                foreach ($this->model as $item) {
+                    $res['Model'][$n++] = null !== $item ? $item->toMap() : $item;
+                }
+            }
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return CreateSmartShortUrlResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Message'])) {
+            $model->message = $map['Message'];
+        }
+        if (isset($map['Model'])) {
+            if (!empty($map['Model'])) {
+                $model->model = [];
+                $n            = 0;
+                foreach ($map['Model'] as $item) {
+                    $model->model[$n++] = null !== $item ? model_::fromMap($item) : $item;
+                }
+            }
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+
+        return $model;
+    }
+}

+ 105 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponseBody/model_.php

@@ -0,0 +1,105 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CreateSmartShortUrlResponseBody;
+
+use AlibabaCloud\Tea\Model;
+
+class model_ extends Model
+{
+    /**
+     * @example 示例值
+     *
+     * @var string
+     */
+    public $domain;
+
+    /**
+     * @example 11
+     *
+     * @var int
+     */
+    public $expiration;
+
+    /**
+     * @example 示例值
+     *
+     * @var string
+     */
+    public $phoneNumber;
+
+    /**
+     * @example 示例值
+     *
+     * @var string
+     */
+    public $shortName;
+
+    /**
+     * @example 示例值示例值
+     *
+     * @var string
+     */
+    public $shortUrl;
+    protected $_name = [
+        'domain'      => 'Domain',
+        'expiration'  => 'Expiration',
+        'phoneNumber' => 'PhoneNumber',
+        'shortName'   => 'ShortName',
+        'shortUrl'    => 'ShortUrl',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->domain) {
+            $res['Domain'] = $this->domain;
+        }
+        if (null !== $this->expiration) {
+            $res['Expiration'] = $this->expiration;
+        }
+        if (null !== $this->phoneNumber) {
+            $res['PhoneNumber'] = $this->phoneNumber;
+        }
+        if (null !== $this->shortName) {
+            $res['ShortName'] = $this->shortName;
+        }
+        if (null !== $this->shortUrl) {
+            $res['ShortUrl'] = $this->shortUrl;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return model_
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Domain'])) {
+            $model->domain = $map['Domain'];
+        }
+        if (isset($map['Expiration'])) {
+            $model->expiration = $map['Expiration'];
+        }
+        if (isset($map['PhoneNumber'])) {
+            $model->phoneNumber = $map['PhoneNumber'];
+        }
+        if (isset($map['ShortName'])) {
+            $model->shortName = $map['ShortName'];
+        }
+        if (isset($map['ShortUrl'])) {
+            $model->shortUrl = $map['ShortUrl'];
+        }
+
+        return $model;
+    }
+}

+ 85 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php

@@ -0,0 +1,85 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class DeleteShortUrlRequest extends Model
+{
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+
+    /**
+     * @example https://www.****.com/product/sms
+     *
+     * @var string
+     */
+    public $sourceUrl;
+    protected $_name = [
+        'ownerId'              => 'OwnerId',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+        'sourceUrl'            => 'SourceUrl',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->ownerId) {
+            $res['OwnerId'] = $this->ownerId;
+        }
+        if (null !== $this->resourceOwnerAccount) {
+            $res['ResourceOwnerAccount'] = $this->resourceOwnerAccount;
+        }
+        if (null !== $this->resourceOwnerId) {
+            $res['ResourceOwnerId'] = $this->resourceOwnerId;
+        }
+        if (null !== $this->sourceUrl) {
+            $res['SourceUrl'] = $this->sourceUrl;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return DeleteShortUrlRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['OwnerId'])) {
+            $model->ownerId = $map['OwnerId'];
+        }
+        if (isset($map['ResourceOwnerAccount'])) {
+            $model->resourceOwnerAccount = $map['ResourceOwnerAccount'];
+        }
+        if (isset($map['ResourceOwnerId'])) {
+            $model->resourceOwnerId = $map['ResourceOwnerId'];
+        }
+        if (isset($map['SourceUrl'])) {
+            $model->sourceUrl = $map['SourceUrl'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class DeleteShortUrlResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var DeleteShortUrlResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return DeleteShortUrlResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = DeleteShortUrlResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 77 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php

@@ -0,0 +1,77 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class DeleteShortUrlResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $message;
+
+    /**
+     * @example 819BE656-D2E0-4858-8B21-B2E477085AAF
+     *
+     * @var string
+     */
+    public $requestId;
+    protected $_name = [
+        'code'      => 'Code',
+        'message'   => 'Message',
+        'requestId' => 'RequestId',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->message) {
+            $res['Message'] = $this->message;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return DeleteShortUrlResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Message'])) {
+            $model->message = $map['Message'];
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+
+        return $model;
+    }
+}

+ 83 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignRequest.php

@@ -0,0 +1,83 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class DeleteSmsSignRequest extends Model
+{
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+
+    /**
+     * @var string
+     */
+    public $signName;
+    protected $_name = [
+        'ownerId'              => 'OwnerId',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+        'signName'             => 'SignName',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->ownerId) {
+            $res['OwnerId'] = $this->ownerId;
+        }
+        if (null !== $this->resourceOwnerAccount) {
+            $res['ResourceOwnerAccount'] = $this->resourceOwnerAccount;
+        }
+        if (null !== $this->resourceOwnerId) {
+            $res['ResourceOwnerId'] = $this->resourceOwnerId;
+        }
+        if (null !== $this->signName) {
+            $res['SignName'] = $this->signName;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return DeleteSmsSignRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['OwnerId'])) {
+            $model->ownerId = $map['OwnerId'];
+        }
+        if (isset($map['ResourceOwnerAccount'])) {
+            $model->resourceOwnerAccount = $map['ResourceOwnerAccount'];
+        }
+        if (isset($map['ResourceOwnerId'])) {
+            $model->resourceOwnerId = $map['ResourceOwnerId'];
+        }
+        if (isset($map['SignName'])) {
+            $model->signName = $map['SignName'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponse.php

@@ -0,0 +1,74 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class DeleteSmsSignResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var DeleteSmsSignResponseBody
+     */
+    public $body;
+    protected $_name = [
+        'headers'    => 'headers',
+        'statusCode' => 'statusCode',
+        'body'       => 'body',
+    ];
+
+    public function validate()
+    {
+        Model::validateRequired('headers', $this->headers, true);
+        Model::validateRequired('statusCode', $this->statusCode, true);
+        Model::validateRequired('body', $this->body, true);
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->headers) {
+            $res['headers'] = $this->headers;
+        }
+        if (null !== $this->statusCode) {
+            $res['statusCode'] = $this->statusCode;
+        }
+        if (null !== $this->body) {
+            $res['body'] = null !== $this->body ? $this->body->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return DeleteSmsSignResponse
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['headers'])) {
+            $model->headers = $map['headers'];
+        }
+        if (isset($map['statusCode'])) {
+            $model->statusCode = $map['statusCode'];
+        }
+        if (isset($map['body'])) {
+            $model->body = DeleteSmsSignResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 89 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php

@@ -0,0 +1,89 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class DeleteSmsSignResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $message;
+
+    /**
+     * @example F655A8D5-B967-440B-8683-DAD6FF8D****
+     *
+     * @var string
+     */
+    public $requestId;
+
+    /**
+     * @var string
+     */
+    public $signName;
+    protected $_name = [
+        'code'      => 'Code',
+        'message'   => 'Message',
+        'requestId' => 'RequestId',
+        'signName'  => 'SignName',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->message) {
+            $res['Message'] = $this->message;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+        if (null !== $this->signName) {
+            $res['SignName'] = $this->signName;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return DeleteSmsSignResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['Message'])) {
+            $model->message = $map['Message'];
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+        if (isset($map['SignName'])) {
+            $model->signName = $map['SignName'];
+        }
+
+        return $model;
+    }
+}

+ 0 - 0
include/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateRequest.php


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff