wesmiler преди 2 години
родител
ревизия
6e868f8e54
променени са 100 файла, в които са добавени 10766 реда и са изтрити 0 реда
  1. 14 0
      vendor/alibabacloud/credentials/CHANGELOG.md
  2. 30 0
      vendor/alibabacloud/credentials/CONTRIBUTING.md
  3. 13 0
      vendor/alibabacloud/credentials/LICENSE.md
  4. 88 0
      vendor/alibabacloud/credentials/NOTICE.md
  5. 250 0
      vendor/alibabacloud/credentials/README-zh-CN.md
  6. 251 0
      vendor/alibabacloud/credentials/README.md
  7. 21 0
      vendor/alibabacloud/credentials/SECURITY.md
  8. 6 0
      vendor/alibabacloud/credentials/UPGRADING.md
  9. 107 0
      vendor/alibabacloud/credentials/composer.json
  10. 72 0
      vendor/alibabacloud/credentials/src/AccessKeyCredential.php
  11. 53 0
      vendor/alibabacloud/credentials/src/BearerTokenCredential.php
  12. 183 0
      vendor/alibabacloud/credentials/src/Credential.php
  13. 50 0
      vendor/alibabacloud/credentials/src/Credential/Config.php
  14. 102 0
      vendor/alibabacloud/credentials/src/Credentials.php
  15. 23 0
      vendor/alibabacloud/credentials/src/CredentialsInterface.php
  16. 151 0
      vendor/alibabacloud/credentials/src/EcsRamRoleCredential.php
  17. 134 0
      vendor/alibabacloud/credentials/src/Filter.php
  18. 202 0
      vendor/alibabacloud/credentials/src/Helper.php
  19. 98 0
      vendor/alibabacloud/credentials/src/MockTrait.php
  20. 187 0
      vendor/alibabacloud/credentials/src/Providers/ChainProvider.php
  21. 94 0
      vendor/alibabacloud/credentials/src/Providers/EcsRamRoleProvider.php
  22. 82 0
      vendor/alibabacloud/credentials/src/Providers/Provider.php
  23. 49 0
      vendor/alibabacloud/credentials/src/Providers/RamRoleArnProvider.php
  24. 53 0
      vendor/alibabacloud/credentials/src/Providers/RsaKeyPairProvider.php
  25. 218 0
      vendor/alibabacloud/credentials/src/RamRoleArnCredential.php
  26. 37 0
      vendor/alibabacloud/credentials/src/Request/AssumeRole.php
  27. 33 0
      vendor/alibabacloud/credentials/src/Request/GenerateSessionAccessKey.php
  28. 155 0
      vendor/alibabacloud/credentials/src/Request/Request.php
  29. 158 0
      vendor/alibabacloud/credentials/src/RsaKeyPairCredential.php
  30. 47 0
      vendor/alibabacloud/credentials/src/Signature/BearerTokenSignature.php
  31. 47 0
      vendor/alibabacloud/credentials/src/Signature/ShaHmac1Signature.php
  32. 47 0
      vendor/alibabacloud/credentials/src/Signature/ShaHmac256Signature.php
  33. 64 0
      vendor/alibabacloud/credentials/src/Signature/ShaHmac256WithRsaSignature.php
  34. 34 0
      vendor/alibabacloud/credentials/src/Signature/SignatureInterface.php
  35. 98 0
      vendor/alibabacloud/credentials/src/StsCredential.php
  36. 15 0
      vendor/alibabacloud/dysmsapi-20170525/.gitignore
  37. 65 0
      vendor/alibabacloud/dysmsapi-20170525/.php_cs.dist
  38. 66 0
      vendor/alibabacloud/dysmsapi-20170525/ChangeLog.md
  39. 201 0
      vendor/alibabacloud/dysmsapi-20170525/LICENSE
  40. 35 0
      vendor/alibabacloud/dysmsapi-20170525/README-CN.md
  41. 35 0
      vendor/alibabacloud/dysmsapi-20170525/README.md
  42. 17 0
      vendor/alibabacloud/dysmsapi-20170525/autoload.php
  43. 33 0
      vendor/alibabacloud/dysmsapi-20170525/composer.json
  44. 2147 0
      vendor/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php
  45. 111 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php
  46. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php
  47. 90 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php
  48. 77 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php
  49. 148 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest.php
  50. 63 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest/signFileList.php
  51. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponse.php
  52. 89 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponseBody.php
  53. 121 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateRequest.php
  54. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponse.php
  55. 91 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php
  56. 63 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportRequest.php
  57. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponse.php
  58. 90 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody.php
  59. 60 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody/data.php
  60. 63 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CheckMobilesCardSupportResponseBody/data/queryResult.php
  61. 99 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlRequest.php
  62. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlResponse.php
  63. 77 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ConversionDataIntlResponseBody.php
  64. 85 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateRequest.php
  65. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponse.php
  66. 90 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponseBody.php
  67. 49 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateResponseBody/data.php
  68. 85 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateCardSmsTemplateShrinkRequest.php
  69. 127 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlRequest.php
  70. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponse.php
  71. 102 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponseBody.php
  72. 105 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateSmartShortUrlResponseBody/model_.php
  73. 85 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php
  74. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php
  75. 77 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php
  76. 83 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignRequest.php
  77. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponse.php
  78. 89 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php
  79. 85 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateRequest.php
  80. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateResponse.php
  81. 91 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateResponseBody.php
  82. 156 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetCardSmsLinkRequest.php
  83. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetCardSmsLinkResponse.php
  84. 90 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetCardSmsLinkResponseBody.php
  85. 101 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetCardSmsLinkResponseBody/data.php
  86. 103 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetMediaResourceIdRequest.php
  87. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetMediaResourceIdResponse.php
  88. 90 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetMediaResourceIdResponseBody.php
  89. 63 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetMediaResourceIdResponseBody/data.php
  90. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetOSSInfoForCardTemplateResponse.php
  91. 90 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetOSSInfoForCardTemplateResponseBody.php
  92. 145 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/GetOSSInfoForCardTemplateResponseBody/data.php
  93. 180 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesRequest.php
  94. 63 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesRequest/tag.php
  95. 74 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesResponse.php
  96. 90 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesResponseBody.php
  97. 60 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesResponseBody/tagResources.php
  98. 91 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesResponseBody/tagResources/tagResource.php
  99. 148 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsSignRequest.php
  100. 0 0
      vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsSignRequest/signFileList.php

+ 14 - 0
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
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
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
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.

Файловите разлики са ограничени, защото са твърде много
+ 250 - 0
vendor/alibabacloud/credentials/README-zh-CN.md


Файловите разлики са ограничени, защото са твърде много
+ 251 - 0
vendor/alibabacloud/credentials/README.md


+ 21 - 0
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
+}

Файловите разлики са ограничени, защото са твърде много
+ 2147 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php


+ 111 - 0
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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;
+    }
+}

+ 85 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateRequest.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 DeleteSmsTemplateRequest extends Model
+{
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+
+    /**
+     * @example SMS_152550****
+     *
+     * @var string
+     */
+    public $templateCode;
+    protected $_name = [
+        'ownerId'              => 'OwnerId',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+        'templateCode'         => 'TemplateCode',
+    ];
+
+    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->templateCode) {
+            $res['TemplateCode'] = $this->templateCode;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return DeleteSmsTemplateRequest
+     */
+    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['TemplateCode'])) {
+            $model->templateCode = $map['TemplateCode'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateResponse.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 DeleteSmsTemplateResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var DeleteSmsTemplateResponseBody
+     */
+    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 DeleteSmsTemplateResponse
+     */
+    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 = DeleteSmsTemplateResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 91 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateResponseBody.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 DeleteSmsTemplateResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $message;
+
+    /**
+     * @example CCA2BCFF-2BA7-427C-90EE-AC6994748607
+     *
+     * @var string
+     */
+    public $requestId;
+
+    /**
+     * @example SMS_20375****
+     *
+     * @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 DeleteSmsTemplateResponseBody
+     */
+    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;
+    }
+}

+ 156 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetCardSmsLinkRequest.php

@@ -0,0 +1,156 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class GetCardSmsLinkRequest extends Model
+{
+    /**
+     * @example 2
+     *
+     * @var int
+     */
+    public $cardCodeType;
+
+    /**
+     * @example 1
+     *
+     * @var int
+     */
+    public $cardLinkType;
+
+    /**
+     * @example CARD_SMS_****
+     *
+     * @var string
+     */
+    public $cardTemplateCode;
+
+    /**
+     * @var string
+     */
+    public $cardTemplateParamJson;
+
+    /**
+     * @example abCde
+     *
+     * @var string
+     */
+    public $customShortCodeJson;
+
+    /**
+     * @var string
+     */
+    public $domain;
+
+    /**
+     * @example BC20220608102511660860762****
+     *
+     * @var string
+     */
+    public $outId;
+
+    /**
+     * @example [\"1390000****
+     * \",\"1370000****
+     * \"]
+     * @var string
+     */
+    public $phoneNumberJson;
+
+    /**
+     * @var string
+     */
+    public $signNameJson;
+    protected $_name = [
+        'cardCodeType'          => 'CardCodeType',
+        'cardLinkType'          => 'CardLinkType',
+        'cardTemplateCode'      => 'CardTemplateCode',
+        'cardTemplateParamJson' => 'CardTemplateParamJson',
+        'customShortCodeJson'   => 'CustomShortCodeJson',
+        'domain'                => 'Domain',
+        'outId'                 => 'OutId',
+        'phoneNumberJson'       => 'PhoneNumberJson',
+        'signNameJson'          => 'SignNameJson',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->cardCodeType) {
+            $res['CardCodeType'] = $this->cardCodeType;
+        }
+        if (null !== $this->cardLinkType) {
+            $res['CardLinkType'] = $this->cardLinkType;
+        }
+        if (null !== $this->cardTemplateCode) {
+            $res['CardTemplateCode'] = $this->cardTemplateCode;
+        }
+        if (null !== $this->cardTemplateParamJson) {
+            $res['CardTemplateParamJson'] = $this->cardTemplateParamJson;
+        }
+        if (null !== $this->customShortCodeJson) {
+            $res['CustomShortCodeJson'] = $this->customShortCodeJson;
+        }
+        if (null !== $this->domain) {
+            $res['Domain'] = $this->domain;
+        }
+        if (null !== $this->outId) {
+            $res['OutId'] = $this->outId;
+        }
+        if (null !== $this->phoneNumberJson) {
+            $res['PhoneNumberJson'] = $this->phoneNumberJson;
+        }
+        if (null !== $this->signNameJson) {
+            $res['SignNameJson'] = $this->signNameJson;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return GetCardSmsLinkRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['CardCodeType'])) {
+            $model->cardCodeType = $map['CardCodeType'];
+        }
+        if (isset($map['CardLinkType'])) {
+            $model->cardLinkType = $map['CardLinkType'];
+        }
+        if (isset($map['CardTemplateCode'])) {
+            $model->cardTemplateCode = $map['CardTemplateCode'];
+        }
+        if (isset($map['CardTemplateParamJson'])) {
+            $model->cardTemplateParamJson = $map['CardTemplateParamJson'];
+        }
+        if (isset($map['CustomShortCodeJson'])) {
+            $model->customShortCodeJson = $map['CustomShortCodeJson'];
+        }
+        if (isset($map['Domain'])) {
+            $model->domain = $map['Domain'];
+        }
+        if (isset($map['OutId'])) {
+            $model->outId = $map['OutId'];
+        }
+        if (isset($map['PhoneNumberJson'])) {
+            $model->phoneNumberJson = $map['PhoneNumberJson'];
+        }
+        if (isset($map['SignNameJson'])) {
+            $model->signNameJson = $map['SignNameJson'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetCardSmsLinkResponse.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 GetCardSmsLinkResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var GetCardSmsLinkResponseBody
+     */
+    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 GetCardSmsLinkResponse
+     */
+    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 = GetCardSmsLinkResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 90 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetCardSmsLinkResponseBody.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\GetCardSmsLinkResponseBody\data;
+use AlibabaCloud\Tea\Model;
+
+class GetCardSmsLinkResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @var data
+     */
+    public $data;
+
+    /**
+     * @example CC89A90C-978F-46AC-B80D-54738371E7CA
+     *
+     * @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 GetCardSmsLinkResponseBody
+     */
+    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;
+    }
+}

+ 101 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetCardSmsLinkResponseBody/data.php

@@ -0,0 +1,101 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\GetCardSmsLinkResponseBody;
+
+use AlibabaCloud\Tea\Model;
+
+class data extends Model
+{
+    /**
+     * @var string
+     */
+    public $cardPhoneNumbers;
+
+    /**
+     * @var string
+     */
+    public $cardSignNames;
+
+    /**
+     * @example [\"mw2m.cn/LAaGGa\",\"mw2m.cn/LAAaes\"]
+     *
+     * @var string
+     */
+    public $cardSmsLinks;
+
+    /**
+     * @example 0
+     *
+     * @var int
+     */
+    public $cardTmpState;
+
+    /**
+     * @example 1390000****
+     *
+     * @var string
+     */
+    public $notMediaMobiles;
+    protected $_name = [
+        'cardPhoneNumbers' => 'CardPhoneNumbers',
+        'cardSignNames'    => 'CardSignNames',
+        'cardSmsLinks'     => 'CardSmsLinks',
+        'cardTmpState'     => 'CardTmpState',
+        'notMediaMobiles'  => 'NotMediaMobiles',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->cardPhoneNumbers) {
+            $res['CardPhoneNumbers'] = $this->cardPhoneNumbers;
+        }
+        if (null !== $this->cardSignNames) {
+            $res['CardSignNames'] = $this->cardSignNames;
+        }
+        if (null !== $this->cardSmsLinks) {
+            $res['CardSmsLinks'] = $this->cardSmsLinks;
+        }
+        if (null !== $this->cardTmpState) {
+            $res['CardTmpState'] = $this->cardTmpState;
+        }
+        if (null !== $this->notMediaMobiles) {
+            $res['NotMediaMobiles'] = $this->notMediaMobiles;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return data
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['CardPhoneNumbers'])) {
+            $model->cardPhoneNumbers = $map['CardPhoneNumbers'];
+        }
+        if (isset($map['CardSignNames'])) {
+            $model->cardSignNames = $map['CardSignNames'];
+        }
+        if (isset($map['CardSmsLinks'])) {
+            $model->cardSmsLinks = $map['CardSmsLinks'];
+        }
+        if (isset($map['CardTmpState'])) {
+            $model->cardTmpState = $map['CardTmpState'];
+        }
+        if (isset($map['NotMediaMobiles'])) {
+            $model->notMediaMobiles = $map['NotMediaMobiles'];
+        }
+
+        return $model;
+    }
+}

+ 103 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetMediaResourceIdRequest.php

@@ -0,0 +1,103 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\Tea\Model;
+
+class GetMediaResourceIdRequest extends Model
+{
+    /**
+     * @example {\"img_rate\":\"oneToOne\"}
+     *
+     * @var string
+     */
+    public $extendInfo;
+
+    /**
+     * @example 12
+     *
+     * @var int
+     */
+    public $fileSize;
+
+    /**
+     * @var string
+     */
+    public $memo;
+
+    /**
+     * @example oss://alicom-fc-media/1947741454322274/alicom-fc-media/pic/202205191526575398603697152.png
+     *
+     * @var string
+     */
+    public $ossKey;
+
+    /**
+     * @example 1
+     *
+     * @var int
+     */
+    public $resourceType;
+    protected $_name = [
+        'extendInfo'   => 'ExtendInfo',
+        'fileSize'     => 'FileSize',
+        'memo'         => 'Memo',
+        'ossKey'       => 'OssKey',
+        'resourceType' => 'ResourceType',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->extendInfo) {
+            $res['ExtendInfo'] = $this->extendInfo;
+        }
+        if (null !== $this->fileSize) {
+            $res['FileSize'] = $this->fileSize;
+        }
+        if (null !== $this->memo) {
+            $res['Memo'] = $this->memo;
+        }
+        if (null !== $this->ossKey) {
+            $res['OssKey'] = $this->ossKey;
+        }
+        if (null !== $this->resourceType) {
+            $res['ResourceType'] = $this->resourceType;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return GetMediaResourceIdRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['ExtendInfo'])) {
+            $model->extendInfo = $map['ExtendInfo'];
+        }
+        if (isset($map['FileSize'])) {
+            $model->fileSize = $map['FileSize'];
+        }
+        if (isset($map['Memo'])) {
+            $model->memo = $map['Memo'];
+        }
+        if (isset($map['OssKey'])) {
+            $model->ossKey = $map['OssKey'];
+        }
+        if (isset($map['ResourceType'])) {
+            $model->resourceType = $map['ResourceType'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetMediaResourceIdResponse.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 GetMediaResourceIdResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var GetMediaResourceIdResponseBody
+     */
+    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 GetMediaResourceIdResponse
+     */
+    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 = GetMediaResourceIdResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 90 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetMediaResourceIdResponseBody.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\GetMediaResourceIdResponseBody\data;
+use AlibabaCloud\Tea\Model;
+
+class GetMediaResourceIdResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @var data
+     */
+    public $data;
+
+    /**
+     * @example F07CF237-F6E3-5F77-B91B-F9B7C5DE84AB
+     *
+     * @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 GetMediaResourceIdResponseBody
+     */
+    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;
+    }
+}

+ 63 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetMediaResourceIdResponseBody/data.php

@@ -0,0 +1,63 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\GetMediaResourceIdResponseBody;
+
+use AlibabaCloud\Tea\Model;
+
+class data extends Model
+{
+    /**
+     * @example http://test-example.com/download.jpg
+     *
+     * @var string
+     */
+    public $resUrlDownload;
+
+    /**
+     * @example SMS_14571****
+     *
+     * @var int
+     */
+    public $resourceId;
+    protected $_name = [
+        'resUrlDownload' => 'ResUrlDownload',
+        'resourceId'     => 'ResourceId',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->resUrlDownload) {
+            $res['ResUrlDownload'] = $this->resUrlDownload;
+        }
+        if (null !== $this->resourceId) {
+            $res['ResourceId'] = $this->resourceId;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return data
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['ResUrlDownload'])) {
+            $model->resUrlDownload = $map['ResUrlDownload'];
+        }
+        if (isset($map['ResourceId'])) {
+            $model->resourceId = $map['ResourceId'];
+        }
+
+        return $model;
+    }
+}

+ 74 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetOSSInfoForCardTemplateResponse.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 GetOSSInfoForCardTemplateResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var GetOSSInfoForCardTemplateResponseBody
+     */
+    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 GetOSSInfoForCardTemplateResponse
+     */
+    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 = GetOSSInfoForCardTemplateResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 90 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetOSSInfoForCardTemplateResponseBody.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\GetOSSInfoForCardTemplateResponseBody\data;
+use AlibabaCloud\Tea\Model;
+
+class GetOSSInfoForCardTemplateResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @var data
+     */
+    public $data;
+
+    /**
+     * @example A90E4451-FED7-49D2-87C8-00700A8C4D0D
+     *
+     * @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 GetOSSInfoForCardTemplateResponseBody
+     */
+    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;
+    }
+}

+ 145 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/GetOSSInfoForCardTemplateResponseBody/data.php

@@ -0,0 +1,145 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\GetOSSInfoForCardTemplateResponseBody;
+
+use AlibabaCloud\Tea\Model;
+
+class data extends Model
+{
+    /**
+     * @example LTAIxetqt1Dg****
+     *
+     * @var string
+     */
+    public $accessKeyId;
+
+    /**
+     * @example 599333677478****
+     *
+     * @var string
+     */
+    public $aliUid;
+
+    /**
+     * @example alicom-cardsms-resources
+     *
+     * @var string
+     */
+    public $bucket;
+
+    /**
+     * @example 1634209418
+     *
+     * @var string
+     */
+    public $expireTime;
+
+    /**
+     * @example https://alicom-cardsms-resources.oss-cn-zhangjiakou.aliyuncs.com
+     *
+     * @var string
+     */
+    public $host;
+
+    /**
+     * @example eyJxxx0=
+     *
+     * @var string
+     */
+    public $policy;
+
+    /**
+     * @var string
+     */
+    public $signature;
+
+    /**
+     * @example 1631792777
+     *
+     * @var string
+     */
+    public $startPath;
+    protected $_name = [
+        'accessKeyId' => 'AccessKeyId',
+        'aliUid'      => 'AliUid',
+        'bucket'      => 'Bucket',
+        'expireTime'  => 'ExpireTime',
+        'host'        => 'Host',
+        'policy'      => 'Policy',
+        'signature'   => 'Signature',
+        'startPath'   => 'StartPath',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->accessKeyId) {
+            $res['AccessKeyId'] = $this->accessKeyId;
+        }
+        if (null !== $this->aliUid) {
+            $res['AliUid'] = $this->aliUid;
+        }
+        if (null !== $this->bucket) {
+            $res['Bucket'] = $this->bucket;
+        }
+        if (null !== $this->expireTime) {
+            $res['ExpireTime'] = $this->expireTime;
+        }
+        if (null !== $this->host) {
+            $res['Host'] = $this->host;
+        }
+        if (null !== $this->policy) {
+            $res['Policy'] = $this->policy;
+        }
+        if (null !== $this->signature) {
+            $res['Signature'] = $this->signature;
+        }
+        if (null !== $this->startPath) {
+            $res['StartPath'] = $this->startPath;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return data
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['AccessKeyId'])) {
+            $model->accessKeyId = $map['AccessKeyId'];
+        }
+        if (isset($map['AliUid'])) {
+            $model->aliUid = $map['AliUid'];
+        }
+        if (isset($map['Bucket'])) {
+            $model->bucket = $map['Bucket'];
+        }
+        if (isset($map['ExpireTime'])) {
+            $model->expireTime = $map['ExpireTime'];
+        }
+        if (isset($map['Host'])) {
+            $model->host = $map['Host'];
+        }
+        if (isset($map['Policy'])) {
+            $model->policy = $map['Policy'];
+        }
+        if (isset($map['Signature'])) {
+            $model->signature = $map['Signature'];
+        }
+        if (isset($map['StartPath'])) {
+            $model->startPath = $map['StartPath'];
+        }
+
+        return $model;
+    }
+}

+ 180 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesRequest.php

@@ -0,0 +1,180 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models;
+
+use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\ListTagResourcesRequest\tag;
+use AlibabaCloud\Tea\Model;
+
+class ListTagResourcesRequest extends Model
+{
+    /**
+     * @var string
+     */
+    public $nextToken;
+
+    /**
+     * @var int
+     */
+    public $ownerId;
+
+    /**
+     * @example 20
+     *
+     * @var int
+     */
+    public $pageSize;
+
+    /**
+     * @example dysms
+     *
+     * @var string
+     */
+    public $prodCode;
+
+    /**
+     * @example cn-hangzhou
+     *
+     * @var string
+     */
+    public $regionId;
+
+    /**
+     * @example SMS_23423423
+     *
+     * @var string[]
+     */
+    public $resourceId;
+
+    /**
+     * @var string
+     */
+    public $resourceOwnerAccount;
+
+    /**
+     * @var int
+     */
+    public $resourceOwnerId;
+
+    /**
+     * @example TEMPLATE
+     *
+     * @var string
+     */
+    public $resourceType;
+
+    /**
+     * @var tag[]
+     */
+    public $tag;
+    protected $_name = [
+        'nextToken'            => 'NextToken',
+        'ownerId'              => 'OwnerId',
+        'pageSize'             => 'PageSize',
+        'prodCode'             => 'ProdCode',
+        'regionId'             => 'RegionId',
+        'resourceId'           => 'ResourceId',
+        'resourceOwnerAccount' => 'ResourceOwnerAccount',
+        'resourceOwnerId'      => 'ResourceOwnerId',
+        'resourceType'         => 'ResourceType',
+        'tag'                  => 'Tag',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->nextToken) {
+            $res['NextToken'] = $this->nextToken;
+        }
+        if (null !== $this->ownerId) {
+            $res['OwnerId'] = $this->ownerId;
+        }
+        if (null !== $this->pageSize) {
+            $res['PageSize'] = $this->pageSize;
+        }
+        if (null !== $this->prodCode) {
+            $res['ProdCode'] = $this->prodCode;
+        }
+        if (null !== $this->regionId) {
+            $res['RegionId'] = $this->regionId;
+        }
+        if (null !== $this->resourceId) {
+            $res['ResourceId'] = $this->resourceId;
+        }
+        if (null !== $this->resourceOwnerAccount) {
+            $res['ResourceOwnerAccount'] = $this->resourceOwnerAccount;
+        }
+        if (null !== $this->resourceOwnerId) {
+            $res['ResourceOwnerId'] = $this->resourceOwnerId;
+        }
+        if (null !== $this->resourceType) {
+            $res['ResourceType'] = $this->resourceType;
+        }
+        if (null !== $this->tag) {
+            $res['Tag'] = [];
+            if (null !== $this->tag && \is_array($this->tag)) {
+                $n = 0;
+                foreach ($this->tag as $item) {
+                    $res['Tag'][$n++] = null !== $item ? $item->toMap() : $item;
+                }
+            }
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return ListTagResourcesRequest
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['NextToken'])) {
+            $model->nextToken = $map['NextToken'];
+        }
+        if (isset($map['OwnerId'])) {
+            $model->ownerId = $map['OwnerId'];
+        }
+        if (isset($map['PageSize'])) {
+            $model->pageSize = $map['PageSize'];
+        }
+        if (isset($map['ProdCode'])) {
+            $model->prodCode = $map['ProdCode'];
+        }
+        if (isset($map['RegionId'])) {
+            $model->regionId = $map['RegionId'];
+        }
+        if (isset($map['ResourceId'])) {
+            if (!empty($map['ResourceId'])) {
+                $model->resourceId = $map['ResourceId'];
+            }
+        }
+        if (isset($map['ResourceOwnerAccount'])) {
+            $model->resourceOwnerAccount = $map['ResourceOwnerAccount'];
+        }
+        if (isset($map['ResourceOwnerId'])) {
+            $model->resourceOwnerId = $map['ResourceOwnerId'];
+        }
+        if (isset($map['ResourceType'])) {
+            $model->resourceType = $map['ResourceType'];
+        }
+        if (isset($map['Tag'])) {
+            if (!empty($map['Tag'])) {
+                $model->tag = [];
+                $n          = 0;
+                foreach ($map['Tag'] as $item) {
+                    $model->tag[$n++] = null !== $item ? tag::fromMap($item) : $item;
+                }
+            }
+        }
+
+        return $model;
+    }
+}

+ 63 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesRequest/tag.php

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

+ 74 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesResponse.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 ListTagResourcesResponse extends Model
+{
+    /**
+     * @var string[]
+     */
+    public $headers;
+
+    /**
+     * @var int
+     */
+    public $statusCode;
+
+    /**
+     * @var ListTagResourcesResponseBody
+     */
+    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 ListTagResourcesResponse
+     */
+    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 = ListTagResourcesResponseBody::fromMap($map['body']);
+        }
+
+        return $model;
+    }
+}

+ 90 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesResponseBody.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\ListTagResourcesResponseBody\tagResources;
+use AlibabaCloud\Tea\Model;
+
+class ListTagResourcesResponseBody extends Model
+{
+    /**
+     * @example OK
+     *
+     * @var string
+     */
+    public $code;
+
+    /**
+     * @example "23432453245"
+     *
+     * @var string
+     */
+    public $nextToken;
+
+    /**
+     * @example A90E4451-FED7-49D2-87C8-00700A8C4D0D
+     *
+     * @var string
+     */
+    public $requestId;
+
+    /**
+     * @var tagResources
+     */
+    public $tagResources;
+    protected $_name = [
+        'code'         => 'Code',
+        'nextToken'    => 'NextToken',
+        'requestId'    => 'RequestId',
+        'tagResources' => 'TagResources',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->code) {
+            $res['Code'] = $this->code;
+        }
+        if (null !== $this->nextToken) {
+            $res['NextToken'] = $this->nextToken;
+        }
+        if (null !== $this->requestId) {
+            $res['RequestId'] = $this->requestId;
+        }
+        if (null !== $this->tagResources) {
+            $res['TagResources'] = null !== $this->tagResources ? $this->tagResources->toMap() : null;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return ListTagResourcesResponseBody
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['Code'])) {
+            $model->code = $map['Code'];
+        }
+        if (isset($map['NextToken'])) {
+            $model->nextToken = $map['NextToken'];
+        }
+        if (isset($map['RequestId'])) {
+            $model->requestId = $map['RequestId'];
+        }
+        if (isset($map['TagResources'])) {
+            $model->tagResources = tagResources::fromMap($map['TagResources']);
+        }
+
+        return $model;
+    }
+}

+ 60 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesResponseBody/tagResources.php

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

+ 91 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/ListTagResourcesResponseBody/tagResources/tagResource.php

@@ -0,0 +1,91 @@
+<?php
+
+// This file is auto-generated, don't edit it. Thanks.
+
+namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models\ListTagResourcesResponseBody\tagResources;
+
+use AlibabaCloud\Tea\Model;
+
+class tagResource extends Model
+{
+    /**
+     * @example SMS_23423****
+     *
+     * @var string
+     */
+    public $resourceId;
+
+    /**
+     * @example ALIYUN::DYSMS::TEMPLATE
+     *
+     * @var string
+     */
+    public $resourceType;
+
+    /**
+     * @example TestKey
+     *
+     * @var string
+     */
+    public $tagKey;
+
+    /**
+     * @example TestValue
+     *
+     * @var string
+     */
+    public $tagValue;
+    protected $_name = [
+        'resourceId'   => 'ResourceId',
+        'resourceType' => 'ResourceType',
+        'tagKey'       => 'TagKey',
+        'tagValue'     => 'TagValue',
+    ];
+
+    public function validate()
+    {
+    }
+
+    public function toMap()
+    {
+        $res = [];
+        if (null !== $this->resourceId) {
+            $res['ResourceId'] = $this->resourceId;
+        }
+        if (null !== $this->resourceType) {
+            $res['ResourceType'] = $this->resourceType;
+        }
+        if (null !== $this->tagKey) {
+            $res['TagKey'] = $this->tagKey;
+        }
+        if (null !== $this->tagValue) {
+            $res['TagValue'] = $this->tagValue;
+        }
+
+        return $res;
+    }
+
+    /**
+     * @param array $map
+     *
+     * @return tagResource
+     */
+    public static function fromMap($map = [])
+    {
+        $model = new self();
+        if (isset($map['ResourceId'])) {
+            $model->resourceId = $map['ResourceId'];
+        }
+        if (isset($map['ResourceType'])) {
+            $model->resourceType = $map['ResourceType'];
+        }
+        if (isset($map['TagKey'])) {
+            $model->tagKey = $map['TagKey'];
+        }
+        if (isset($map['TagValue'])) {
+            $model->tagValue = $map['TagValue'];
+        }
+
+        return $model;
+    }
+}

+ 148 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsSignRequest.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\ModifySmsSignRequest\signFileList;
+use AlibabaCloud\Tea\Model;
+
+class ModifySmsSignRequest 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 ModifySmsSignRequest
+     */
+    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;
+    }
+}

+ 0 - 0
vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsSignRequest/signFileList.php


Някои файлове не бяха показани, защото твърде много файлове са промени