From 022a41a2dac2ac95ef51cf20c7ffc88f2748ffb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Sat, 18 Dec 2021 01:11:55 +0800 Subject: [PATCH] update vendor --- composer.json | 13 +- .../darabonba-openapi/src/OpenApiClient.php | 18 +- .../dysmsapi-20170525/ChangeLog.md | 6 + .../dysmsapi-20170525/composer.json | 2 +- .../dysmsapi-20170525/src/Dysmsapi.php | 169 +- .../src/Models/AddShortUrlRequest.php | 119 - .../src/Models/AddShortUrlResponse.php | 61 - .../src/Models/AddShortUrlResponseBody.php | 84 - .../Models/AddShortUrlResponseBody/data.php | 71 - .../src/Models/AddSmsSignResponseBody.php | 20 +- .../src/Models/AddSmsTemplateResponseBody.php | 24 +- .../Models/CreateShortParamResponseBody.php | 84 - .../CreateShortParamResponseBody/data.php | 71 - .../src/Models/DeleteShortUrlRequest.php | 95 - .../src/Models/DeleteShortUrlResponse.php | 61 - .../src/Models/DeleteShortUrlResponseBody.php | 71 - .../src/Models/DeleteSmsSignResponseBody.php | 20 +- .../Models/DeleteSmsTemplateResponseBody.php | 24 +- .../src/Models/ModifySmsSignResponseBody.php | 20 +- .../Models/ModifySmsTemplateResponseBody.php | 24 +- .../Models/QuerySendDetailsResponseBody.php | 24 +- .../src/Models/QueryShortUrlRequest.php | 95 - .../src/Models/QueryShortUrlResponse.php | 61 - .../src/Models/QueryShortUrlResponseBody.php | 84 - .../Models/QueryShortUrlResponseBody/data.php | 131 - .../src/Models/QuerySmsSignResponseBody.php | 24 +- .../Models/QuerySmsTemplateResponseBody.php | 82 +- .../src/Models/SendBatchSmsRequest.php | 8 +- .../src/Models/SendBatchSmsResponseBody.php | 36 +- ...uest.php => SendMessageToGlobeRequest.php} | 52 +- ...nse.php => SendMessageToGlobeResponse.php} | 8 +- .../Models/SendMessageToGlobeResponseBody.php | 120 + .../numberDetail.php | 71 + .../src/Models/SendSmsResponseBody.php | 36 +- .../openapi-util/src/OpenApiUtilClient.php | 16 +- vendor/aliyuncs/oss-sdk-php/CHANGELOG.md | 3 + vendor/aliyuncs/oss-sdk-php/samples/Image.php | 2 +- .../oss-sdk-php/samples/MultipartUpload.php | 2 +- .../oss-sdk-php/samples/Signature.php | 2 +- .../oss-sdk-php/src/OSS/Core/OssUtil.php | 4 +- .../oss-sdk-php/src/OSS/Model/ObjectInfo.php | 33 +- .../src/OSS/Model/ObjectVersionInfo.php | 31 +- .../oss-sdk-php/src/OSS/Model/PartInfo.php | 17 +- .../oss-sdk-php/src/OSS/OssClient.php | 11 +- .../OSS/Result/ListObjectVersionsResult.php | 2 +- .../src/OSS/Result/ListObjectsResult.php | 2 +- .../src/OSS/Result/ListPartsResult.php | 2 +- vendor/composer/ClassLoader.php | 117 +- vendor/composer/InstalledVersions.php | 1195 ++----- vendor/composer/autoload_classmap.php | 76 +- vendor/composer/autoload_files.php | 42 +- vendor/composer/autoload_psr4.php | 2 +- vendor/composer/autoload_static.php | 120 +- vendor/composer/installed.json | 281 +- vendor/composer/installed.php | 1183 ++++--- vendor/composer/platform_check.php | 4 +- vendor/league/flysystem/composer.json | 1 - .../flysystem/src/Adapter/AbstractAdapter.php | 2 +- .../src/Adapter/AbstractFtpAdapter.php | 2 +- vendor/league/flysystem/src/Adapter/Ftp.php | 19 +- .../flysystem/src/CorruptedPathDetected.php | 17 + vendor/league/flysystem/src/Filesystem.php | 13 +- vendor/league/flysystem/src/MountManager.php | 2 - .../flysystem/src/Plugin/GetWithMetadata.php | 4 +- .../league/flysystem/src/Plugin/ListPaths.php | 2 +- .../league/flysystem/src/Plugin/ListWith.php | 6 +- vendor/league/flysystem/src/Util.php | 19 +- .../league/mime-type-detection/CHANGELOG.md | 12 + .../league/mime-type-detection/composer.json | 3 +- .../src/GeneratedExtensionToMimeTypeMap.php | 25 +- .../src/OverridingExtensionToMimeTypeMap.php | 30 + vendor/myclabs/php-enum/composer.json | 2 +- vendor/myclabs/php-enum/src/Enum.php | 15 +- .../Obs/Internal/Common/Model.php | 31 +- .../Obs/Internal/Common/SdkCurlFactory.php | 31 +- .../Obs/Internal/Common/SdkStreamHandler.php | 31 +- .../Obs/Internal/GetResponseTrait.php | 87 +- .../Internal/Resource/OBSRequestResource.php | 131 + .../Internal/Resource/V2RequestResource.php | 130 + .../Obs/Internal/SendRequestTrait.php | 22 +- .../Internal/Signature/AbstractSignature.php | 19 +- .../Internal/Signature/DefaultSignature.php | 20 +- .../Obs/Internal/Signature/V4Signature.php | 4 +- vendor/obs/esdk-obs-php/Obs/ObsClient.php | 18 +- vendor/obs/esdk-obs-php/composer.json | 2 +- .../huaweicloud-sdk-php-obs-3.21.6.zip | Bin 0 -> 105298 bytes vendor/psr/container/composer.json | 2 +- .../src/ContainerExceptionInterface.php | 4 +- .../cos-sdk-v5/.github/workflows/install.yml | 29 + vendor/qcloud/cos-sdk-v5/.travis.yml | 17 - vendor/qcloud/cos-sdk-v5/CHANGELOG.md | 121 +- vendor/qcloud/cos-sdk-v5/README.md | 74 +- vendor/qcloud/cos-sdk-v5/composer.json | 32 +- vendor/qcloud/cos-sdk-v5/phpunit.xml | 15 - .../sample/abortMultipartUpload.php | 8 +- .../qcloud/cos-sdk-v5/sample/appendObject.php | 37 + .../cos-sdk-v5/sample/blindWatermark.php | 8 +- .../cos-sdk-v5/sample/catchException.php | 8 +- .../cos-sdk-v5/sample/ciTransformation.php | 8 +- .../sample/completeMultipartUpload.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/copy.php | 10 +- .../qcloud/cos-sdk-v5/sample/copyObject.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/cosClient.php | 10 +- .../qcloud/cos-sdk-v5/sample/createBucket.php | 8 +- .../sample/createDocProcessJobs.php | 50 + .../qcloud/cos-sdk-v5/sample/createFolder.php | 8 +- .../sample/createMediaConcatJobs.php | 96 + .../sample/createMediaSnapshotJobs.php | 71 + .../sample/createMediaTranscodeJobs.php | 91 + .../sample/createMultipartUpload.php | 8 +- .../qcloud/cos-sdk-v5/sample/deleteBucket.php | 8 +- .../cos-sdk-v5/sample/deleteBucketCors.php | 8 +- .../cos-sdk-v5/sample/deleteBucketDomain.php | 8 +- .../cos-sdk-v5/sample/deleteBucketGuetzli.php | 8 +- .../sample/deleteBucketImageStyle.php | 8 +- .../sample/deleteBucketLifecycle.php | 8 +- .../cos-sdk-v5/sample/deleteBucketTagging.php | 8 +- .../cos-sdk-v5/sample/deleteBucketWebsite.php | 8 +- .../cos-sdk-v5/sample/deleteBuckets.php | 52 + .../qcloud/cos-sdk-v5/sample/deleteFolder.php | 10 +- .../qcloud/cos-sdk-v5/sample/deleteObject.php | 8 +- .../cos-sdk-v5/sample/deleteObjectTagging.php | 25 + .../qcloud/cos-sdk-v5/sample/detectAudio.php | 53 + .../cos-sdk-v5/sample/detectDocument.php | 49 + .../qcloud/cos-sdk-v5/sample/detectImage.php | 48 + .../qcloud/cos-sdk-v5/sample/detectImages.php | 44 + .../qcloud/cos-sdk-v5/sample/detectLable.php | 8 +- .../qcloud/cos-sdk-v5/sample/detectText.php | 52 + .../qcloud/cos-sdk-v5/sample/detectVideo.php | 63 + .../cos-sdk-v5/sample/doesBucketExist.php | 25 + .../cos-sdk-v5/sample/doesObjectExist.php | 26 + vendor/qcloud/cos-sdk-v5/sample/download.php | 12 +- .../cos-sdk-v5/sample/downloadFolder.php | 13 +- .../cos-sdk-v5/sample/getBlindWatermark.php | 8 +- .../cos-sdk-v5/sample/getBucketAccelerate.php | 25 + .../qcloud/cos-sdk-v5/sample/getBucketAcl.php | 8 +- .../cos-sdk-v5/sample/getBucketCors.php | 8 +- .../cos-sdk-v5/sample/getBucketDomain.php | 8 +- .../cos-sdk-v5/sample/getBucketGuetzli.php | 8 +- .../cos-sdk-v5/sample/getBucketImageStyle.php | 8 +- .../cos-sdk-v5/sample/getBucketInventory.php | 8 +- .../cos-sdk-v5/sample/getBucketLifecycle.php | 8 +- .../cos-sdk-v5/sample/getBucketLogging.php | 8 +- .../cos-sdk-v5/sample/getBucketReferer.php | 25 + .../cos-sdk-v5/sample/getBucketTagging.php | 8 +- .../cos-sdk-v5/sample/getBucketWebsite.php | 8 +- .../sample/getDescribeDocProcessJob.php | 26 + .../sample/getDescribeDocProcessJobs.php | 33 + .../sample/getDescribeDocProcessQueues.php | 25 + .../sample/getDetectAudioResult.php | 26 + .../sample/getDetectDocumentResult.php | 26 + .../cos-sdk-v5/sample/getDetectTextResult.php | 26 + .../sample/getDetectVideoResult.php | 26 + .../qcloud/cos-sdk-v5/sample/getMediaInfo.php | 29 + vendor/qcloud/cos-sdk-v5/sample/getObject.php | 8 +- .../getObjectSensitiveContentRecognition.php | 53 + .../cos-sdk-v5/sample/getObjectTagging.php | 25 + .../qcloud/cos-sdk-v5/sample/getObjectUrl.php | 10 +- .../sample/getObjectWithoutSign.php | 27 + .../cos-sdk-v5/sample/getPresignedUrl.php | 20 +- .../qcloud/cos-sdk-v5/sample/getSnapshot.php | 41 + .../qcloud/cos-sdk-v5/sample/headBucket.php | 9 +- .../qcloud/cos-sdk-v5/sample/headObject.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/imageAve.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/imageExif.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/imageInfo.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/imageMogr.php | 8 +- .../qcloud/cos-sdk-v5/sample/imageProcess.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/imageView.php | 8 +- .../cos-sdk-v5/sample/imageWatermark.php | 8 +- .../{listBucket.php => listBuckets.php} | 6 +- .../sample/listMultipartUploads.php | 8 +- .../qcloud/cos-sdk-v5/sample/listObjects.php | 18 +- vendor/qcloud/cos-sdk-v5/sample/listParts.php | 8 +- .../cos-sdk-v5/sample/picOperations.php | 8 +- .../cos-sdk-v5/sample/putBlindWatermark.php | 8 +- .../cos-sdk-v5/sample/putBucketAccelerate.php | 26 + .../qcloud/cos-sdk-v5/sample/putBucketAcl.php | 9 +- .../cos-sdk-v5/sample/putBucketCors.php | 8 +- .../cos-sdk-v5/sample/putBucketDomain.php | 8 +- .../cos-sdk-v5/sample/putBucketGuetzli.php | 8 +- .../cos-sdk-v5/sample/putBucketImageStyle.php | 8 +- .../cos-sdk-v5/sample/putBucketInventory.php | 8 +- .../cos-sdk-v5/sample/putBucketLifecycle.php | 8 +- .../cos-sdk-v5/sample/putBucketLogging.php | 10 +- .../cos-sdk-v5/sample/putBucketReferer.php | 35 + .../cos-sdk-v5/sample/putBucketTagging.php | 8 +- .../cos-sdk-v5/sample/putBucketWebsite.php | 8 +- .../cos-sdk-v5/sample/putImageStyle.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/putObject.php | 18 +- .../cos-sdk-v5/sample/putObjectTagging.php | 33 + vendor/qcloud/cos-sdk-v5/sample/putQrcode.php | 8 +- vendor/qcloud/cos-sdk-v5/sample/qrcode.php | 8 +- .../cos-sdk-v5/sample/qrcodeGenerate.php | 8 +- .../cos-sdk-v5/sample/restoreObject.php | 8 +- .../cos-sdk-v5/sample/selectObjectContent.php | 18 +- .../cos-sdk-v5/sample/textWatermark.php | 8 +- .../qcloud/cos-sdk-v5/sample/trafficLimit.php | 40 + vendor/qcloud/cos-sdk-v5/sample/upload.php | 12 +- .../qcloud/cos-sdk-v5/sample/uploadFolder.php | 11 +- .../qcloud/cos-sdk-v5/sample/uploadPart.php | 8 +- .../src/{Qcloud/Cos => }/Client.php | 304 +- .../Cos => }/CommandToRequestTransformer.php | 56 +- vendor/qcloud/cos-sdk-v5/src/Common.php | 69 + .../cos-sdk-v5/src/{Qcloud/Cos => }/Copy.php | 1 - vendor/qcloud/cos-sdk-v5/src/Descriptions.php | 3025 +++++++++++++++++ .../Cos => }/Exception/CosException.php | 2 - .../Exception/ServiceResponseException.php | 2 +- .../{Qcloud/Cos => }/ExceptionMiddleware.php | 1 - .../src/{Qcloud/Cos => }/ExceptionParser.php | 0 .../BlindWatermarkTemplate.php | 0 .../CIParamTransformation.php | 0 .../ImageParamTemplate/ImageMogrTemplate.php | 0 .../ImageQrcodeTemplate.php | 0 .../ImageParamTemplate/ImageStyleTemplate.php | 0 .../ImageParamTemplate/ImageTemplate.php | 0 .../ImageParamTemplate/ImageViewTemplate.php | 0 .../ImageWatermarkTemplate.php | 0 .../PicOperationsTransformation.php | 0 .../TextWatermarkTemplate.php | 0 .../src/{Qcloud/Cos => }/MultipartUpload.php | 17 +- .../cos-sdk-v5/src/Qcloud/Cos/Common.php | 55 - .../src/{Qcloud/Cos => }/RangeDownload.php | 18 +- .../{Qcloud/Cos => }/Request/BodyLocation.php | 2 +- .../{Qcloud/Cos => }/ResultTransformer.php | 33 +- .../src/{Qcloud/Cos => }/Serializer.php | 4 +- .../src/{Qcloud/Cos => }/Service.php | 1473 +++++++- .../src/{Qcloud/Cos => }/Signature.php | 49 +- .../{Qcloud/Cos => }/SignatureMiddleware.php | 9 +- .../php-sdk/.github/workflows/test-ci.yml | 44 + vendor/qiniu/php-sdk/.travis.yml | 29 - vendor/qiniu/php-sdk/CHANGELOG.md | 6 + vendor/qiniu/php-sdk/composer.json | 18 +- .../php-sdk/examples/upload_multi_demos.php | 2 +- vendor/qiniu/php-sdk/src/Qiniu/Config.php | 2 +- .../qiniu/php-sdk/src/Qiniu/Http/Client.php | 2 +- .../qiniu/php-sdk/src/Qiniu/Http/Response.php | 10 + .../src/Qiniu/Storage/ResumeUploader.php | 265 +- .../src/Qiniu/Storage/UploadManager.php | 18 +- vendor/qiniu/php-sdk/src/Qiniu/functions.php | 17 + vendor/symfony/polyfill-mbstring/Mbstring.php | 11 +- vendor/symfony/polyfill-php80/README.md | 2 +- vendor/symfony/polyfill-php80/bootstrap.php | 6 +- .../symfony/var-dumper/Caster/ClassStub.php | 4 +- .../symfony/var-dumper/Caster/DateCaster.php | 5 +- .../var-dumper/Caster/ExceptionCaster.php | 34 +- vendor/symfony/var-dumper/Caster/LinkStub.php | 10 +- .../var-dumper/Caster/MemcachedCaster.php | 2 +- .../var-dumper/Caster/ReflectionCaster.php | 8 +- .../var-dumper/Caster/ResourceCaster.php | 2 +- .../symfony/var-dumper/Caster/SplCaster.php | 2 +- .../var-dumper/Caster/XmlReaderCaster.php | 23 +- .../var-dumper/Cloner/AbstractCloner.php | 2 +- vendor/symfony/var-dumper/Cloner/Data.php | 15 + .../symfony/var-dumper/Cloner/VarCloner.php | 47 +- .../Command/Descriptor/CliDescriptor.php | 2 +- .../Command/Descriptor/HtmlDescriptor.php | 2 +- .../var-dumper/Dumper/AbstractDumper.php | 2 +- .../symfony/var-dumper/Dumper/CliDumper.php | 6 +- .../ContextProvider/SourceContextProvider.php | 4 +- .../symfony/var-dumper/Dumper/HtmlDumper.php | 6 +- vendor/symfony/var-dumper/README.md | 2 +- .../symfony/var-dumper/Server/Connection.php | 4 +- .../symfony/var-dumper/Server/DumpServer.php | 2 +- vendor/symfony/var-dumper/composer.json | 2 +- vendor/topthink/framework/.travis.yml | 2 +- vendor/topthink/framework/composer.json | 4 +- vendor/topthink/framework/src/think/App.php | 2 +- vendor/topthink/framework/src/think/Event.php | 9 + .../topthink/framework/src/think/Request.php | 14 +- .../src/think/console/command/RunServer.php | 2 +- .../framework/src/think/facade/Route.php | 2 +- .../src/think/service/ModelService.php | 6 + .../topthink/think-helper/src/Collection.php | 20 +- vendor/topthink/think-orm/src/DbManager.php | 2 +- vendor/topthink/think-orm/src/Model.php | 6 +- vendor/topthink/think-orm/src/Paginator.php | 2 +- .../topthink/think-orm/src/db/BaseQuery.php | 33 +- vendor/topthink/think-orm/src/db/Builder.php | 6 +- .../think-orm/src/db/PDOConnection.php | 126 +- .../src/db/concern/ResultOperation.php | 19 +- .../src/db/concern/TimeFieldQuery.php | 2 +- .../think-orm/src/db/concern/Transaction.php | 85 +- .../think-orm/src/db/concern/WhereQuery.php | 2 +- .../think-orm/src/db/connector/Mongo.php | 37 +- .../think-orm/src/db/connector/Mysql.php | 8 +- .../src/db/exception/DbEventException.php | 19 + .../topthink/think-orm/src/model/Relation.php | 76 +- .../think-orm/src/model/concern/Attribute.php | 4 +- .../src/model/concern/ModelEvent.php | 2 +- .../src/model/concern/SoftDelete.php | 12 +- .../think-orm/src/model/concern/TimeStamp.php | 15 + .../think-orm/src/model/concern/Virtual.php | 90 + .../src/model/relation/BelongsTo.php | 11 +- .../src/model/relation/BelongsToMany.php | 7 +- .../think-orm/src/model/relation/HasMany.php | 9 +- .../src/model/relation/HasManyThrough.php | 12 +- .../think-orm/src/model/relation/HasOne.php | 11 +- .../src/model/relation/HasOneThrough.php | 6 +- .../think-orm/src/model/relation/MorphOne.php | 6 +- .../src/model/relation/MorphToMany.php | 7 +- .../think-orm/src/model/relation/OneToOne.php | 2 + 302 files changed, 10061 insertions(+), 4374 deletions(-) delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody/data.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlRequest.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponse.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody.php delete mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody/data.php rename vendor/alibabacloud/dysmsapi-20170525/src/Models/{CreateShortParamRequest.php => SendMessageToGlobeRequest.php} (60%) rename vendor/alibabacloud/dysmsapi-20170525/src/Models/{CreateShortParamResponse.php => SendMessageToGlobeResponse.php} (83%) create mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody.php create mode 100644 vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody/numberDetail.php create mode 100644 vendor/league/flysystem/src/CorruptedPathDetected.php create mode 100644 vendor/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php create mode 100644 vendor/obs/esdk-obs-php/release/huaweicloud-sdk-php-obs-3.21.6.zip create mode 100644 vendor/qcloud/cos-sdk-v5/.github/workflows/install.yml delete mode 100644 vendor/qcloud/cos-sdk-v5/.travis.yml delete mode 100644 vendor/qcloud/cos-sdk-v5/phpunit.xml create mode 100644 vendor/qcloud/cos-sdk-v5/sample/appendObject.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/createDocProcessJobs.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/createMediaConcatJobs.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/createMediaSnapshotJobs.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/createMediaTranscodeJobs.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/deleteBuckets.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/deleteObjectTagging.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/detectAudio.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/detectDocument.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/detectImage.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/detectImages.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/detectText.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/detectVideo.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/doesBucketExist.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/doesObjectExist.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getBucketAccelerate.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getBucketReferer.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessJob.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessJobs.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessQueues.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getDetectAudioResult.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getDetectDocumentResult.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getDetectTextResult.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getDetectVideoResult.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getMediaInfo.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getObjectSensitiveContentRecognition.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getObjectTagging.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getObjectWithoutSign.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/getSnapshot.php rename vendor/qcloud/cos-sdk-v5/sample/{listBucket.php => listBuckets.php} (50%) create mode 100644 vendor/qcloud/cos-sdk-v5/sample/putBucketAccelerate.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/putBucketReferer.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/putObjectTagging.php create mode 100644 vendor/qcloud/cos-sdk-v5/sample/trafficLimit.php rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/Client.php (52%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/CommandToRequestTransformer.php (74%) create mode 100644 vendor/qcloud/cos-sdk-v5/src/Common.php rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/Copy.php (99%) create mode 100644 vendor/qcloud/cos-sdk-v5/src/Descriptions.php rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/Exception/CosException.php (64%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/Exception/ServiceResponseException.php (99%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ExceptionMiddleware.php (99%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ExceptionParser.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/BlindWatermarkTemplate.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/CIParamTransformation.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/ImageMogrTemplate.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/ImageQrcodeTemplate.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/ImageStyleTemplate.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/ImageTemplate.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/ImageViewTemplate.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/ImageWatermarkTemplate.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/PicOperationsTransformation.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ImageParamTemplate/TextWatermarkTemplate.php (100%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/MultipartUpload.php (93%) delete mode 100644 vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Common.php rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/RangeDownload.php (92%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/Request/BodyLocation.php (95%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/ResultTransformer.php (88%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/Serializer.php (98%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/Service.php (79%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/Signature.php (76%) rename vendor/qcloud/cos-sdk-v5/src/{Qcloud/Cos => }/SignatureMiddleware.php (65%) create mode 100644 vendor/qiniu/php-sdk/.github/workflows/test-ci.yml delete mode 100644 vendor/qiniu/php-sdk/.travis.yml create mode 100644 vendor/topthink/think-orm/src/db/exception/DbEventException.php create mode 100644 vendor/topthink/think-orm/src/model/concern/Virtual.php diff --git a/composer.json b/composer.json index 467a721..5cd6627 100644 --- a/composer.json +++ b/composer.json @@ -1,11 +1,9 @@ { - "name": "liguangchun/think-library", - "description": "ThinkPhp扩展包", + "name": "dtapps/think-library", + "description": "ThinkPhP扩展包", "keywords": [ - "dtapp", - "liguangchun", + "dtapps", "think-library", - "thinkLibrary", "think", "thinkphp", "library" @@ -16,7 +14,7 @@ "authors": [ { "name": "Chaim", - "email": "gc@dtapp.net", + "email": "li.gc@icoud.com", "homepage": "https://api.dtapp.net" } ], @@ -40,7 +38,8 @@ "qcloud/cos-sdk-v5": "^2.0", "qiniu/php-sdk": "^7.2", "upyun/sdk": "^3.4", - "phpoffice/phpspreadsheet": "1.17.1" + "phpoffice/phpspreadsheet": "1.17.1", + "alibabacloud/dysmsapi-20170525": "^1.0" }, "require-dev": { "symfony/var-dumper": "^4.2" diff --git a/vendor/alibabacloud/darabonba-openapi/src/OpenApiClient.php b/vendor/alibabacloud/darabonba-openapi/src/OpenApiClient.php index e10b81a..75c2a44 100644 --- a/vendor/alibabacloud/darabonba-openapi/src/OpenApiClient.php +++ b/vendor/alibabacloud/darabonba-openapi/src/OpenApiClient.php @@ -97,6 +97,7 @@ class OpenApiClient $this->_credential = $config->credential; } $this->_endpoint = $config->endpoint; + $this->_endpointType = $config->endpointType; $this->_protocol = $config->protocol; $this->_regionId = $config->regionId; $this->_userAgent = $config->userAgent; @@ -219,12 +220,13 @@ class OpenApiClient $_lastRequest = $_request; $_response = Tea::send($_request, $_runtime); if (Utils::is4xx($_response->statusCode) || Utils::is5xx($_response->statusCode)) { - $_res = Utils::readAsJSON($_response->body); - $err = Utils::assertAsMap($_res); + $_res = Utils::readAsJSON($_response->body); + $err = Utils::assertAsMap($_res); + $requestId = self::defaultAny(@$err['RequestId'], @$err['requestId']); throw new TeaError([ 'code' => '' . (string) (self::defaultAny(@$err['Code'], @$err['code'])) . '', - 'message' => 'code: ' . (string) ($_response->statusCode) . ', ' . (string) (self::defaultAny(@$err['Message'], @$err['message'])) . ' request id: ' . (string) (self::defaultAny(@$err['RequestId'], @$err['requestId'])) . '', + 'message' => 'code: ' . (string) ($_response->statusCode) . ', ' . (string) (self::defaultAny(@$err['Message'], @$err['message'])) . ' request id: ' . (string) ($requestId) . '', 'data' => $err, ]); } @@ -386,12 +388,14 @@ class OpenApiClient ]; } if (Utils::is4xx($_response->statusCode) || Utils::is5xx($_response->statusCode)) { - $_res = Utils::readAsJSON($_response->body); - $err = Utils::assertAsMap($_res); + $_res = Utils::readAsJSON($_response->body); + $err = Utils::assertAsMap($_res); + $requestId = self::defaultAny(@$err['RequestId'], @$err['requestId']); + $requestId = self::defaultAny($requestId, @$err['requestid']); throw new TeaError([ 'code' => '' . (string) (self::defaultAny(@$err['Code'], @$err['code'])) . '', - 'message' => 'code: ' . (string) ($_response->statusCode) . ', ' . (string) (self::defaultAny(@$err['Message'], @$err['message'])) . ' request id: ' . (string) (self::defaultAny(@$err['RequestId'], @$err['requestId'])) . '', + 'message' => 'code: ' . (string) ($_response->statusCode) . ', ' . (string) (self::defaultAny(@$err['Message'], @$err['message'])) . ' request id: ' . (string) ($requestId) . '', 'data' => $err, ]); } @@ -678,7 +682,7 @@ class OpenApiClient $_request = new Request(); $_request->protocol = Utils::defaultString($this->_protocol, $params->protocol); $_request->method = $params->method; - $_request->pathname = OpenApiUtilClient::getEncodePath($params->pathname); + $_request->pathname = $params->pathname; $_request->query = $request->query; // endpoint is setted in product client $_request->headers = Tea::merge([ diff --git a/vendor/alibabacloud/dysmsapi-20170525/ChangeLog.md b/vendor/alibabacloud/dysmsapi-20170525/ChangeLog.md index 0ea88da..d3482f3 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/ChangeLog.md +++ b/vendor/alibabacloud/dysmsapi-20170525/ChangeLog.md @@ -1,3 +1,9 @@ +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. diff --git a/vendor/alibabacloud/dysmsapi-20170525/composer.json b/vendor/alibabacloud/dysmsapi-20170525/composer.json index d8805cc..13ab482 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/composer.json +++ b/vendor/alibabacloud/dysmsapi-20170525/composer.json @@ -12,7 +12,7 @@ "require": { "php": ">5.5", "alibabacloud/tea-utils": "^0.2.0", - "alibabacloud/darabonba-openapi": "^0.1.0", + "alibabacloud/darabonba-openapi": "^0.1.8", "alibabacloud/endpoint-util": "^0.1.0" }, "autoload": { diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php b/vendor/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php index b0b495e..c0822f3 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php @@ -5,16 +5,10 @@ namespace AlibabaCloud\SDK\Dysmsapi\V20170525; use AlibabaCloud\Endpoint\Endpoint; -use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddShortUrlRequest; -use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddShortUrlResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddSmsSignRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddSmsSignResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddSmsTemplateRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\AddSmsTemplateResponse; -use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CreateShortParamRequest; -use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\CreateShortParamResponse; -use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\DeleteShortUrlRequest; -use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\DeleteShortUrlResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\DeleteSmsSignRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\DeleteSmsSignResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\DeleteSmsTemplateRequest; @@ -25,14 +19,14 @@ use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\ModifySmsTemplateRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\ModifySmsTemplateResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QuerySendDetailsRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QuerySendDetailsResponse; -use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QueryShortUrlRequest; -use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QueryShortUrlResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QuerySmsSignRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QuerySmsSignResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QuerySmsTemplateRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\QuerySmsTemplateResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendBatchSmsRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendBatchSmsResponse; +use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendMessageToGlobeRequest; +use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendMessageToGlobeResponse; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest; use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsResponse; use AlibabaCloud\Tea\Utils\Utils; @@ -47,21 +41,10 @@ class Dysmsapi extends OpenApiClient parent::__construct($config); $this->_endpointRule = 'central'; $this->_endpointMap = [ - 'ap-northeast-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'ap-northeast-2-pop' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'ap-south-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'ap-southeast-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'ap-southeast-3' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'ap-southeast-5' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'cn-beijing' => 'dysmsapi-proxy.cn-beijing.aliyuncs.com', - 'eu-central-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'eu-west-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'eu-west-1-oxs' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'me-east-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'rus-west-1-pop' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'us-east-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - 'us-west-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', + 'ap-southeast-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', + 'ap-southeast-5' => 'dysmsapi-xman.ap-southeast-5.aliyuncs.com', + 'cn-beijing' => 'dysmsapi-proxy.cn-beijing.aliyuncs.com', + 'cn-hongkong' => 'dysmsapi-xman.cn-hongkong.aliyuncs.com', ]; $this->checkConfig($config); $this->_endpoint = $this->getEndpoint('dysmsapi', $this->_regionId, $this->_endpointRule, $this->_network, $this->_suffix, $this->_endpointMap, $this->_endpoint); @@ -90,34 +73,6 @@ class Dysmsapi extends OpenApiClient return Endpoint::getEndpointRules($productId, $regionId, $endpointRule, $network, $suffix); } - /** - * @param AddShortUrlRequest $request - * @param RuntimeOptions $runtime - * - * @return AddShortUrlResponse - */ - public function addShortUrlWithOptions($request, $runtime) - { - Utils::validateModel($request); - $req = new OpenApiRequest([ - 'body' => Utils::toMap($request), - ]); - - return AddShortUrlResponse::fromMap($this->doRPCRequest('AddShortUrl', '2017-05-25', 'HTTPS', 'POST', 'AK', 'json', $req, $runtime)); - } - - /** - * @param AddShortUrlRequest $request - * - * @return AddShortUrlResponse - */ - public function addShortUrl($request) - { - $runtime = new RuntimeOptions([]); - - return $this->addShortUrlWithOptions($request, $runtime); - } - /** * @param AddSmsSignRequest $request * @param RuntimeOptions $runtime @@ -174,62 +129,6 @@ class Dysmsapi extends OpenApiClient return $this->addSmsTemplateWithOptions($request, $runtime); } - /** - * @param CreateShortParamRequest $request - * @param RuntimeOptions $runtime - * - * @return CreateShortParamResponse - */ - public function createShortParamWithOptions($request, $runtime) - { - Utils::validateModel($request); - $req = new OpenApiRequest([ - 'body' => Utils::toMap($request), - ]); - - return CreateShortParamResponse::fromMap($this->doRPCRequest('CreateShortParam', '2017-05-25', 'HTTPS', 'POST', 'AK', 'json', $req, $runtime)); - } - - /** - * @param CreateShortParamRequest $request - * - * @return CreateShortParamResponse - */ - public function createShortParam($request) - { - $runtime = new RuntimeOptions([]); - - return $this->createShortParamWithOptions($request, $runtime); - } - - /** - * @param DeleteShortUrlRequest $request - * @param RuntimeOptions $runtime - * - * @return DeleteShortUrlResponse - */ - public function deleteShortUrlWithOptions($request, $runtime) - { - Utils::validateModel($request); - $req = new OpenApiRequest([ - 'body' => Utils::toMap($request), - ]); - - return DeleteShortUrlResponse::fromMap($this->doRPCRequest('DeleteShortUrl', '2017-05-25', 'HTTPS', 'POST', 'AK', 'json', $req, $runtime)); - } - - /** - * @param DeleteShortUrlRequest $request - * - * @return DeleteShortUrlResponse - */ - public function deleteShortUrl($request) - { - $runtime = new RuntimeOptions([]); - - return $this->deleteShortUrlWithOptions($request, $runtime); - } - /** * @param DeleteSmsSignRequest $request * @param RuntimeOptions $runtime @@ -370,34 +269,6 @@ class Dysmsapi extends OpenApiClient return $this->querySendDetailsWithOptions($request, $runtime); } - /** - * @param QueryShortUrlRequest $request - * @param RuntimeOptions $runtime - * - * @return QueryShortUrlResponse - */ - public function queryShortUrlWithOptions($request, $runtime) - { - Utils::validateModel($request); - $req = new OpenApiRequest([ - 'body' => Utils::toMap($request), - ]); - - return QueryShortUrlResponse::fromMap($this->doRPCRequest('QueryShortUrl', '2017-05-25', 'HTTPS', 'POST', 'AK', 'json', $req, $runtime)); - } - - /** - * @param QueryShortUrlRequest $request - * - * @return QueryShortUrlResponse - */ - public function queryShortUrl($request) - { - $runtime = new RuntimeOptions([]); - - return $this->queryShortUrlWithOptions($request, $runtime); - } - /** * @param QuerySmsSignRequest $request * @param RuntimeOptions $runtime @@ -482,6 +353,34 @@ class Dysmsapi extends OpenApiClient return $this->sendBatchSmsWithOptions($request, $runtime); } + /** + * @param SendMessageToGlobeRequest $request + * @param RuntimeOptions $runtime + * + * @return SendMessageToGlobeResponse + */ + public function sendMessageToGlobeWithOptions($request, $runtime) + { + Utils::validateModel($request); + $req = new OpenApiRequest([ + 'body' => Utils::toMap($request), + ]); + + return SendMessageToGlobeResponse::fromMap($this->doRPCRequest('SendMessageToGlobe', '2017-05-25', 'HTTPS', 'POST', 'AK', 'json', $req, $runtime)); + } + + /** + * @param SendMessageToGlobeRequest $request + * + * @return SendMessageToGlobeResponse + */ + public function sendMessageToGlobe($request) + { + $runtime = new RuntimeOptions([]); + + return $this->sendMessageToGlobeWithOptions($request, $runtime); + } + /** * @param SendSmsRequest $request * @param RuntimeOptions $runtime diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php deleted file mode 100644 index 442dcea..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php +++ /dev/null @@ -1,119 +0,0 @@ - 'OwnerId', - 'resourceOwnerAccount' => 'ResourceOwnerAccount', - 'resourceOwnerId' => 'ResourceOwnerId', - 'sourceUrl' => 'SourceUrl', - 'shortUrlName' => 'ShortUrlName', - 'effectiveDays' => 'EffectiveDays', - 'prodCode' => 'ProdCode', - ]; - - 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; - } - if (null !== $this->shortUrlName) { - $res['ShortUrlName'] = $this->shortUrlName; - } - if (null !== $this->effectiveDays) { - $res['EffectiveDays'] = $this->effectiveDays; - } - if (null !== $this->prodCode) { - $res['ProdCode'] = $this->prodCode; - } - - return $res; - } - - /** - * @param array $map - * - * @return AddShortUrlRequest - */ - 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']; - } - if (isset($map['ShortUrlName'])) { - $model->shortUrlName = $map['ShortUrlName']; - } - if (isset($map['EffectiveDays'])) { - $model->effectiveDays = $map['EffectiveDays']; - } - if (isset($map['ProdCode'])) { - $model->prodCode = $map['ProdCode']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php deleted file mode 100644 index e3eb223..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php +++ /dev/null @@ -1,61 +0,0 @@ - 'headers', - 'body' => 'body', - ]; - - public function validate() - { - Model::validateRequired('headers', $this->headers, true); - Model::validateRequired('body', $this->body, true); - } - - public function toMap() - { - $res = []; - if (null !== $this->headers) { - $res['headers'] = $this->headers; - } - 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['body'])) { - $model->body = AddShortUrlResponseBody::fromMap($map['body']); - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php deleted file mode 100644 index 86040bb..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php +++ /dev/null @@ -1,84 +0,0 @@ - 'Message', - 'requestId' => 'RequestId', - 'data' => 'Data', - 'code' => 'Code', - ]; - - public function validate() - { - } - - public function toMap() - { - $res = []; - if (null !== $this->message) { - $res['Message'] = $this->message; - } - if (null !== $this->requestId) { - $res['RequestId'] = $this->requestId; - } - if (null !== $this->data) { - $res['Data'] = null !== $this->data ? $this->data->toMap() : null; - } - if (null !== $this->code) { - $res['Code'] = $this->code; - } - - return $res; - } - - /** - * @param array $map - * - * @return AddShortUrlResponseBody - */ - public static function fromMap($map = []) - { - $model = new self(); - if (isset($map['Message'])) { - $model->message = $map['Message']; - } - if (isset($map['RequestId'])) { - $model->requestId = $map['RequestId']; - } - if (isset($map['Data'])) { - $model->data = data::fromMap($map['Data']); - } - if (isset($map['Code'])) { - $model->code = $map['Code']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php deleted file mode 100644 index d5f4102..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php +++ /dev/null @@ -1,71 +0,0 @@ - 'SourceUrl', - 'expireDate' => 'ExpireDate', - 'shortUrl' => 'ShortUrl', - ]; - - public function validate() - { - } - - public function toMap() - { - $res = []; - if (null !== $this->sourceUrl) { - $res['SourceUrl'] = $this->sourceUrl; - } - if (null !== $this->expireDate) { - $res['ExpireDate'] = $this->expireDate; - } - if (null !== $this->shortUrl) { - $res['ShortUrl'] = $this->shortUrl; - } - - return $res; - } - - /** - * @param array $map - * - * @return data - */ - public static function fromMap($map = []) - { - $model = new self(); - if (isset($map['SourceUrl'])) { - $model->sourceUrl = $map['SourceUrl']; - } - if (isset($map['ExpireDate'])) { - $model->expireDate = $map['ExpireDate']; - } - if (isset($map['ShortUrl'])) { - $model->shortUrl = $map['ShortUrl']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponseBody.php index e3a8dba..816ddc1 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponseBody.php @@ -11,26 +11,26 @@ class AddSmsSignResponseBody extends Model /** * @var string */ - public $message; + public $code; /** * @var string */ - public $requestId; + public $message; /** * @var string */ - public $code; + public $requestId; /** * @var string */ public $signName; protected $_name = [ + 'code' => 'Code', 'message' => 'Message', 'requestId' => 'RequestId', - 'code' => 'Code', 'signName' => 'SignName', ]; @@ -41,15 +41,15 @@ class AddSmsSignResponseBody extends Model 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->code) { - $res['Code'] = $this->code; - } if (null !== $this->signName) { $res['SignName'] = $this->signName; } @@ -65,15 +65,15 @@ class AddSmsSignResponseBody extends Model 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['Code'])) { - $model->code = $map['Code']; - } if (isset($map['SignName'])) { $model->signName = $map['SignName']; } diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php index e80ddd1..ad8e131 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php @@ -11,7 +11,7 @@ class AddSmsTemplateResponseBody extends Model /** * @var string */ - public $templateCode; + public $code; /** * @var string @@ -26,12 +26,12 @@ class AddSmsTemplateResponseBody extends Model /** * @var string */ - public $code; + public $templateCode; protected $_name = [ - 'templateCode' => 'TemplateCode', + 'code' => 'Code', 'message' => 'Message', 'requestId' => 'RequestId', - 'code' => 'Code', + 'templateCode' => 'TemplateCode', ]; public function validate() @@ -41,8 +41,8 @@ class AddSmsTemplateResponseBody extends Model public function toMap() { $res = []; - if (null !== $this->templateCode) { - $res['TemplateCode'] = $this->templateCode; + if (null !== $this->code) { + $res['Code'] = $this->code; } if (null !== $this->message) { $res['Message'] = $this->message; @@ -50,8 +50,8 @@ class AddSmsTemplateResponseBody extends Model if (null !== $this->requestId) { $res['RequestId'] = $this->requestId; } - if (null !== $this->code) { - $res['Code'] = $this->code; + if (null !== $this->templateCode) { + $res['TemplateCode'] = $this->templateCode; } return $res; @@ -65,8 +65,8 @@ class AddSmsTemplateResponseBody extends Model public static function fromMap($map = []) { $model = new self(); - if (isset($map['TemplateCode'])) { - $model->templateCode = $map['TemplateCode']; + if (isset($map['Code'])) { + $model->code = $map['Code']; } if (isset($map['Message'])) { $model->message = $map['Message']; @@ -74,8 +74,8 @@ class AddSmsTemplateResponseBody extends Model if (isset($map['RequestId'])) { $model->requestId = $map['RequestId']; } - if (isset($map['Code'])) { - $model->code = $map['Code']; + if (isset($map['TemplateCode'])) { + $model->templateCode = $map['TemplateCode']; } return $model; diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody.php deleted file mode 100644 index 7fbf4a3..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody.php +++ /dev/null @@ -1,84 +0,0 @@ - 'Message', - 'requestId' => 'RequestId', - 'data' => 'Data', - 'code' => 'Code', - ]; - - public function validate() - { - } - - public function toMap() - { - $res = []; - if (null !== $this->message) { - $res['Message'] = $this->message; - } - if (null !== $this->requestId) { - $res['RequestId'] = $this->requestId; - } - if (null !== $this->data) { - $res['Data'] = null !== $this->data ? $this->data->toMap() : null; - } - if (null !== $this->code) { - $res['Code'] = $this->code; - } - - return $res; - } - - /** - * @param array $map - * - * @return CreateShortParamResponseBody - */ - public static function fromMap($map = []) - { - $model = new self(); - if (isset($map['Message'])) { - $model->message = $map['Message']; - } - if (isset($map['RequestId'])) { - $model->requestId = $map['RequestId']; - } - if (isset($map['Data'])) { - $model->data = data::fromMap($map['Data']); - } - if (isset($map['Code'])) { - $model->code = $map['Code']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody/data.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody/data.php deleted file mode 100644 index 9a73a9e..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody/data.php +++ /dev/null @@ -1,71 +0,0 @@ - 'PhoneNumbers', - 'shortParam' => 'ShortParam', - 'paramDetail' => 'ParamDetail', - ]; - - public function validate() - { - } - - public function toMap() - { - $res = []; - if (null !== $this->phoneNumbers) { - $res['PhoneNumbers'] = $this->phoneNumbers; - } - if (null !== $this->shortParam) { - $res['ShortParam'] = $this->shortParam; - } - if (null !== $this->paramDetail) { - $res['ParamDetail'] = $this->paramDetail; - } - - return $res; - } - - /** - * @param array $map - * - * @return data - */ - public static function fromMap($map = []) - { - $model = new self(); - if (isset($map['PhoneNumbers'])) { - $model->phoneNumbers = $map['PhoneNumbers']; - } - if (isset($map['ShortParam'])) { - $model->shortParam = $map['ShortParam']; - } - if (isset($map['ParamDetail'])) { - $model->paramDetail = $map['ParamDetail']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php deleted file mode 100644 index 164b93c..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php +++ /dev/null @@ -1,95 +0,0 @@ - 'OwnerId', - 'resourceOwnerAccount' => 'ResourceOwnerAccount', - 'resourceOwnerId' => 'ResourceOwnerId', - 'sourceUrl' => 'SourceUrl', - 'prodCode' => 'ProdCode', - ]; - - 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; - } - if (null !== $this->prodCode) { - $res['ProdCode'] = $this->prodCode; - } - - 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']; - } - if (isset($map['ProdCode'])) { - $model->prodCode = $map['ProdCode']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php deleted file mode 100644 index 1c5e623..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php +++ /dev/null @@ -1,61 +0,0 @@ - 'headers', - 'body' => 'body', - ]; - - public function validate() - { - Model::validateRequired('headers', $this->headers, true); - Model::validateRequired('body', $this->body, true); - } - - public function toMap() - { - $res = []; - if (null !== $this->headers) { - $res['headers'] = $this->headers; - } - 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['body'])) { - $model->body = DeleteShortUrlResponseBody::fromMap($map['body']); - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php deleted file mode 100644 index 4112603..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php +++ /dev/null @@ -1,71 +0,0 @@ - 'Message', - 'requestId' => 'RequestId', - 'code' => 'Code', - ]; - - public function validate() - { - } - - public function toMap() - { - $res = []; - if (null !== $this->message) { - $res['Message'] = $this->message; - } - if (null !== $this->requestId) { - $res['RequestId'] = $this->requestId; - } - if (null !== $this->code) { - $res['Code'] = $this->code; - } - - return $res; - } - - /** - * @param array $map - * - * @return DeleteShortUrlResponseBody - */ - public static function fromMap($map = []) - { - $model = new self(); - if (isset($map['Message'])) { - $model->message = $map['Message']; - } - if (isset($map['RequestId'])) { - $model->requestId = $map['RequestId']; - } - if (isset($map['Code'])) { - $model->code = $map['Code']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php index cd4dba9..42bb661 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php @@ -11,26 +11,26 @@ class DeleteSmsSignResponseBody extends Model /** * @var string */ - public $message; + public $code; /** * @var string */ - public $requestId; + public $message; /** * @var string */ - public $code; + public $requestId; /** * @var string */ public $signName; protected $_name = [ + 'code' => 'Code', 'message' => 'Message', 'requestId' => 'RequestId', - 'code' => 'Code', 'signName' => 'SignName', ]; @@ -41,15 +41,15 @@ class DeleteSmsSignResponseBody extends Model 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->code) { - $res['Code'] = $this->code; - } if (null !== $this->signName) { $res['SignName'] = $this->signName; } @@ -65,15 +65,15 @@ class DeleteSmsSignResponseBody extends Model 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['Code'])) { - $model->code = $map['Code']; - } if (isset($map['SignName'])) { $model->signName = $map['SignName']; } diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateResponseBody.php index 7eaf51f..532244d 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsTemplateResponseBody.php @@ -11,7 +11,7 @@ class DeleteSmsTemplateResponseBody extends Model /** * @var string */ - public $templateCode; + public $code; /** * @var string @@ -26,12 +26,12 @@ class DeleteSmsTemplateResponseBody extends Model /** * @var string */ - public $code; + public $templateCode; protected $_name = [ - 'templateCode' => 'TemplateCode', + 'code' => 'Code', 'message' => 'Message', 'requestId' => 'RequestId', - 'code' => 'Code', + 'templateCode' => 'TemplateCode', ]; public function validate() @@ -41,8 +41,8 @@ class DeleteSmsTemplateResponseBody extends Model public function toMap() { $res = []; - if (null !== $this->templateCode) { - $res['TemplateCode'] = $this->templateCode; + if (null !== $this->code) { + $res['Code'] = $this->code; } if (null !== $this->message) { $res['Message'] = $this->message; @@ -50,8 +50,8 @@ class DeleteSmsTemplateResponseBody extends Model if (null !== $this->requestId) { $res['RequestId'] = $this->requestId; } - if (null !== $this->code) { - $res['Code'] = $this->code; + if (null !== $this->templateCode) { + $res['TemplateCode'] = $this->templateCode; } return $res; @@ -65,8 +65,8 @@ class DeleteSmsTemplateResponseBody extends Model public static function fromMap($map = []) { $model = new self(); - if (isset($map['TemplateCode'])) { - $model->templateCode = $map['TemplateCode']; + if (isset($map['Code'])) { + $model->code = $map['Code']; } if (isset($map['Message'])) { $model->message = $map['Message']; @@ -74,8 +74,8 @@ class DeleteSmsTemplateResponseBody extends Model if (isset($map['RequestId'])) { $model->requestId = $map['RequestId']; } - if (isset($map['Code'])) { - $model->code = $map['Code']; + if (isset($map['TemplateCode'])) { + $model->templateCode = $map['TemplateCode']; } return $model; diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsSignResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsSignResponseBody.php index 857c4b5..a6bfe93 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsSignResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsSignResponseBody.php @@ -11,26 +11,26 @@ class ModifySmsSignResponseBody extends Model /** * @var string */ - public $message; + public $code; /** * @var string */ - public $requestId; + public $message; /** * @var string */ - public $code; + public $requestId; /** * @var string */ public $signName; protected $_name = [ + 'code' => 'Code', 'message' => 'Message', 'requestId' => 'RequestId', - 'code' => 'Code', 'signName' => 'SignName', ]; @@ -41,15 +41,15 @@ class ModifySmsSignResponseBody extends Model 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->code) { - $res['Code'] = $this->code; - } if (null !== $this->signName) { $res['SignName'] = $this->signName; } @@ -65,15 +65,15 @@ class ModifySmsSignResponseBody extends Model 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['Code'])) { - $model->code = $map['Code']; - } if (isset($map['SignName'])) { $model->signName = $map['SignName']; } diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsTemplateResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsTemplateResponseBody.php index d7e1511..7403f14 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsTemplateResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/ModifySmsTemplateResponseBody.php @@ -11,7 +11,7 @@ class ModifySmsTemplateResponseBody extends Model /** * @var string */ - public $templateCode; + public $code; /** * @var string @@ -26,12 +26,12 @@ class ModifySmsTemplateResponseBody extends Model /** * @var string */ - public $code; + public $templateCode; protected $_name = [ - 'templateCode' => 'TemplateCode', + 'code' => 'Code', 'message' => 'Message', 'requestId' => 'RequestId', - 'code' => 'Code', + 'templateCode' => 'TemplateCode', ]; public function validate() @@ -41,8 +41,8 @@ class ModifySmsTemplateResponseBody extends Model public function toMap() { $res = []; - if (null !== $this->templateCode) { - $res['TemplateCode'] = $this->templateCode; + if (null !== $this->code) { + $res['Code'] = $this->code; } if (null !== $this->message) { $res['Message'] = $this->message; @@ -50,8 +50,8 @@ class ModifySmsTemplateResponseBody extends Model if (null !== $this->requestId) { $res['RequestId'] = $this->requestId; } - if (null !== $this->code) { - $res['Code'] = $this->code; + if (null !== $this->templateCode) { + $res['TemplateCode'] = $this->templateCode; } return $res; @@ -65,8 +65,8 @@ class ModifySmsTemplateResponseBody extends Model public static function fromMap($map = []) { $model = new self(); - if (isset($map['TemplateCode'])) { - $model->templateCode = $map['TemplateCode']; + if (isset($map['Code'])) { + $model->code = $map['Code']; } if (isset($map['Message'])) { $model->message = $map['Message']; @@ -74,8 +74,8 @@ class ModifySmsTemplateResponseBody extends Model if (isset($map['RequestId'])) { $model->requestId = $map['RequestId']; } - if (isset($map['Code'])) { - $model->code = $map['Code']; + if (isset($map['TemplateCode'])) { + $model->templateCode = $map['TemplateCode']; } return $model; diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody.php index fbd7d20..82b635b 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody.php @@ -12,7 +12,7 @@ class QuerySendDetailsResponseBody extends Model /** * @var string */ - public $totalCount; + public $code; /** * @var string @@ -27,17 +27,17 @@ class QuerySendDetailsResponseBody extends Model /** * @var string */ - public $code; + public $totalCount; /** * @var smsSendDetailDTOs */ public $smsSendDetailDTOs; protected $_name = [ - 'totalCount' => 'TotalCount', + 'code' => 'Code', 'message' => 'Message', 'requestId' => 'RequestId', - 'code' => 'Code', + 'totalCount' => 'TotalCount', 'smsSendDetailDTOs' => 'SmsSendDetailDTOs', ]; @@ -48,8 +48,8 @@ class QuerySendDetailsResponseBody extends Model public function toMap() { $res = []; - if (null !== $this->totalCount) { - $res['TotalCount'] = $this->totalCount; + if (null !== $this->code) { + $res['Code'] = $this->code; } if (null !== $this->message) { $res['Message'] = $this->message; @@ -57,8 +57,8 @@ class QuerySendDetailsResponseBody extends Model if (null !== $this->requestId) { $res['RequestId'] = $this->requestId; } - if (null !== $this->code) { - $res['Code'] = $this->code; + if (null !== $this->totalCount) { + $res['TotalCount'] = $this->totalCount; } if (null !== $this->smsSendDetailDTOs) { $res['SmsSendDetailDTOs'] = null !== $this->smsSendDetailDTOs ? $this->smsSendDetailDTOs->toMap() : null; @@ -75,8 +75,8 @@ class QuerySendDetailsResponseBody extends Model public static function fromMap($map = []) { $model = new self(); - if (isset($map['TotalCount'])) { - $model->totalCount = $map['TotalCount']; + if (isset($map['Code'])) { + $model->code = $map['Code']; } if (isset($map['Message'])) { $model->message = $map['Message']; @@ -84,8 +84,8 @@ class QuerySendDetailsResponseBody extends Model if (isset($map['RequestId'])) { $model->requestId = $map['RequestId']; } - if (isset($map['Code'])) { - $model->code = $map['Code']; + if (isset($map['TotalCount'])) { + $model->totalCount = $map['TotalCount']; } if (isset($map['SmsSendDetailDTOs'])) { $model->smsSendDetailDTOs = smsSendDetailDTOs::fromMap($map['SmsSendDetailDTOs']); diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlRequest.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlRequest.php deleted file mode 100644 index 6acc416..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlRequest.php +++ /dev/null @@ -1,95 +0,0 @@ - 'OwnerId', - 'resourceOwnerAccount' => 'ResourceOwnerAccount', - 'resourceOwnerId' => 'ResourceOwnerId', - 'prodCode' => 'ProdCode', - 'shortUrl' => 'ShortUrl', - ]; - - 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->prodCode) { - $res['ProdCode'] = $this->prodCode; - } - if (null !== $this->shortUrl) { - $res['ShortUrl'] = $this->shortUrl; - } - - return $res; - } - - /** - * @param array $map - * - * @return QueryShortUrlRequest - */ - 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['ProdCode'])) { - $model->prodCode = $map['ProdCode']; - } - if (isset($map['ShortUrl'])) { - $model->shortUrl = $map['ShortUrl']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponse.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponse.php deleted file mode 100644 index 7cd83b9..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponse.php +++ /dev/null @@ -1,61 +0,0 @@ - 'headers', - 'body' => 'body', - ]; - - public function validate() - { - Model::validateRequired('headers', $this->headers, true); - Model::validateRequired('body', $this->body, true); - } - - public function toMap() - { - $res = []; - if (null !== $this->headers) { - $res['headers'] = $this->headers; - } - if (null !== $this->body) { - $res['body'] = null !== $this->body ? $this->body->toMap() : null; - } - - return $res; - } - - /** - * @param array $map - * - * @return QueryShortUrlResponse - */ - public static function fromMap($map = []) - { - $model = new self(); - if (isset($map['headers'])) { - $model->headers = $map['headers']; - } - if (isset($map['body'])) { - $model->body = QueryShortUrlResponseBody::fromMap($map['body']); - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody.php deleted file mode 100644 index 0216c81..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody.php +++ /dev/null @@ -1,84 +0,0 @@ - 'Message', - 'requestId' => 'RequestId', - 'data' => 'Data', - 'code' => 'Code', - ]; - - public function validate() - { - } - - public function toMap() - { - $res = []; - if (null !== $this->message) { - $res['Message'] = $this->message; - } - if (null !== $this->requestId) { - $res['RequestId'] = $this->requestId; - } - if (null !== $this->data) { - $res['Data'] = null !== $this->data ? $this->data->toMap() : null; - } - if (null !== $this->code) { - $res['Code'] = $this->code; - } - - return $res; - } - - /** - * @param array $map - * - * @return QueryShortUrlResponseBody - */ - public static function fromMap($map = []) - { - $model = new self(); - if (isset($map['Message'])) { - $model->message = $map['Message']; - } - if (isset($map['RequestId'])) { - $model->requestId = $map['RequestId']; - } - if (isset($map['Data'])) { - $model->data = data::fromMap($map['Data']); - } - if (isset($map['Code'])) { - $model->code = $map['Code']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody/data.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody/data.php deleted file mode 100644 index c9400aa..0000000 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody/data.php +++ /dev/null @@ -1,131 +0,0 @@ - 'UniqueVisitorCount', - 'sourceUrl' => 'SourceUrl', - 'shortUrlStatus' => 'ShortUrlStatus', - 'pageViewCount' => 'PageViewCount', - 'expireDate' => 'ExpireDate', - 'shortUrlName' => 'ShortUrlName', - 'createDate' => 'CreateDate', - 'shortUrl' => 'ShortUrl', - ]; - - public function validate() - { - } - - public function toMap() - { - $res = []; - if (null !== $this->uniqueVisitorCount) { - $res['UniqueVisitorCount'] = $this->uniqueVisitorCount; - } - if (null !== $this->sourceUrl) { - $res['SourceUrl'] = $this->sourceUrl; - } - if (null !== $this->shortUrlStatus) { - $res['ShortUrlStatus'] = $this->shortUrlStatus; - } - if (null !== $this->pageViewCount) { - $res['PageViewCount'] = $this->pageViewCount; - } - if (null !== $this->expireDate) { - $res['ExpireDate'] = $this->expireDate; - } - if (null !== $this->shortUrlName) { - $res['ShortUrlName'] = $this->shortUrlName; - } - if (null !== $this->createDate) { - $res['CreateDate'] = $this->createDate; - } - if (null !== $this->shortUrl) { - $res['ShortUrl'] = $this->shortUrl; - } - - return $res; - } - - /** - * @param array $map - * - * @return data - */ - public static function fromMap($map = []) - { - $model = new self(); - if (isset($map['UniqueVisitorCount'])) { - $model->uniqueVisitorCount = $map['UniqueVisitorCount']; - } - if (isset($map['SourceUrl'])) { - $model->sourceUrl = $map['SourceUrl']; - } - if (isset($map['ShortUrlStatus'])) { - $model->shortUrlStatus = $map['ShortUrlStatus']; - } - if (isset($map['PageViewCount'])) { - $model->pageViewCount = $map['PageViewCount']; - } - if (isset($map['ExpireDate'])) { - $model->expireDate = $map['ExpireDate']; - } - if (isset($map['ShortUrlName'])) { - $model->shortUrlName = $map['ShortUrlName']; - } - if (isset($map['CreateDate'])) { - $model->createDate = $map['CreateDate']; - } - if (isset($map['ShortUrl'])) { - $model->shortUrl = $map['ShortUrl']; - } - - return $model; - } -} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignResponseBody.php index fecb3e8..30c45b7 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignResponseBody.php @@ -13,11 +13,6 @@ class QuerySmsSignResponseBody extends Model */ public $requestId; - /** - * @var string - */ - public $message; - /** * @var int */ @@ -28,6 +23,11 @@ class QuerySmsSignResponseBody extends Model */ public $code; + /** + * @var string + */ + public $message; + /** * @var string */ @@ -44,9 +44,9 @@ class QuerySmsSignResponseBody extends Model public $signName; protected $_name = [ 'requestId' => 'RequestId', - 'message' => 'Message', 'signStatus' => 'SignStatus', 'code' => 'Code', + 'message' => 'Message', 'createDate' => 'CreateDate', 'reason' => 'Reason', 'signName' => 'SignName', @@ -62,15 +62,15 @@ class QuerySmsSignResponseBody extends Model if (null !== $this->requestId) { $res['RequestId'] = $this->requestId; } - if (null !== $this->message) { - $res['Message'] = $this->message; - } if (null !== $this->signStatus) { $res['SignStatus'] = $this->signStatus; } if (null !== $this->code) { $res['Code'] = $this->code; } + if (null !== $this->message) { + $res['Message'] = $this->message; + } if (null !== $this->createDate) { $res['CreateDate'] = $this->createDate; } @@ -95,15 +95,15 @@ class QuerySmsSignResponseBody extends Model if (isset($map['RequestId'])) { $model->requestId = $map['RequestId']; } - if (isset($map['Message'])) { - $model->message = $map['Message']; - } if (isset($map['SignStatus'])) { $model->signStatus = $map['SignStatus']; } if (isset($map['Code'])) { $model->code = $map['Code']; } + if (isset($map['Message'])) { + $model->message = $map['Message']; + } if (isset($map['CreateDate'])) { $model->createDate = $map['CreateDate']; } diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsTemplateResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsTemplateResponseBody.php index 121abc0..d0b9099 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsTemplateResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsTemplateResponseBody.php @@ -11,7 +11,7 @@ class QuerySmsTemplateResponseBody extends Model /** * @var string */ - public $templateCode; + public $templateContent; /** * @var string @@ -21,17 +21,17 @@ class QuerySmsTemplateResponseBody extends Model /** * @var string */ - public $message; + public $templateCode; /** - * @var string + * @var int */ - public $templateContent; + public $templateStatus; /** * @var string */ - public $templateName; + public $code; /** * @var int @@ -41,33 +41,33 @@ class QuerySmsTemplateResponseBody extends Model /** * @var string */ - public $code; + public $message; /** * @var string */ - public $createDate; + public $templateName; /** * @var string */ - public $reason; + public $createDate; /** - * @var int + * @var string */ - public $templateStatus; + public $reason; protected $_name = [ - 'templateCode' => 'TemplateCode', + 'templateContent' => 'TemplateContent', 'requestId' => 'RequestId', + 'templateCode' => 'TemplateCode', + 'templateStatus' => 'TemplateStatus', + 'code' => 'Code', + 'templateType' => 'TemplateType', 'message' => 'Message', - 'templateContent' => 'TemplateContent', 'templateName' => 'TemplateName', - 'templateType' => 'TemplateType', - 'code' => 'Code', 'createDate' => 'CreateDate', 'reason' => 'Reason', - 'templateStatus' => 'TemplateStatus', ]; public function validate() @@ -77,26 +77,29 @@ class QuerySmsTemplateResponseBody extends Model public function toMap() { $res = []; - if (null !== $this->templateCode) { - $res['TemplateCode'] = $this->templateCode; + if (null !== $this->templateContent) { + $res['TemplateContent'] = $this->templateContent; } if (null !== $this->requestId) { $res['RequestId'] = $this->requestId; } - if (null !== $this->message) { - $res['Message'] = $this->message; + if (null !== $this->templateCode) { + $res['TemplateCode'] = $this->templateCode; } - if (null !== $this->templateContent) { - $res['TemplateContent'] = $this->templateContent; + if (null !== $this->templateStatus) { + $res['TemplateStatus'] = $this->templateStatus; } - if (null !== $this->templateName) { - $res['TemplateName'] = $this->templateName; + if (null !== $this->code) { + $res['Code'] = $this->code; } if (null !== $this->templateType) { $res['TemplateType'] = $this->templateType; } - if (null !== $this->code) { - $res['Code'] = $this->code; + if (null !== $this->message) { + $res['Message'] = $this->message; + } + if (null !== $this->templateName) { + $res['TemplateName'] = $this->templateName; } if (null !== $this->createDate) { $res['CreateDate'] = $this->createDate; @@ -104,9 +107,6 @@ class QuerySmsTemplateResponseBody extends Model if (null !== $this->reason) { $res['Reason'] = $this->reason; } - if (null !== $this->templateStatus) { - $res['TemplateStatus'] = $this->templateStatus; - } return $res; } @@ -119,26 +119,29 @@ class QuerySmsTemplateResponseBody extends Model public static function fromMap($map = []) { $model = new self(); - if (isset($map['TemplateCode'])) { - $model->templateCode = $map['TemplateCode']; + if (isset($map['TemplateContent'])) { + $model->templateContent = $map['TemplateContent']; } if (isset($map['RequestId'])) { $model->requestId = $map['RequestId']; } - if (isset($map['Message'])) { - $model->message = $map['Message']; + if (isset($map['TemplateCode'])) { + $model->templateCode = $map['TemplateCode']; } - if (isset($map['TemplateContent'])) { - $model->templateContent = $map['TemplateContent']; + if (isset($map['TemplateStatus'])) { + $model->templateStatus = $map['TemplateStatus']; } - if (isset($map['TemplateName'])) { - $model->templateName = $map['TemplateName']; + if (isset($map['Code'])) { + $model->code = $map['Code']; } if (isset($map['TemplateType'])) { $model->templateType = $map['TemplateType']; } - if (isset($map['Code'])) { - $model->code = $map['Code']; + if (isset($map['Message'])) { + $model->message = $map['Message']; + } + if (isset($map['TemplateName'])) { + $model->templateName = $map['TemplateName']; } if (isset($map['CreateDate'])) { $model->createDate = $map['CreateDate']; @@ -146,9 +149,6 @@ class QuerySmsTemplateResponseBody extends Model if (isset($map['Reason'])) { $model->reason = $map['Reason']; } - if (isset($map['TemplateStatus'])) { - $model->templateStatus = $map['TemplateStatus']; - } return $model; } diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsRequest.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsRequest.php index 7fa80d9..72b3d16 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsRequest.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsRequest.php @@ -54,7 +54,7 @@ class SendBatchSmsRequest extends Model 'phoneNumberJson' => 'PhoneNumberJson', 'signNameJson' => 'SignNameJson', 'templateCode' => 'TemplateCode', - 'templateParamJson' => 'templateParamJson', + 'templateParamJson' => 'TemplateParamJson', 'smsUpExtendCodeJson' => 'SmsUpExtendCodeJson', ]; @@ -84,7 +84,7 @@ class SendBatchSmsRequest extends Model $res['TemplateCode'] = $this->templateCode; } if (null !== $this->templateParamJson) { - $res['templateParamJson'] = $this->templateParamJson; + $res['TemplateParamJson'] = $this->templateParamJson; } if (null !== $this->smsUpExtendCodeJson) { $res['SmsUpExtendCodeJson'] = $this->smsUpExtendCodeJson; @@ -119,8 +119,8 @@ class SendBatchSmsRequest extends Model if (isset($map['TemplateCode'])) { $model->templateCode = $map['TemplateCode']; } - if (isset($map['templateParamJson'])) { - $model->templateParamJson = $map['templateParamJson']; + if (isset($map['TemplateParamJson'])) { + $model->templateParamJson = $map['TemplateParamJson']; } if (isset($map['SmsUpExtendCodeJson'])) { $model->smsUpExtendCodeJson = $map['SmsUpExtendCodeJson']; diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsResponseBody.php index 9e83c59..b8f3980 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsResponseBody.php @@ -11,27 +11,27 @@ class SendBatchSmsResponseBody extends Model /** * @var string */ - public $message; + public $code; /** * @var string */ - public $requestId; + public $message; /** * @var string */ - public $code; + public $bizId; /** * @var string */ - public $bizId; + public $requestId; protected $_name = [ - 'message' => 'Message', - 'requestId' => 'RequestId', 'code' => 'Code', + 'message' => 'Message', 'bizId' => 'BizId', + 'requestId' => 'RequestId', ]; public function validate() @@ -41,18 +41,18 @@ class SendBatchSmsResponseBody extends Model public function toMap() { $res = []; - if (null !== $this->message) { - $res['Message'] = $this->message; - } - if (null !== $this->requestId) { - $res['RequestId'] = $this->requestId; - } if (null !== $this->code) { $res['Code'] = $this->code; } + if (null !== $this->message) { + $res['Message'] = $this->message; + } if (null !== $this->bizId) { $res['BizId'] = $this->bizId; } + if (null !== $this->requestId) { + $res['RequestId'] = $this->requestId; + } return $res; } @@ -65,18 +65,18 @@ class SendBatchSmsResponseBody extends Model public static function fromMap($map = []) { $model = new self(); - if (isset($map['Message'])) { - $model->message = $map['Message']; - } - if (isset($map['RequestId'])) { - $model->requestId = $map['RequestId']; - } if (isset($map['Code'])) { $model->code = $map['Code']; } + if (isset($map['Message'])) { + $model->message = $map['Message']; + } if (isset($map['BizId'])) { $model->bizId = $map['BizId']; } + if (isset($map['RequestId'])) { + $model->requestId = $map['RequestId']; + } return $model; } diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamRequest.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeRequest.php similarity index 60% rename from vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamRequest.php rename to vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeRequest.php index 8e9f4de..ab54fe9 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamRequest.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeRequest.php @@ -6,7 +6,7 @@ namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models; use AlibabaCloud\Tea\Model; -class CreateShortParamRequest extends Model +class SendMessageToGlobeRequest extends Model { /** * @var int @@ -26,18 +26,30 @@ class CreateShortParamRequest extends Model /** * @var string */ - public $phoneNumbers; + public $to; /** * @var string */ - public $prodCode; + public $from; + + /** + * @var string + */ + public $message; + + /** + * @var string + */ + public $type; protected $_name = [ 'ownerId' => 'OwnerId', 'resourceOwnerAccount' => 'ResourceOwnerAccount', 'resourceOwnerId' => 'ResourceOwnerId', - 'phoneNumbers' => 'PhoneNumbers', - 'prodCode' => 'ProdCode', + 'to' => 'To', + 'from' => 'From', + 'message' => 'Message', + 'type' => 'Type', ]; public function validate() @@ -56,11 +68,17 @@ class CreateShortParamRequest extends Model if (null !== $this->resourceOwnerId) { $res['ResourceOwnerId'] = $this->resourceOwnerId; } - if (null !== $this->phoneNumbers) { - $res['PhoneNumbers'] = $this->phoneNumbers; + if (null !== $this->to) { + $res['To'] = $this->to; + } + if (null !== $this->from) { + $res['From'] = $this->from; } - if (null !== $this->prodCode) { - $res['ProdCode'] = $this->prodCode; + if (null !== $this->message) { + $res['Message'] = $this->message; + } + if (null !== $this->type) { + $res['Type'] = $this->type; } return $res; @@ -69,7 +87,7 @@ class CreateShortParamRequest extends Model /** * @param array $map * - * @return CreateShortParamRequest + * @return SendMessageToGlobeRequest */ public static function fromMap($map = []) { @@ -83,11 +101,17 @@ class CreateShortParamRequest extends Model if (isset($map['ResourceOwnerId'])) { $model->resourceOwnerId = $map['ResourceOwnerId']; } - if (isset($map['PhoneNumbers'])) { - $model->phoneNumbers = $map['PhoneNumbers']; + if (isset($map['To'])) { + $model->to = $map['To']; + } + if (isset($map['From'])) { + $model->from = $map['From']; + } + if (isset($map['Message'])) { + $model->message = $map['Message']; } - if (isset($map['ProdCode'])) { - $model->prodCode = $map['ProdCode']; + if (isset($map['Type'])) { + $model->type = $map['Type']; } return $model; diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponse.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponse.php similarity index 83% rename from vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponse.php rename to vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponse.php index 560538c..adb245a 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponse.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponse.php @@ -6,7 +6,7 @@ namespace AlibabaCloud\SDK\Dysmsapi\V20170525\Models; use AlibabaCloud\Tea\Model; -class CreateShortParamResponse extends Model +class SendMessageToGlobeResponse extends Model { /** * @var string[] @@ -14,7 +14,7 @@ class CreateShortParamResponse extends Model public $headers; /** - * @var CreateShortParamResponseBody + * @var SendMessageToGlobeResponseBody */ public $body; protected $_name = [ @@ -44,7 +44,7 @@ class CreateShortParamResponse extends Model /** * @param array $map * - * @return CreateShortParamResponse + * @return SendMessageToGlobeResponse */ public static function fromMap($map = []) { @@ -53,7 +53,7 @@ class CreateShortParamResponse extends Model $model->headers = $map['headers']; } if (isset($map['body'])) { - $model->body = CreateShortParamResponseBody::fromMap($map['body']); + $model->body = SendMessageToGlobeResponseBody::fromMap($map['body']); } return $model; diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody.php new file mode 100644 index 0000000..d266c2b --- /dev/null +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody.php @@ -0,0 +1,120 @@ + 'From', + 'messageId' => 'MessageId', + 'requestId' => 'RequestId', + 'segments' => 'Segments', + 'code' => 'Code', + 'to' => 'To', + 'numberDetail' => 'NumberDetail', + ]; + + public function validate() + { + } + + public function toMap() + { + $res = []; + if (null !== $this->from) { + $res['From'] = $this->from; + } + if (null !== $this->messageId) { + $res['MessageId'] = $this->messageId; + } + if (null !== $this->requestId) { + $res['RequestId'] = $this->requestId; + } + if (null !== $this->segments) { + $res['Segments'] = $this->segments; + } + if (null !== $this->code) { + $res['Code'] = $this->code; + } + if (null !== $this->to) { + $res['To'] = $this->to; + } + if (null !== $this->numberDetail) { + $res['NumberDetail'] = null !== $this->numberDetail ? $this->numberDetail->toMap() : null; + } + + return $res; + } + + /** + * @param array $map + * + * @return SendMessageToGlobeResponseBody + */ + public static function fromMap($map = []) + { + $model = new self(); + if (isset($map['From'])) { + $model->from = $map['From']; + } + if (isset($map['MessageId'])) { + $model->messageId = $map['MessageId']; + } + if (isset($map['RequestId'])) { + $model->requestId = $map['RequestId']; + } + if (isset($map['Segments'])) { + $model->segments = $map['Segments']; + } + if (isset($map['Code'])) { + $model->code = $map['Code']; + } + if (isset($map['To'])) { + $model->to = $map['To']; + } + if (isset($map['NumberDetail'])) { + $model->numberDetail = numberDetail::fromMap($map['NumberDetail']); + } + + return $model; + } +} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody/numberDetail.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody/numberDetail.php new file mode 100644 index 0000000..e233034 --- /dev/null +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody/numberDetail.php @@ -0,0 +1,71 @@ + 'Country', + 'carrier' => 'Carrier', + 'region' => 'Region', + ]; + + public function validate() + { + } + + public function toMap() + { + $res = []; + if (null !== $this->country) { + $res['Country'] = $this->country; + } + if (null !== $this->carrier) { + $res['Carrier'] = $this->carrier; + } + if (null !== $this->region) { + $res['Region'] = $this->region; + } + + return $res; + } + + /** + * @param array $map + * + * @return numberDetail + */ + public static function fromMap($map = []) + { + $model = new self(); + if (isset($map['Country'])) { + $model->country = $map['Country']; + } + if (isset($map['Carrier'])) { + $model->carrier = $map['Carrier']; + } + if (isset($map['Region'])) { + $model->region = $map['Region']; + } + + return $model; + } +} diff --git a/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendSmsResponseBody.php b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendSmsResponseBody.php index 6d0aaab..d5e5783 100644 --- a/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendSmsResponseBody.php +++ b/vendor/alibabacloud/dysmsapi-20170525/src/Models/SendSmsResponseBody.php @@ -11,27 +11,27 @@ class SendSmsResponseBody extends Model /** * @var string */ - public $message; + public $code; /** * @var string */ - public $requestId; + public $message; /** * @var string */ - public $code; + public $bizId; /** * @var string */ - public $bizId; + public $requestId; protected $_name = [ - 'message' => 'Message', - 'requestId' => 'RequestId', 'code' => 'Code', + 'message' => 'Message', 'bizId' => 'BizId', + 'requestId' => 'RequestId', ]; public function validate() @@ -41,18 +41,18 @@ class SendSmsResponseBody extends Model public function toMap() { $res = []; - if (null !== $this->message) { - $res['Message'] = $this->message; - } - if (null !== $this->requestId) { - $res['RequestId'] = $this->requestId; - } if (null !== $this->code) { $res['Code'] = $this->code; } + if (null !== $this->message) { + $res['Message'] = $this->message; + } if (null !== $this->bizId) { $res['BizId'] = $this->bizId; } + if (null !== $this->requestId) { + $res['RequestId'] = $this->requestId; + } return $res; } @@ -65,18 +65,18 @@ class SendSmsResponseBody extends Model public static function fromMap($map = []) { $model = new self(); - if (isset($map['Message'])) { - $model->message = $map['Message']; - } - if (isset($map['RequestId'])) { - $model->requestId = $map['RequestId']; - } if (isset($map['Code'])) { $model->code = $map['Code']; } + if (isset($map['Message'])) { + $model->message = $map['Message']; + } if (isset($map['BizId'])) { $model->bizId = $map['BizId']; } + if (isset($map['RequestId'])) { + $model->requestId = $map['RequestId']; + } return $model; } diff --git a/vendor/alibabacloud/openapi-util/src/OpenApiUtilClient.php b/vendor/alibabacloud/openapi-util/src/OpenApiUtilClient.php index f205785..3b05760 100644 --- a/vendor/alibabacloud/openapi-util/src/OpenApiUtilClient.php +++ b/vendor/alibabacloud/openapi-util/src/OpenApiUtilClient.php @@ -296,9 +296,9 @@ class OpenApiUtilClient public static function getAuthorization($request, $signatureAlgorithm, $payload, $accesskey, $accessKeySecret) { $canonicalURI = $request->pathname ? $request->pathname : '/'; - + $query = $request->query ?: []; $method = strtoupper($request->method); - $canonicalQueryString = self::getCanonicalQueryString($request->query); + $canonicalQueryString = self::getCanonicalQueryString($query); $signHeaders = []; foreach ($request->headers as $k => $v) { $k = strtolower($k); @@ -370,6 +370,18 @@ class OpenApiUtilClient return implode('/', $tmp); } + /** + * Get encoded param. + * + * @param string $param the raw param + * + * @return string encoded param + */ + public static function getEncodeParam($param) + { + return rawurlencode($param); + } + private static function getRpcStrToSign($method, $query) { ksort($query); diff --git a/vendor/aliyuncs/oss-sdk-php/CHANGELOG.md b/vendor/aliyuncs/oss-sdk-php/CHANGELOG.md index 47f6853..cd983e7 100644 --- a/vendor/aliyuncs/oss-sdk-php/CHANGELOG.md +++ b/vendor/aliyuncs/oss-sdk-php/CHANGELOG.md @@ -1,5 +1,8 @@ # ChangeLog - Aliyun OSS SDK for PHP +## v2.4.3 / 2021-08-25 +* Fixed: integer overflow in PHP5.x. + ## v2.4.2 / 2021-06-04 * Compatible with PHP8. * Fixed: compatible with PHP5.4. diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Image.php b/vendor/aliyuncs/oss-sdk-php/samples/Image.php index 6e51d06..8531733 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Image.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Image.php @@ -83,5 +83,5 @@ function printImage($func, $imageFile) Common::println("$func, image width: " . $array[0]); Common::println("$func, image height: " . $array[1]); Common::println("$func, image type: " . ($array[2] === 2 ? 'jpg' : 'png')); - Common::println("$func, image size: " . ceil(filesize($imageFile))); + Common::println("$func, image size: " . ceil(sprintf('%u',filesize($imageFile)))); } diff --git a/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php b/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php index 21756b7..dd4b7fd 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php @@ -85,7 +85,7 @@ function putObjectByRawApis($ossClient, $bucket) */ $partSize = 10 * 1024 * 1024; $uploadFile = __FILE__; - $uploadFileSize = filesize($uploadFile); + $uploadFileSize = sprintf('%u',filesize($uploadFile)); $pieces = $ossClient->generateMultiuploadParts($uploadFileSize, $partSize); $responseUploadPart = array(); $uploadPosition = 0; diff --git a/vendor/aliyuncs/oss-sdk-php/samples/Signature.php b/vendor/aliyuncs/oss-sdk-php/samples/Signature.php index eef5981..6388f27 100644 --- a/vendor/aliyuncs/oss-sdk-php/samples/Signature.php +++ b/vendor/aliyuncs/oss-sdk-php/samples/Signature.php @@ -130,7 +130,7 @@ function getSignedUrlForPuttingObjectFromFile($ossClient, $bucket) $request->set_method('PUT'); $request->add_header('Content-Type', 'txt'); $request->set_read_file($file); - $request->set_read_stream_size(filesize($file)); + $request->set_read_stream_size(sprintf('%u',filesize($file))); $request->send_request(); $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code()); diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php index 54bb105..a33a152 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php @@ -237,7 +237,7 @@ class OssUtil */ public static function generateFile($filename, $size) { - if (file_exists($filename) && $size == filesize($filename)) { + if (file_exists($filename) && $size == sprintf('%u',filesize($filename))) { echo $filename . " already exists, no need to create again. "; return; } @@ -284,7 +284,7 @@ BBB; if (($to_pos - $from_pos) > self::OSS_MAX_PART_SIZE) { return $content_md5; } - $filesize = filesize($filename); + $filesize = sprintf('%u',filesize($filename)); if ($from_pos >= $filesize || $to_pos >= $filesize || $from_pos < 0 || $to_pos < 0) { return $content_md5; } diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php index 891f862..4adab3c 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php @@ -23,7 +23,7 @@ class ObjectInfo * @param string $lastModified * @param string $eTag * @param string $type - * @param int $size + * @param string $size * @param string $storageClass */ public function __construct($key, $lastModified, $eTag, $type, $size, $storageClass) @@ -67,15 +67,26 @@ class ObjectInfo { return $this->type; } - - /** - * @return int - */ - public function getSize() - { - return $this->size; - } - + + /** + * php7 && 64bit can use it + * @return int + */ + public function getSize() + { + return (int)$this->size; + } + + + /** + * php5.x or 32bit must use it + * @return string + */ + public function getSizeStr() + { + return $this->size; + } + /** * @return string */ @@ -88,6 +99,6 @@ class ObjectInfo private $lastModified = ""; private $eTag = ""; private $type = ""; - private $size = 0; + private $size = "0"; private $storageClass = ""; } \ No newline at end of file diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionInfo.php index 407315d..663bd0b 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionInfo.php @@ -23,7 +23,7 @@ class ObjectVersionInfo * @param string $lastModified * @param string $eTag * @param string $type - * @param int $size + * @param string $size * @param string $storageClass * @param string $isLatest */ @@ -78,14 +78,25 @@ class ObjectVersionInfo { return $this->type; } - - /** - * @return int - */ - public function getSize() - { - return $this->size; - } + + /** + * php7 && 64bit can use it + * @return int + */ + public function getSize() + { + return (int)$this->size; + } + + + /** + * php5.x or 32bit must use it + * @return string + */ + public function getSizeStr() + { + return $this->size; + } /** * @return string @@ -108,7 +119,7 @@ class ObjectVersionInfo private $lastModified = ""; private $eTag = ""; private $type = ""; - private $size = 0; + private $size = "0"; private $storageClass = ""; private $isLatest = ""; } \ No newline at end of file diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PartInfo.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PartInfo.php index 439a84d..07df576 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PartInfo.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PartInfo.php @@ -14,7 +14,7 @@ class PartInfo * @param int $partNumber * @param string $lastModified * @param string $eTag - * @param int $size + * @param string $size */ public function __construct($partNumber, $lastModified, $eTag, $size) { @@ -49,15 +49,26 @@ class PartInfo } /** + * php7 && 64bit can use it * @return int */ public function getSize() { - return $this->size; + return (int)$this->size; } + + + /** + * php5.x or 32bit must use it + * @return string + */ + public function getSizeStr() + { + return $this->size; + } private $partNumber = 0; private $lastModified = ""; private $eTag = ""; - private $size = 0; + private $size = "0"; } \ No newline at end of file diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php index c41cacd..0922a0b 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/OssClient.php @@ -1698,7 +1698,7 @@ class OssClient throw new OssException($file . " file does not exist"); } $options[self::OSS_FILE_UPLOAD] = $file; - $file_size = filesize($options[self::OSS_FILE_UPLOAD]); + $file_size = sprintf('%u',filesize($options[self::OSS_FILE_UPLOAD])); $is_check_md5 = $this->isCheckMD5($options); if ($is_check_md5) { $content_md5 = base64_encode(md5_file($options[self::OSS_FILE_UPLOAD], true)); @@ -1816,7 +1816,7 @@ class OssClient throw new OssException($file . " file does not exist"); } $options[self::OSS_FILE_UPLOAD] = $file; - $file_size = filesize($options[self::OSS_FILE_UPLOAD]); + $file_size = sprintf('%u',filesize($options[self::OSS_FILE_UPLOAD])); $is_check_md5 = $this->isCheckMD5($options); if ($is_check_md5) { $content_md5 = base64_encode(md5_file($options[self::OSS_FILE_UPLOAD], true)); @@ -2460,7 +2460,8 @@ class OssClient if (isset($options[self::OSS_CONTENT_LENGTH])) { $upload_file_size = (integer)$options[self::OSS_CONTENT_LENGTH]; } else { - $upload_file_size = filesize($uploadFile); + $upload_file_size = sprintf('%u',filesize($uploadFile)); + if ($upload_file_size !== false) { $upload_file_size -= $upload_position; } @@ -3508,8 +3509,8 @@ class OssClient ); // OssClient version information const OSS_NAME = "aliyun-sdk-php"; - const OSS_VERSION = "2.4.2"; - const OSS_BUILD = "20210604"; + const OSS_VERSION = "2.4.3"; + const OSS_BUILD = "20210825"; const OSS_AUTHOR = ""; const OSS_OPTIONS_ORIGIN = 'Origin'; const OSS_OPTIONS_REQUEST_METHOD = 'Access-Control-Request-Method'; diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectVersionsResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectVersionsResult.php index 5f18c4d..849c21c 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectVersionsResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectVersionsResult.php @@ -56,7 +56,7 @@ class ListObjectVersionsResult extends Result $lastModified = isset($content->LastModified) ? strval($content->LastModified) : ""; $eTag = isset($content->ETag) ? strval($content->ETag) : ""; $type = isset($content->Type) ? strval($content->Type) : ""; - $size = isset($content->Size) ? intval($content->Size) : 0; + $size = isset($content->Size) ? strval($content->Size) : "0"; $storageClass = isset($content->StorageClass) ? strval($content->StorageClass) : ""; $isLatest = isset($content->IsLatest) ? strval($content->IsLatest) : ""; $retList[] = new ObjectVersionInfo($key, $versionId, $lastModified, $eTag, $type, $size, $storageClass, $isLatest); diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php index f44c66a..39f1f29 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php @@ -48,7 +48,7 @@ class ListObjectsResult extends Result $lastModified = isset($content->LastModified) ? strval($content->LastModified) : ""; $eTag = isset($content->ETag) ? strval($content->ETag) : ""; $type = isset($content->Type) ? strval($content->Type) : ""; - $size = isset($content->Size) ? intval($content->Size) : 0; + $size = isset($content->Size) ? strval($content->Size) : "0"; $storageClass = isset($content->StorageClass) ? strval($content->StorageClass) : ""; $retList[] = new ObjectInfo($key, $lastModified, $eTag, $type, $size, $storageClass); } diff --git a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php index 092d94e..6641b5b 100644 --- a/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php +++ b/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php @@ -33,7 +33,7 @@ class ListPartsResult extends Result $partNumber = isset($part->PartNumber) ? intval($part->PartNumber) : ""; $lastModified = isset($part->LastModified) ? strval($part->LastModified) : ""; $eTag = isset($part->ETag) ? strval($part->ETag) : ""; - $size = isset($part->Size) ? intval($part->Size) : ""; + $size = isset($part->Size) ? strval($part->Size) : ""; $partList[] = new PartInfo($partNumber, $lastModified, $eTag, $size); } } diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php index 247294d..0cd6055 100644 --- a/vendor/composer/ClassLoader.php +++ b/vendor/composer/ClassLoader.php @@ -42,30 +42,75 @@ namespace Composer\Autoload; */ class ClassLoader { + /** @var ?string */ private $vendorDir; // PSR-4 + /** + * @var array[] + * @psalm-var array> + */ private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array> + */ private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array + */ private $fallbackDirsPsr4 = array(); // PSR-0 + /** + * @var array[] + * @psalm-var array> + */ private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array + */ private $fallbackDirsPsr0 = array(); + /** @var bool */ private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array + */ private $classMap = array(); + + /** @var bool */ private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array + */ private $missingClasses = array(); + + /** @var ?string */ private $apcuPrefix; + /** + * @var self[] + */ private static $registeredLoaders = array(); + /** + * @param ?string $vendorDir + */ public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; } + /** + * @return string[] + */ public function getPrefixes() { if (!empty($this->prefixesPsr0)) { @@ -75,28 +120,47 @@ class ClassLoader return array(); } + /** + * @return array[] + * @psalm-return array> + */ public function getPrefixesPsr4() { return $this->prefixDirsPsr4; } + /** + * @return array[] + * @psalm-return array + */ public function getFallbackDirs() { return $this->fallbackDirsPsr0; } + /** + * @return array[] + * @psalm-return array + */ public function getFallbackDirsPsr4() { return $this->fallbackDirsPsr4; } + /** + * @return string[] Array of classname => path + * @psalm-var array + */ public function getClassMap() { return $this->classMap; } /** - * @param array $classMap Class to filename map + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap + * + * @return void */ public function addClassMap(array $classMap) { @@ -111,9 +175,11 @@ class ClassLoader * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void */ public function add($prefix, $paths, $prepend = false) { @@ -156,11 +222,13 @@ class ClassLoader * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException + * + * @return void */ public function addPsr4($prefix, $paths, $prepend = false) { @@ -204,8 +272,10 @@ class ClassLoader * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 base directories + * + * @return void */ public function set($prefix, $paths) { @@ -220,10 +290,12 @@ class ClassLoader * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException + * + * @return void */ public function setPsr4($prefix, $paths) { @@ -243,6 +315,8 @@ class ClassLoader * Turns on searching the include path for class files. * * @param bool $useIncludePath + * + * @return void */ public function setUseIncludePath($useIncludePath) { @@ -265,6 +339,8 @@ class ClassLoader * that have not been registered with the class map. * * @param bool $classMapAuthoritative + * + * @return void */ public function setClassMapAuthoritative($classMapAuthoritative) { @@ -285,6 +361,8 @@ class ClassLoader * APCu prefix to use to cache found/not-found classes, if the extension is enabled. * * @param string|null $apcuPrefix + * + * @return void */ public function setApcuPrefix($apcuPrefix) { @@ -305,6 +383,8 @@ class ClassLoader * Registers this instance as an autoloader. * * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void */ public function register($prepend = false) { @@ -324,6 +404,8 @@ class ClassLoader /** * Unregisters this instance as an autoloader. + * + * @return void */ public function unregister() { @@ -338,7 +420,7 @@ class ClassLoader * Loads the given class or interface. * * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise + * @return true|null True if loaded, null otherwise */ public function loadClass($class) { @@ -347,6 +429,8 @@ class ClassLoader return true; } + + return null; } /** @@ -401,6 +485,11 @@ class ClassLoader return self::$registeredLoaders; } + /** + * @param string $class + * @param string $ext + * @return string|false + */ private function findFileWithExtension($class, $ext) { // PSR-4 lookup @@ -472,6 +561,10 @@ class ClassLoader * Scope isolated include. * * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + * @private */ function includeFile($file) { diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php index 66787f9..d50e0c9 100644 --- a/vendor/composer/InstalledVersions.php +++ b/vendor/composer/InstalledVersions.php @@ -1,867 +1,350 @@ + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ namespace Composer; use Composer\Autoload\ClassLoader; use Composer\Semver\VersionParser; - - - - - - - +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + */ class InstalledVersions { -private static $installed = array ( - 'root' => - array ( - 'pretty_version' => '6.x-dev', - 'version' => '6.9999999.9999999.9999999-dev', - 'aliases' => - array ( - ), - 'reference' => '14aa3f16683dfac34bebb749263ba76c8b7f81e4', - 'name' => 'liguangchun/think-library', - ), - 'versions' => - array ( - 'adbario/php-dot-notation' => - array ( - 'pretty_version' => '2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => 'eee4fc81296531e6aafba4c2bbccfc5adab1676e', - ), - 'alibabacloud/credentials' => - array ( - 'pretty_version' => '1.1.4', - 'version' => '1.1.4.0', - 'aliases' => - array ( - ), - 'reference' => 'e79d4151ad8924c0cf79d4fe0ec151b8d7663a25', - ), - 'alibabacloud/darabonba-openapi' => - array ( - 'pretty_version' => '0.1.8', - 'version' => '0.1.8.0', - 'aliases' => - array ( - ), - 'reference' => 'c577dea4415b6812d52d9e970a517932eed4a997', - ), - 'alibabacloud/dysmsapi-20170525' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '99a0098c844af962147a765abd4dc967ff311a1c', - ), - 'alibabacloud/endpoint-util' => - array ( - 'pretty_version' => '0.1.1', - 'version' => '0.1.1.0', - 'aliases' => - array ( - ), - 'reference' => 'f3fe88a25d8df4faa3b0ae14ff202a9cc094e6c5', - ), - 'alibabacloud/openapi-util' => - array ( - 'pretty_version' => '0.1.8', - 'version' => '0.1.8.0', - 'aliases' => - array ( - ), - 'reference' => '108ef765e9cd11bba0a185a5c12e5ad33621ff35', - ), - 'alibabacloud/tea' => - array ( - 'pretty_version' => '3.1.22', - 'version' => '3.1.22.0', - 'aliases' => - array ( - ), - 'reference' => 'f9c9b2c927253a1c23a5381cc655e41311be7f65', - ), - 'alibabacloud/tea-utils' => - array ( - 'pretty_version' => '0.2.14', - 'version' => '0.2.14.0', - 'aliases' => - array ( - ), - 'reference' => '381df15cb4bdb58dbf596f94869ffd2ef680eddd', - ), - 'aliyuncs/oss-sdk-php' => - array ( - 'pretty_version' => 'v2.4.2', - 'version' => '2.4.2.0', - 'aliases' => - array ( - ), - 'reference' => '0c9d902c33847c07efc66c4cdf823deaea8fc2b6', - ), - 'baidubce/bce-sdk-php' => - array ( - 'pretty_version' => '0.8.22', - 'version' => '0.8.22.0', - 'aliases' => - array ( - ), - 'reference' => 'c3164434c8f0fe53b6ffe4479def893465137282', - ), - 'ezyang/htmlpurifier' => - array ( - 'pretty_version' => 'v4.13.0', - 'version' => '4.13.0.0', - 'aliases' => - array ( - ), - 'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75', - ), - 'guzzle/batch' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/cache' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/common' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/guzzle' => - array ( - 'pretty_version' => 'v3.9.3', - 'version' => '3.9.3.0', - 'aliases' => - array ( - ), - 'reference' => '0645b70d953bc1c067bbc8d5bc53194706b628d9', - ), - 'guzzle/http' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/inflection' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/iterator' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/log' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/parser' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-async' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-backoff' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-cache' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-cookie' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-curlauth' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-error-response' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-history' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-log' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-md5' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-mock' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-oauth' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/service' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/stream' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzlehttp/command' => - array ( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => '2aaa2521a8f8269d6f5dfc13fe2af12c76921034', - ), - 'guzzlehttp/guzzle' => - array ( - 'pretty_version' => '6.3.0', - 'version' => '6.3.0.0', - 'aliases' => - array ( - ), - 'reference' => 'f4db5a78a5ea468d4831de7f0bf9d9415e348699', - ), - 'guzzlehttp/guzzle-services' => - array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '9e3abf20161cbf662d616cbb995f2811771759f7', - ), - 'guzzlehttp/promises' => - array ( - 'pretty_version' => 'v1.3.1', - 'version' => '1.3.1.0', - 'aliases' => - array ( - ), - 'reference' => 'a59da6cf61d80060647ff4d3eb2c03a2bc694646', - ), - 'guzzlehttp/psr7' => - array ( - 'pretty_version' => '1.4.2', - 'version' => '1.4.2.0', - 'aliases' => - array ( - ), - 'reference' => 'f5b8a8512e2b58b0071a7280e39f14f72e05d87c', - ), - 'league/flysystem' => - array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a', - ), - 'league/flysystem-cached-adapter' => - array ( - 'pretty_version' => '1.1.0', - 'version' => '1.1.0.0', - 'aliases' => - array ( - ), - 'reference' => 'd1925efb2207ac4be3ad0c40b8277175f99ffaff', - ), - 'league/mime-type-detection' => - array ( - 'pretty_version' => '1.7.0', - 'version' => '1.7.0.0', - 'aliases' => - array ( - ), - 'reference' => '3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3', - ), - 'liguangchun/think-library' => - array ( - 'pretty_version' => '6.x-dev', - 'version' => '6.9999999.9999999.9999999-dev', - 'aliases' => - array ( - ), - 'reference' => '14aa3f16683dfac34bebb749263ba76c8b7f81e4', - ), - 'lizhichao/one-sm' => - array ( - 'pretty_version' => '1.10', - 'version' => '1.10.0.0', - 'aliases' => - array ( - ), - 'reference' => '687a012a44a5bfd4d9143a0234e1060543be455a', - ), - 'maennchen/zipstream-php' => - array ( - 'pretty_version' => '2.1.0', - 'version' => '2.1.0.0', - 'aliases' => - array ( - ), - 'reference' => 'c4c5803cc1f93df3d2448478ef79394a5981cc58', - ), - 'markbaker/complex' => - array ( - 'pretty_version' => '2.0.3', - 'version' => '2.0.3.0', - 'aliases' => - array ( - ), - 'reference' => '6f724d7e04606fd8adaa4e3bb381c3e9db09c946', - ), - 'markbaker/matrix' => - array ( - 'pretty_version' => '2.1.3', - 'version' => '2.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '174395a901b5ba0925f1d790fa91bab531074b61', - ), - 'monolog/monolog' => - array ( - 'pretty_version' => '1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => 'fd8c787753b3a2ad11bc60c063cff1358a32a3b4', - ), - 'myclabs/php-enum' => - array ( - 'pretty_version' => '1.8.0', - 'version' => '1.8.0.0', - 'aliases' => - array ( - ), - 'reference' => '46cf3d8498b095bd33727b13fd5707263af99421', - ), - 'obs/esdk-obs-php' => - array ( - 'pretty_version' => '3.19.9', - 'version' => '3.19.9.0', - 'aliases' => - array ( - ), - 'reference' => '72ce758acf5475cbb245899a5c7409a03cbeb640', - ), - 'phpoffice/phpspreadsheet' => - array ( - 'pretty_version' => '1.17.1', - 'version' => '1.17.1.0', - 'aliases' => - array ( - ), - 'reference' => 'c55269cb06911575a126dc225a05c0e4626e5fb4', - ), - 'psr/cache' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', - ), - 'psr/container' => - array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', - ), - 'psr/http-client' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621', - ), - 'psr/http-factory' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be', - ), - 'psr/http-message' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363', - ), - 'psr/http-message-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/log' => - array ( - 'pretty_version' => '1.1.4', - 'version' => '1.1.4.0', - 'aliases' => - array ( - ), - 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', - ), - 'psr/log-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0.0', - ), - ), - 'psr/simple-cache' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', - ), - 'qcloud/cos-sdk-v5' => - array ( - 'pretty_version' => 'v2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => 'e67ad8143695192ee206bcbcafc78c08da92c621', - ), - 'qiniu/php-sdk' => - array ( - 'pretty_version' => 'v7.3.0', - 'version' => '7.3.0.0', - 'aliases' => - array ( - ), - 'reference' => '0a461e13b09545b23df361843c6a65fdd3a26426', - ), - 'symfony/event-dispatcher' => - array ( - 'pretty_version' => 'v2.8.52', - 'version' => '2.8.52.0', - 'aliases' => - array ( - ), - 'reference' => 'a77e974a5fecb4398833b0709210e3d5e334ffb0', - ), - 'symfony/polyfill-mbstring' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '2df51500adbaebdc4c38dea4c89a2e131c45c8a1', - ), - 'symfony/polyfill-php72' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976', - ), - 'symfony/polyfill-php80' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => 'eca0bf41ed421bed1b57c4958bab16aa86b757d0', - ), - 'symfony/var-dumper' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => '31ea689a8e7d2410016b0d25fc15a1ba05a6e2e0', - ), - 'topthink/framework' => - array ( - 'pretty_version' => 'v6.0.8', - 'version' => '6.0.8.0', - 'aliases' => - array ( - ), - 'reference' => '4789343672aef06d571d556da369c0e156609bce', - ), - 'topthink/think-helper' => - array ( - 'pretty_version' => 'v3.1.4', - 'version' => '3.1.4.0', - 'aliases' => - array ( - ), - 'reference' => 'c28d37743bda4a0455286ca85b17b5791d626e10', - ), - 'topthink/think-orm' => - array ( - 'pretty_version' => 'v2.0.40', - 'version' => '2.0.40.0', - 'aliases' => - array ( - ), - 'reference' => '1119d979b850849f3725856460cf108eec1c3eb8', - ), - 'upyun/sdk' => - array ( - 'pretty_version' => '3.5.0', - 'version' => '3.5.0.0', - 'aliases' => - array ( - ), - 'reference' => 'c9f824626552c32b987de4ac7f136e0e21cca962', - ), - ), -); -private static $canGetVendors; -private static $installedByVendor = array(); - - - - - - - -public static function getInstalledPackages() -{ -$packages = array(); -foreach (self::getInstalled() as $installed) { -$packages[] = array_keys($installed['versions']); -} - -if (1 === \count($packages)) { -return $packages[0]; -} - -return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); -} - - - - - - - - - -public static function isInstalled($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (isset($installed['versions'][$packageName])) { -return true; -} -} - -return false; -} - - - - - - - - - - - - - - -public static function satisfies(VersionParser $parser, $packageName, $constraint) -{ -$constraint = $parser->parseConstraints($constraint); -$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - -return $provided->matches($constraint); -} - - - - - - - - - - -public static function getVersionRanges($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -$ranges = array(); -if (isset($installed['versions'][$packageName]['pretty_version'])) { -$ranges[] = $installed['versions'][$packageName]['pretty_version']; -} -if (array_key_exists('aliases', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); -} -if (array_key_exists('replaced', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); -} -if (array_key_exists('provided', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); -} - -return implode(' || ', $ranges); -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getVersion($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['version'])) { -return null; -} - -return $installed['versions'][$packageName]['version']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getPrettyVersion($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['pretty_version'])) { -return null; -} - -return $installed['versions'][$packageName]['pretty_version']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getReference($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['reference'])) { -return null; -} - -return $installed['versions'][$packageName]['reference']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getRootPackage() -{ -$installed = self::getInstalled(); - -return $installed[0]['root']; -} - - - - - - - -public static function getRawData() -{ -return self::$installed; -} - - - - - - - - - - - - - - - - - - - -public static function reload($data) -{ -self::$installed = $data; -self::$installedByVendor = array(); -} - - - - - -private static function getInstalled() -{ -if (null === self::$canGetVendors) { -self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); -} - -$installed = array(); - -if (self::$canGetVendors) { -foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { -if (isset(self::$installedByVendor[$vendorDir])) { -$installed[] = self::$installedByVendor[$vendorDir]; -} elseif (is_file($vendorDir.'/composer/installed.php')) { -$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; -} -} -} - -$installed[] = self::$installed; - -return $installed; -} + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } } diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index c69eca3..33561a7 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -36,10 +36,6 @@ return array( 'AlibabaCloud\\Endpoint\\Endpoint' => $vendorDir . '/alibabacloud/endpoint-util/src/Endpoint.php', 'AlibabaCloud\\OpenApiUtil\\OpenApiUtilClient' => $vendorDir . '/alibabacloud/openapi-util/src/OpenApiUtilClient.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Dysmsapi' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddShortUrlRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddShortUrlResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddShortUrlResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddShortUrlResponseBody\\data' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsSignRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsSignRequest\\signFileList' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest/signFileList.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsSignResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponse.php', @@ -47,13 +43,6 @@ return array( 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsTemplateRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsTemplateResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsTemplateResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\CreateShortParamRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamRequest.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\CreateShortParamResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponse.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\CreateShortParamResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\CreateShortParamResponseBody\\data' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody/data.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteShortUrlRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteShortUrlResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteShortUrlResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteSmsSignRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteSmsSignResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteSmsSignResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php', @@ -72,10 +61,6 @@ return array( 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySendDetailsResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySendDetailsResponseBody\\smsSendDetailDTOs' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody/smsSendDetailDTOs.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySendDetailsResponseBody\\smsSendDetailDTOs\\smsSendDetailDTO' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody/smsSendDetailDTOs/smsSendDetailDTO.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QueryShortUrlRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlRequest.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QueryShortUrlResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponse.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QueryShortUrlResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QueryShortUrlResponseBody\\data' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody/data.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySmsSignRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySmsSignResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySmsSignResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignResponseBody.php', @@ -85,6 +70,10 @@ return array( 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendBatchSmsRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendBatchSmsResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendBatchSmsResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsResponseBody.php', + 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendMessageToGlobeRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeRequest.php', + 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendMessageToGlobeResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponse.php', + 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendMessageToGlobeResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody.php', + 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendMessageToGlobeResponseBody\\numberDetail' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody/numberDetail.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendSmsRequest' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendSmsRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendSmsResponse' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendSmsResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendSmsResponseBody' => $vendorDir . '/alibabacloud/dysmsapi-20170525/src/Models/SendSmsResponseBody.php', @@ -978,6 +967,7 @@ return array( 'League\\Flysystem\\ConfigAwareTrait' => $vendorDir . '/league/flysystem/src/ConfigAwareTrait.php', 'League\\Flysystem\\ConnectionErrorException' => $vendorDir . '/league/flysystem/src/ConnectionErrorException.php', 'League\\Flysystem\\ConnectionRuntimeException' => $vendorDir . '/league/flysystem/src/ConnectionRuntimeException.php', + 'League\\Flysystem\\CorruptedPathDetected' => $vendorDir . '/league/flysystem/src/CorruptedPathDetected.php', 'League\\Flysystem\\Directory' => $vendorDir . '/league/flysystem/src/Directory.php', 'League\\Flysystem\\Exception' => $vendorDir . '/league/flysystem/src/Exception.php', 'League\\Flysystem\\File' => $vendorDir . '/league/flysystem/src/File.php', @@ -1016,6 +1006,7 @@ return array( 'League\\MimeTypeDetection\\FinfoMimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/FinfoMimeTypeDetector.php', 'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php', 'League\\MimeTypeDetection\\MimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/MimeTypeDetector.php', + 'League\\MimeTypeDetection\\OverridingExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php', 'Matrix\\Builder' => $vendorDir . '/markbaker/matrix/classes/src/Builder.php', 'Matrix\\Decomposition\\Decomposition' => $vendorDir . '/markbaker/matrix/classes/src/Decomposition/Decomposition.php', 'Matrix\\Decomposition\\LU' => $vendorDir . '/markbaker/matrix/classes/src/Decomposition/LU.php', @@ -1561,33 +1552,32 @@ return array( 'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php', 'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php', 'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php', - 'Qcloud\\Cos\\Client' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php', - 'Qcloud\\Cos\\CommandToRequestTransformer' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/CommandToRequestTransformer.php', - 'Qcloud\\Cos\\Copy' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Copy.php', - 'Qcloud\\Cos\\ExceptionMiddleware' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionMiddleware.php', - 'Qcloud\\Cos\\ExceptionParser' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionParser.php', - 'Qcloud\\Cos\\Exception\\CosException' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/CosException.php', - 'Qcloud\\Cos\\Exception\\ServiceResponseException' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/ServiceResponseException.php', - 'Qcloud\\Cos\\ImageParamTemplate\\BlindWatermarkTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/BlindWatermarkTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\CIParamTransformation' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/CIParamTransformation.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageMogrTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageMogrTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageQrcodeTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageQrcodeTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageStyleTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageStyleTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageViewTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageViewTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageWatermarkTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageWatermarkTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\PicOperationsTransformation' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/PicOperationsTransformation.php', - 'Qcloud\\Cos\\ImageParamTemplate\\TextWatermarkTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/TextWatermarkTemplate.php', - 'Qcloud\\Cos\\MultipartUpload' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/MultipartUpload.php', - 'Qcloud\\Cos\\RangeDownload' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/RangeDownload.php', - 'Qcloud\\Cos\\Request\\BodyLocation' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Request/BodyLocation.php', - 'Qcloud\\Cos\\ResultTransformer' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ResultTransformer.php', - 'Qcloud\\Cos\\Serializer' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Serializer.php', - 'Qcloud\\Cos\\Service' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Service.php', - 'Qcloud\\Cos\\Signature' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Signature.php', - 'Qcloud\\Cos\\SignatureMiddleware' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/SignatureMiddleware.php', - 'Qcloud\\Cos\\Tests\\COSTest' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Tests/COSTest.php', - 'Qcloud\\Cos\\Tests\\TestHelper' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Tests/TestHelper.php', + 'Qcloud\\Cos\\Client' => $vendorDir . '/qcloud/cos-sdk-v5/src/Client.php', + 'Qcloud\\Cos\\CommandToRequestTransformer' => $vendorDir . '/qcloud/cos-sdk-v5/src/CommandToRequestTransformer.php', + 'Qcloud\\Cos\\Copy' => $vendorDir . '/qcloud/cos-sdk-v5/src/Copy.php', + 'Qcloud\\Cos\\Descriptions' => $vendorDir . '/qcloud/cos-sdk-v5/src/Descriptions.php', + 'Qcloud\\Cos\\ExceptionMiddleware' => $vendorDir . '/qcloud/cos-sdk-v5/src/ExceptionMiddleware.php', + 'Qcloud\\Cos\\ExceptionParser' => $vendorDir . '/qcloud/cos-sdk-v5/src/ExceptionParser.php', + 'Qcloud\\Cos\\Exception\\CosException' => $vendorDir . '/qcloud/cos-sdk-v5/src/Exception/CosException.php', + 'Qcloud\\Cos\\Exception\\ServiceResponseException' => $vendorDir . '/qcloud/cos-sdk-v5/src/Exception/ServiceResponseException.php', + 'Qcloud\\Cos\\ImageParamTemplate\\BlindWatermarkTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/BlindWatermarkTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\CIParamTransformation' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/CIParamTransformation.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageMogrTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageMogrTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageQrcodeTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageQrcodeTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageStyleTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageStyleTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageViewTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageViewTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageWatermarkTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageWatermarkTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\PicOperationsTransformation' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/PicOperationsTransformation.php', + 'Qcloud\\Cos\\ImageParamTemplate\\TextWatermarkTemplate' => $vendorDir . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/TextWatermarkTemplate.php', + 'Qcloud\\Cos\\MultipartUpload' => $vendorDir . '/qcloud/cos-sdk-v5/src/MultipartUpload.php', + 'Qcloud\\Cos\\RangeDownload' => $vendorDir . '/qcloud/cos-sdk-v5/src/RangeDownload.php', + 'Qcloud\\Cos\\Request\\BodyLocation' => $vendorDir . '/qcloud/cos-sdk-v5/src/Request/BodyLocation.php', + 'Qcloud\\Cos\\ResultTransformer' => $vendorDir . '/qcloud/cos-sdk-v5/src/ResultTransformer.php', + 'Qcloud\\Cos\\Serializer' => $vendorDir . '/qcloud/cos-sdk-v5/src/Serializer.php', + 'Qcloud\\Cos\\Service' => $vendorDir . '/qcloud/cos-sdk-v5/src/Service.php', + 'Qcloud\\Cos\\Signature' => $vendorDir . '/qcloud/cos-sdk-v5/src/Signature.php', + 'Qcloud\\Cos\\SignatureMiddleware' => $vendorDir . '/qcloud/cos-sdk-v5/src/SignatureMiddleware.php', 'Qiniu\\Auth' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Auth.php', 'Qiniu\\Cdn\\CdnManager' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php', 'Qiniu\\Config' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/Config.php', @@ -1827,6 +1817,7 @@ return array( 'think\\db\\connector\\Sqlsrv' => $vendorDir . '/topthink/think-orm/src/db/connector/Sqlsrv.php', 'think\\db\\exception\\BindParamException' => $vendorDir . '/topthink/think-orm/src/db/exception/BindParamException.php', 'think\\db\\exception\\DataNotFoundException' => $vendorDir . '/topthink/think-orm/src/db/exception/DataNotFoundException.php', + 'think\\db\\exception\\DbEventException' => $vendorDir . '/topthink/think-orm/src/db/exception/DbEventException.php', 'think\\db\\exception\\DbException' => $vendorDir . '/topthink/think-orm/src/db/exception/DbException.php', 'think\\db\\exception\\InvalidArgumentException' => $vendorDir . '/topthink/think-orm/src/db/exception/InvalidArgumentException.php', 'think\\db\\exception\\ModelEventException' => $vendorDir . '/topthink/think-orm/src/db/exception/ModelEventException.php', @@ -1893,6 +1884,7 @@ return array( 'think\\model\\concern\\RelationShip' => $vendorDir . '/topthink/think-orm/src/model/concern/RelationShip.php', 'think\\model\\concern\\SoftDelete' => $vendorDir . '/topthink/think-orm/src/model/concern/SoftDelete.php', 'think\\model\\concern\\TimeStamp' => $vendorDir . '/topthink/think-orm/src/model/concern/TimeStamp.php', + 'think\\model\\concern\\Virtual' => $vendorDir . '/topthink/think-orm/src/model/concern/Virtual.php', 'think\\model\\relation\\BelongsTo' => $vendorDir . '/topthink/think-orm/src/model/relation/BelongsTo.php', 'think\\model\\relation\\BelongsToMany' => $vendorDir . '/topthink/think-orm/src/model/relation/BelongsToMany.php', 'think\\model\\relation\\HasMany' => $vendorDir . '/topthink/think-orm/src/model/relation/HasMany.php', diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index a1b36cd..866400a 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -6,8 +6,8 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( - 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', + 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', @@ -16,23 +16,6 @@ return array( '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', '9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php', '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', - '3af723442581d6c310bf44543f9f5c60' => $vendorDir . '/markbaker/matrix/classes/src/Functions/adjoint.php', - 'd803221834c8b57fec95debb5406a797' => $vendorDir . '/markbaker/matrix/classes/src/Functions/antidiagonal.php', - '4714cafbd3be4c72c274a25eae9396bb' => $vendorDir . '/markbaker/matrix/classes/src/Functions/cofactors.php', - '89719dc7c77436609d1c1c31f0797b8f' => $vendorDir . '/markbaker/matrix/classes/src/Functions/determinant.php', - 'c28af79ec7730859d83f2d4310b8dd0b' => $vendorDir . '/markbaker/matrix/classes/src/Functions/diagonal.php', - 'c5d82bf1ac485e445f911e55789ab4e6' => $vendorDir . '/markbaker/matrix/classes/src/Functions/identity.php', - '0d2d594de24a247f7a33499e933aa21e' => $vendorDir . '/markbaker/matrix/classes/src/Functions/inverse.php', - 'f37c25880804a014ef40c8bffbab1b10' => $vendorDir . '/markbaker/matrix/classes/src/Functions/minors.php', - 'd6e4e42171df0dbea253b3067fefda38' => $vendorDir . '/markbaker/matrix/classes/src/Functions/trace.php', - '2c9b19fa954fd3e6fcc7e7a1383caddd' => $vendorDir . '/markbaker/matrix/classes/src/Functions/transpose.php', - '0a538fc9b897450ec362480ebbebe94f' => $vendorDir . '/markbaker/matrix/classes/src/Operations/add.php', - 'f0843f7f4089ec2343c7445544356385' => $vendorDir . '/markbaker/matrix/classes/src/Operations/directsum.php', - 'ad3e8c29aa16d134661a414265677b61' => $vendorDir . '/markbaker/matrix/classes/src/Operations/subtract.php', - '8d37dad4703fab45bfec9dd0bbf3278e' => $vendorDir . '/markbaker/matrix/classes/src/Operations/multiply.php', - '4888a6f58c08148ebe17682f9ce9b2a8' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideby.php', - 'eef6fa3879d3efa347cd24d5eb348f85' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideinto.php', - '35fab96057f1bf5e7aba31a8a6d5fdde' => $vendorDir . '/topthink/think-orm/stubs/load_stubs.php', 'abede361264e2ae69ec1eee813a101af' => $vendorDir . '/markbaker/complex/classes/src/functions/abs.php', '21a5860fbef5be28db5ddfbc3cca67c4' => $vendorDir . '/markbaker/complex/classes/src/functions/acos.php', '1546e3f9d127f2a9bb2d1b6c31c26ef1' => $vendorDir . '/markbaker/complex/classes/src/functions/acosh.php', @@ -75,8 +58,25 @@ return array( '883af48563631547925fa4c3b48ead07' => $vendorDir . '/markbaker/complex/classes/src/operations/multiply.php', 'f190e3308e6ca23234a2875edc985c03' => $vendorDir . '/markbaker/complex/classes/src/operations/divideby.php', 'ac9e33ce6841aa5bf5d16d465a2f03a7' => $vendorDir . '/markbaker/complex/classes/src/operations/divideinto.php', - 'f67964341ef83e59f1cc6a3916599312' => $vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Common.php', + '3af723442581d6c310bf44543f9f5c60' => $vendorDir . '/markbaker/matrix/classes/src/Functions/adjoint.php', + 'd803221834c8b57fec95debb5406a797' => $vendorDir . '/markbaker/matrix/classes/src/Functions/antidiagonal.php', + '4714cafbd3be4c72c274a25eae9396bb' => $vendorDir . '/markbaker/matrix/classes/src/Functions/cofactors.php', + '89719dc7c77436609d1c1c31f0797b8f' => $vendorDir . '/markbaker/matrix/classes/src/Functions/determinant.php', + 'c28af79ec7730859d83f2d4310b8dd0b' => $vendorDir . '/markbaker/matrix/classes/src/Functions/diagonal.php', + 'c5d82bf1ac485e445f911e55789ab4e6' => $vendorDir . '/markbaker/matrix/classes/src/Functions/identity.php', + '0d2d594de24a247f7a33499e933aa21e' => $vendorDir . '/markbaker/matrix/classes/src/Functions/inverse.php', + 'f37c25880804a014ef40c8bffbab1b10' => $vendorDir . '/markbaker/matrix/classes/src/Functions/minors.php', + 'd6e4e42171df0dbea253b3067fefda38' => $vendorDir . '/markbaker/matrix/classes/src/Functions/trace.php', + '2c9b19fa954fd3e6fcc7e7a1383caddd' => $vendorDir . '/markbaker/matrix/classes/src/Functions/transpose.php', + '0a538fc9b897450ec362480ebbebe94f' => $vendorDir . '/markbaker/matrix/classes/src/Operations/add.php', + 'f0843f7f4089ec2343c7445544356385' => $vendorDir . '/markbaker/matrix/classes/src/Operations/directsum.php', + 'ad3e8c29aa16d134661a414265677b61' => $vendorDir . '/markbaker/matrix/classes/src/Operations/subtract.php', + '8d37dad4703fab45bfec9dd0bbf3278e' => $vendorDir . '/markbaker/matrix/classes/src/Operations/multiply.php', + '4888a6f58c08148ebe17682f9ce9b2a8' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideby.php', + 'eef6fa3879d3efa347cd24d5eb348f85' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideinto.php', + '35fab96057f1bf5e7aba31a8a6d5fdde' => $vendorDir . '/topthink/think-orm/stubs/load_stubs.php', + 'cd5441689b14144e5573bf989ee47b34' => $vendorDir . '/qcloud/cos-sdk-v5/src/Common.php', '841780ea2e1d6545ea3a253239d59c05' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/functions.php', - 'a9533db9311a767cb2750dc0d2fab4f3' => $baseDir . '/src/common.php', - 'c2e070db87d2b104b8a667c2b66afba0' => $baseDir . '/src/service/taobao/bin/TopSdk.php', + '8287b9658cb007bdb2ed347290f0f420' => $baseDir . '/src/common.php', + '0310e7c408dc6480577947a36c5a1419' => $baseDir . '/src/service/taobao/bin/TopSdk.php', ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index c52a6dc..dfbc01e 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -15,7 +15,7 @@ return array( 'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'), 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), 'Qiniu\\' => array($vendorDir . '/qiniu/php-sdk/src/Qiniu'), - 'Qcloud\\Cos\\' => array($vendorDir . '/qcloud/cos-sdk-v5/src/Qcloud/Cos'), + 'Qcloud\\Cos\\' => array($vendorDir . '/qcloud/cos-sdk-v5/src'), 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 2cf51c1..eef80f7 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -7,8 +7,8 @@ namespace Composer\Autoload; class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa { public static $files = array ( - 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', + 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', @@ -17,23 +17,6 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', '9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php', '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', - '3af723442581d6c310bf44543f9f5c60' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/adjoint.php', - 'd803221834c8b57fec95debb5406a797' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/antidiagonal.php', - '4714cafbd3be4c72c274a25eae9396bb' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/cofactors.php', - '89719dc7c77436609d1c1c31f0797b8f' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/determinant.php', - 'c28af79ec7730859d83f2d4310b8dd0b' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/diagonal.php', - 'c5d82bf1ac485e445f911e55789ab4e6' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/identity.php', - '0d2d594de24a247f7a33499e933aa21e' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/inverse.php', - 'f37c25880804a014ef40c8bffbab1b10' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/minors.php', - 'd6e4e42171df0dbea253b3067fefda38' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/trace.php', - '2c9b19fa954fd3e6fcc7e7a1383caddd' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/transpose.php', - '0a538fc9b897450ec362480ebbebe94f' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/add.php', - 'f0843f7f4089ec2343c7445544356385' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/directsum.php', - 'ad3e8c29aa16d134661a414265677b61' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/subtract.php', - '8d37dad4703fab45bfec9dd0bbf3278e' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/multiply.php', - '4888a6f58c08148ebe17682f9ce9b2a8' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideby.php', - 'eef6fa3879d3efa347cd24d5eb348f85' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideinto.php', - '35fab96057f1bf5e7aba31a8a6d5fdde' => __DIR__ . '/..' . '/topthink/think-orm/stubs/load_stubs.php', 'abede361264e2ae69ec1eee813a101af' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/abs.php', '21a5860fbef5be28db5ddfbc3cca67c4' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acos.php', '1546e3f9d127f2a9bb2d1b6c31c26ef1' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acosh.php', @@ -76,10 +59,27 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa '883af48563631547925fa4c3b48ead07' => __DIR__ . '/..' . '/markbaker/complex/classes/src/operations/multiply.php', 'f190e3308e6ca23234a2875edc985c03' => __DIR__ . '/..' . '/markbaker/complex/classes/src/operations/divideby.php', 'ac9e33ce6841aa5bf5d16d465a2f03a7' => __DIR__ . '/..' . '/markbaker/complex/classes/src/operations/divideinto.php', - 'f67964341ef83e59f1cc6a3916599312' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Common.php', + '3af723442581d6c310bf44543f9f5c60' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/adjoint.php', + 'd803221834c8b57fec95debb5406a797' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/antidiagonal.php', + '4714cafbd3be4c72c274a25eae9396bb' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/cofactors.php', + '89719dc7c77436609d1c1c31f0797b8f' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/determinant.php', + 'c28af79ec7730859d83f2d4310b8dd0b' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/diagonal.php', + 'c5d82bf1ac485e445f911e55789ab4e6' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/identity.php', + '0d2d594de24a247f7a33499e933aa21e' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/inverse.php', + 'f37c25880804a014ef40c8bffbab1b10' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/minors.php', + 'd6e4e42171df0dbea253b3067fefda38' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/trace.php', + '2c9b19fa954fd3e6fcc7e7a1383caddd' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/transpose.php', + '0a538fc9b897450ec362480ebbebe94f' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/add.php', + 'f0843f7f4089ec2343c7445544356385' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/directsum.php', + 'ad3e8c29aa16d134661a414265677b61' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/subtract.php', + '8d37dad4703fab45bfec9dd0bbf3278e' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/multiply.php', + '4888a6f58c08148ebe17682f9ce9b2a8' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideby.php', + 'eef6fa3879d3efa347cd24d5eb348f85' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideinto.php', + '35fab96057f1bf5e7aba31a8a6d5fdde' => __DIR__ . '/..' . '/topthink/think-orm/stubs/load_stubs.php', + 'cd5441689b14144e5573bf989ee47b34' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Common.php', '841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php', - 'a9533db9311a767cb2750dc0d2fab4f3' => __DIR__ . '/../..' . '/src/common.php', - 'c2e070db87d2b104b8a667c2b66afba0' => __DIR__ . '/../..' . '/src/service/taobao/bin/TopSdk.php', + '8287b9658cb007bdb2ed347290f0f420' => __DIR__ . '/../..' . '/src/common.php', + '0310e7c408dc6480577947a36c5a1419' => __DIR__ . '/../..' . '/src/service/taobao/bin/TopSdk.php', ); public static $prefixLengthsPsr4 = array ( @@ -206,7 +206,7 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa ), 'Qcloud\\Cos\\' => array ( - 0 => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos', + 0 => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src', ), 'Psr\\SimpleCache\\' => array ( @@ -394,10 +394,6 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'AlibabaCloud\\Endpoint\\Endpoint' => __DIR__ . '/..' . '/alibabacloud/endpoint-util/src/Endpoint.php', 'AlibabaCloud\\OpenApiUtil\\OpenApiUtilClient' => __DIR__ . '/..' . '/alibabacloud/openapi-util/src/OpenApiUtilClient.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Dysmsapi' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Dysmsapi.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddShortUrlRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlRequest.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddShortUrlResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponse.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddShortUrlResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddShortUrlResponseBody\\data' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddShortUrlResponseBody/data.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsSignRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsSignRequest\\signFileList' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignRequest/signFileList.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsSignResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsSignResponse.php', @@ -405,13 +401,6 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsTemplateRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsTemplateResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\AddSmsTemplateResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/AddSmsTemplateResponseBody.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\CreateShortParamRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamRequest.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\CreateShortParamResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponse.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\CreateShortParamResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\CreateShortParamResponseBody\\data' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/CreateShortParamResponseBody/data.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteShortUrlRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlRequest.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteShortUrlResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponse.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteShortUrlResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteShortUrlResponseBody.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteSmsSignRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteSmsSignResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\DeleteSmsSignResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/DeleteSmsSignResponseBody.php', @@ -430,10 +419,6 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySendDetailsResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySendDetailsResponseBody\\smsSendDetailDTOs' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody/smsSendDetailDTOs.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySendDetailsResponseBody\\smsSendDetailDTOs\\smsSendDetailDTO' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySendDetailsResponseBody/smsSendDetailDTOs/smsSendDetailDTO.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QueryShortUrlRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlRequest.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QueryShortUrlResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponse.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QueryShortUrlResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody.php', - 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QueryShortUrlResponseBody\\data' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QueryShortUrlResponseBody/data.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySmsSignRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySmsSignResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\QuerySmsSignResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/QuerySmsSignResponseBody.php', @@ -443,6 +428,10 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendBatchSmsRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendBatchSmsResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendBatchSmsResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendBatchSmsResponseBody.php', + 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendMessageToGlobeRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeRequest.php', + 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendMessageToGlobeResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponse.php', + 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendMessageToGlobeResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody.php', + 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendMessageToGlobeResponseBody\\numberDetail' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendMessageToGlobeResponseBody/numberDetail.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendSmsRequest' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendSmsRequest.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendSmsResponse' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendSmsResponse.php', 'AlibabaCloud\\SDK\\Dysmsapi\\V20170525\\Models\\SendSmsResponseBody' => __DIR__ . '/..' . '/alibabacloud/dysmsapi-20170525/src/Models/SendSmsResponseBody.php', @@ -1336,6 +1325,7 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'League\\Flysystem\\ConfigAwareTrait' => __DIR__ . '/..' . '/league/flysystem/src/ConfigAwareTrait.php', 'League\\Flysystem\\ConnectionErrorException' => __DIR__ . '/..' . '/league/flysystem/src/ConnectionErrorException.php', 'League\\Flysystem\\ConnectionRuntimeException' => __DIR__ . '/..' . '/league/flysystem/src/ConnectionRuntimeException.php', + 'League\\Flysystem\\CorruptedPathDetected' => __DIR__ . '/..' . '/league/flysystem/src/CorruptedPathDetected.php', 'League\\Flysystem\\Directory' => __DIR__ . '/..' . '/league/flysystem/src/Directory.php', 'League\\Flysystem\\Exception' => __DIR__ . '/..' . '/league/flysystem/src/Exception.php', 'League\\Flysystem\\File' => __DIR__ . '/..' . '/league/flysystem/src/File.php', @@ -1374,6 +1364,7 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'League\\MimeTypeDetection\\FinfoMimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/FinfoMimeTypeDetector.php', 'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php', 'League\\MimeTypeDetection\\MimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/MimeTypeDetector.php', + 'League\\MimeTypeDetection\\OverridingExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php', 'Matrix\\Builder' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Builder.php', 'Matrix\\Decomposition\\Decomposition' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Decomposition/Decomposition.php', 'Matrix\\Decomposition\\LU' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Decomposition/LU.php', @@ -1919,33 +1910,32 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php', 'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php', 'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php', - 'Qcloud\\Cos\\Client' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php', - 'Qcloud\\Cos\\CommandToRequestTransformer' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/CommandToRequestTransformer.php', - 'Qcloud\\Cos\\Copy' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Copy.php', - 'Qcloud\\Cos\\ExceptionMiddleware' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionMiddleware.php', - 'Qcloud\\Cos\\ExceptionParser' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionParser.php', - 'Qcloud\\Cos\\Exception\\CosException' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/CosException.php', - 'Qcloud\\Cos\\Exception\\ServiceResponseException' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/ServiceResponseException.php', - 'Qcloud\\Cos\\ImageParamTemplate\\BlindWatermarkTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/BlindWatermarkTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\CIParamTransformation' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/CIParamTransformation.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageMogrTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageMogrTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageQrcodeTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageQrcodeTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageStyleTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageStyleTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageViewTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageViewTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\ImageWatermarkTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageWatermarkTemplate.php', - 'Qcloud\\Cos\\ImageParamTemplate\\PicOperationsTransformation' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/PicOperationsTransformation.php', - 'Qcloud\\Cos\\ImageParamTemplate\\TextWatermarkTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/TextWatermarkTemplate.php', - 'Qcloud\\Cos\\MultipartUpload' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/MultipartUpload.php', - 'Qcloud\\Cos\\RangeDownload' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/RangeDownload.php', - 'Qcloud\\Cos\\Request\\BodyLocation' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Request/BodyLocation.php', - 'Qcloud\\Cos\\ResultTransformer' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/ResultTransformer.php', - 'Qcloud\\Cos\\Serializer' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Serializer.php', - 'Qcloud\\Cos\\Service' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Service.php', - 'Qcloud\\Cos\\Signature' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Signature.php', - 'Qcloud\\Cos\\SignatureMiddleware' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/SignatureMiddleware.php', - 'Qcloud\\Cos\\Tests\\COSTest' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Tests/COSTest.php', - 'Qcloud\\Cos\\Tests\\TestHelper' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Qcloud/Cos/Tests/TestHelper.php', + 'Qcloud\\Cos\\Client' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Client.php', + 'Qcloud\\Cos\\CommandToRequestTransformer' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/CommandToRequestTransformer.php', + 'Qcloud\\Cos\\Copy' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Copy.php', + 'Qcloud\\Cos\\Descriptions' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Descriptions.php', + 'Qcloud\\Cos\\ExceptionMiddleware' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ExceptionMiddleware.php', + 'Qcloud\\Cos\\ExceptionParser' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ExceptionParser.php', + 'Qcloud\\Cos\\Exception\\CosException' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Exception/CosException.php', + 'Qcloud\\Cos\\Exception\\ServiceResponseException' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Exception/ServiceResponseException.php', + 'Qcloud\\Cos\\ImageParamTemplate\\BlindWatermarkTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/BlindWatermarkTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\CIParamTransformation' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/CIParamTransformation.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageMogrTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageMogrTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageQrcodeTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageQrcodeTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageStyleTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageStyleTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageViewTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageViewTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\ImageWatermarkTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageWatermarkTemplate.php', + 'Qcloud\\Cos\\ImageParamTemplate\\PicOperationsTransformation' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/PicOperationsTransformation.php', + 'Qcloud\\Cos\\ImageParamTemplate\\TextWatermarkTemplate' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ImageParamTemplate/TextWatermarkTemplate.php', + 'Qcloud\\Cos\\MultipartUpload' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/MultipartUpload.php', + 'Qcloud\\Cos\\RangeDownload' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/RangeDownload.php', + 'Qcloud\\Cos\\Request\\BodyLocation' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Request/BodyLocation.php', + 'Qcloud\\Cos\\ResultTransformer' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/ResultTransformer.php', + 'Qcloud\\Cos\\Serializer' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Serializer.php', + 'Qcloud\\Cos\\Service' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Service.php', + 'Qcloud\\Cos\\Signature' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Signature.php', + 'Qcloud\\Cos\\SignatureMiddleware' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/SignatureMiddleware.php', 'Qiniu\\Auth' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Auth.php', 'Qiniu\\Cdn\\CdnManager' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Cdn/CdnManager.php', 'Qiniu\\Config' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/Config.php', @@ -2185,6 +2175,7 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'think\\db\\connector\\Sqlsrv' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Sqlsrv.php', 'think\\db\\exception\\BindParamException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/BindParamException.php', 'think\\db\\exception\\DataNotFoundException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/DataNotFoundException.php', + 'think\\db\\exception\\DbEventException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/DbEventException.php', 'think\\db\\exception\\DbException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/DbException.php', 'think\\db\\exception\\InvalidArgumentException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/InvalidArgumentException.php', 'think\\db\\exception\\ModelEventException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/ModelEventException.php', @@ -2251,6 +2242,7 @@ class ComposerStaticInitd0fae8d29dbee2b634f3a8d96d8353fa 'think\\model\\concern\\RelationShip' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/RelationShip.php', 'think\\model\\concern\\SoftDelete' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/SoftDelete.php', 'think\\model\\concern\\TimeStamp' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/TimeStamp.php', + 'think\\model\\concern\\Virtual' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/Virtual.php', 'think\\model\\relation\\BelongsTo' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/BelongsTo.php', 'think\\model\\relation\\BelongsToMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/BelongsToMany.php', 'think\\model\\relation\\HasMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasMany.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 81ce77b..7ced341 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -153,17 +153,17 @@ }, { "name": "alibabacloud/darabonba-openapi", - "version": "0.1.8", - "version_normalized": "0.1.8.0", + "version": "0.1.9", + "version_normalized": "0.1.9.0", "source": { "type": "git", "url": "https://github.com/alibabacloud-sdk-php/darabonba-openapi.git", - "reference": "c577dea4415b6812d52d9e970a517932eed4a997" + "reference": "6f03803394ab48ef54a498e079a3575881e7fc34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alibabacloud-sdk-php/darabonba-openapi/zipball/c577dea4415b6812d52d9e970a517932eed4a997", - "reference": "c577dea4415b6812d52d9e970a517932eed4a997", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/darabonba-openapi/zipball/6f03803394ab48ef54a498e079a3575881e7fc34", + "reference": "6f03803394ab48ef54a498e079a3575881e7fc34", "shasum": "", "mirrors": [ { @@ -178,7 +178,7 @@ "alibabacloud/tea-utils": "^0.2.0", "php": ">5.5" }, - "time": "2021-02-20T10:03:26+00:00", + "time": "2021-09-07T09:37:46+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -199,23 +199,23 @@ "description": "Alibaba Cloud OpenApi Client", "support": { "issues": "https://github.com/alibabacloud-sdk-php/darabonba-openapi/issues", - "source": "https://github.com/alibabacloud-sdk-php/darabonba-openapi/tree/0.1.8" + "source": "https://github.com/alibabacloud-sdk-php/darabonba-openapi/tree/0.1.9" }, "install-path": "../alibabacloud/darabonba-openapi" }, { "name": "alibabacloud/dysmsapi-20170525", - "version": "1.0.1", - "version_normalized": "1.0.1.0", + "version": "1.0.3", + "version_normalized": "1.0.3.0", "source": { "type": "git", "url": "https://github.com/alibabacloud-sdk-php/Dysmsapi-20170525.git", - "reference": "99a0098c844af962147a765abd4dc967ff311a1c" + "reference": "37bc85289a407fe4523932f31d9ab79faf617e9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alibabacloud-sdk-php/Dysmsapi-20170525/zipball/99a0098c844af962147a765abd4dc967ff311a1c", - "reference": "99a0098c844af962147a765abd4dc967ff311a1c", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/Dysmsapi-20170525/zipball/37bc85289a407fe4523932f31d9ab79faf617e9b", + "reference": "37bc85289a407fe4523932f31d9ab79faf617e9b", "shasum": "", "mirrors": [ { @@ -225,12 +225,12 @@ ] }, "require": { - "alibabacloud/darabonba-openapi": "^0.1.0", + "alibabacloud/darabonba-openapi": "^0.1.8", "alibabacloud/endpoint-util": "^0.1.0", "alibabacloud/tea-utils": "^0.2.0", "php": ">5.5" }, - "time": "2021-01-04T15:20:30+00:00", + "time": "2021-09-01T02:42:20+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -250,7 +250,7 @@ ], "description": "Alibaba Cloud Dysmsapi (20170525) SDK Library for PHP", "support": { - "source": "https://github.com/alibabacloud-sdk-php/Dysmsapi-20170525/tree/1.0.1" + "source": "https://github.com/alibabacloud-sdk-php/Dysmsapi-20170525/tree/1.0.3" }, "install-path": "../alibabacloud/dysmsapi-20170525" }, @@ -307,17 +307,17 @@ }, { "name": "alibabacloud/openapi-util", - "version": "0.1.8", - "version_normalized": "0.1.8.0", + "version": "0.1.10", + "version_normalized": "0.1.10.0", "source": { "type": "git", "url": "https://github.com/alibabacloud-sdk-php/openapi-util.git", - "reference": "108ef765e9cd11bba0a185a5c12e5ad33621ff35" + "reference": "c677ec9ea357caa98c2054dced1f5045634777da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alibabacloud-sdk-php/openapi-util/zipball/108ef765e9cd11bba0a185a5c12e5ad33621ff35", - "reference": "108ef765e9cd11bba0a185a5c12e5ad33621ff35", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/openapi-util/zipball/c677ec9ea357caa98c2054dced1f5045634777da", + "reference": "c677ec9ea357caa98c2054dced1f5045634777da", "shasum": "", "mirrors": [ { @@ -335,7 +335,7 @@ "require-dev": { "phpunit/phpunit": "^4.8.35|^5.4.3" }, - "time": "2021-04-27T09:43:17+00:00", + "time": "2021-12-14T02:46:22+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -356,7 +356,7 @@ "description": "Alibaba Cloud OpenApi Util", "support": { "issues": "https://github.com/alibabacloud-sdk-php/openapi-util/issues", - "source": "https://github.com/alibabacloud-sdk-php/openapi-util/tree/0.1.8" + "source": "https://github.com/alibabacloud-sdk-php/openapi-util/tree/0.1.10" }, "install-path": "../alibabacloud/openapi-util" }, @@ -486,17 +486,17 @@ }, { "name": "aliyuncs/oss-sdk-php", - "version": "v2.4.2", - "version_normalized": "2.4.2.0", + "version": "v2.4.3", + "version_normalized": "2.4.3.0", "source": { "type": "git", "url": "https://github.com/aliyun/aliyun-oss-php-sdk.git", - "reference": "0c9d902c33847c07efc66c4cdf823deaea8fc2b6" + "reference": "4ccead614915ee6685bf30016afb01aabd347e46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/0c9d902c33847c07efc66c4cdf823deaea8fc2b6", - "reference": "0c9d902c33847c07efc66c4cdf823deaea8fc2b6", + "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/4ccead614915ee6685bf30016afb01aabd347e46", + "reference": "4ccead614915ee6685bf30016afb01aabd347e46", "shasum": "", "mirrors": [ { @@ -512,7 +512,7 @@ "phpunit/phpunit": "*", "satooshi/php-coveralls": "*" }, - "time": "2021-06-04T06:55:06+00:00", + "time": "2021-08-25T13:03:58+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -534,7 +534,7 @@ "homepage": "http://www.aliyun.com/product/oss/", "support": { "issues": "https://github.com/aliyun/aliyun-oss-php-sdk/issues", - "source": "https://github.com/aliyun/aliyun-oss-php-sdk/tree/v2.4.2" + "source": "https://github.com/aliyun/aliyun-oss-php-sdk/tree/v2.4.3" }, "install-path": "../aliyuncs/oss-sdk-php" }, @@ -1111,17 +1111,17 @@ }, { "name": "league/flysystem", - "version": "1.1.3", - "version_normalized": "1.1.3.0", + "version": "1.1.9", + "version_normalized": "1.1.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "9be3b16c877d477357c015cec057548cf9b2a14a" + "reference": "094defdb4a7001845300334e7c1ee2335925ef99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/9be3b16c877d477357c015cec057548cf9b2a14a", - "reference": "9be3b16c877d477357c015cec057548cf9b2a14a", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99", "shasum": "", "mirrors": [ { @@ -1143,7 +1143,6 @@ "phpunit/phpunit": "^8.5.8" }, "suggest": { - "ext-fileinfo": "Required for MimeType", "ext-ftp": "Allows you to use FTP server storage", "ext-openssl": "Allows you to use FTPS server storage", "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", @@ -1158,7 +1157,7 @@ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" }, - "time": "2020-08-23T07:39:11+00:00", + "time": "2021-12-09T09:40:50+00:00", "type": "library", "extra": { "branch-alias": { @@ -1201,6 +1200,10 @@ "sftp", "storage" ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" + }, "funding": [ { "url": "https://offset.earth/frankdejonge", @@ -1267,17 +1270,17 @@ }, { "name": "league/mime-type-detection", - "version": "1.7.0", - "version_normalized": "1.7.0.0", + "version": "1.9.0", + "version_normalized": "1.9.0.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3" + "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", - "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/aa70e813a6ad3d1558fc927863d47309b4c23e69", + "reference": "aa70e813a6ad3d1558fc927863d47309b4c23e69", "shasum": "", "mirrors": [ { @@ -1291,11 +1294,11 @@ "php": "^7.2 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", + "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", "phpunit/phpunit": "^8.5.8 || ^9.3" }, - "time": "2021-01-18T20:58:21+00:00", + "time": "2021-11-21T11:48:40+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1316,7 +1319,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.7.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.9.0" }, "funding": [ { @@ -1749,17 +1752,17 @@ }, { "name": "myclabs/php-enum", - "version": "1.8.0", - "version_normalized": "1.8.0.0", + "version": "1.8.3", + "version_normalized": "1.8.3.0", "source": { "type": "git", "url": "https://github.com/myclabs/php-enum.git", - "reference": "46cf3d8498b095bd33727b13fd5707263af99421" + "reference": "b942d263c641ddb5190929ff840c68f78713e937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/46cf3d8498b095bd33727b13fd5707263af99421", - "reference": "46cf3d8498b095bd33727b13fd5707263af99421", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", + "reference": "b942d263c641ddb5190929ff840c68f78713e937", "shasum": "", "mirrors": [ { @@ -1775,9 +1778,9 @@ "require-dev": { "phpunit/phpunit": "^9.5", "squizlabs/php_codesniffer": "1.*", - "vimeo/psalm": "^4.5.1" + "vimeo/psalm": "^4.6.2" }, - "time": "2021-02-15T16:11:48+00:00", + "time": "2021-07-05T08:18:36+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1802,7 +1805,7 @@ ], "support": { "issues": "https://github.com/myclabs/php-enum/issues", - "source": "https://github.com/myclabs/php-enum/tree/1.8.0" + "source": "https://github.com/myclabs/php-enum/tree/1.8.3" }, "funding": [ { @@ -1818,17 +1821,17 @@ }, { "name": "obs/esdk-obs-php", - "version": "3.19.9", - "version_normalized": "3.19.9.0", + "version": "3.21.6", + "version_normalized": "3.21.6.0", "source": { "type": "git", "url": "https://github.com/huaweicloud/huaweicloud-sdk-php-obs.git", - "reference": "72ce758acf5475cbb245899a5c7409a03cbeb640" + "reference": "690ea452f1dfdfbf867e279e6ee8afe25f422c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/huaweicloud/huaweicloud-sdk-php-obs/zipball/72ce758acf5475cbb245899a5c7409a03cbeb640", - "reference": "72ce758acf5475cbb245899a5c7409a03cbeb640", + "url": "https://api.github.com/repos/huaweicloud/huaweicloud-sdk-php-obs/zipball/690ea452f1dfdfbf867e279e6ee8afe25f422c6f", + "reference": "690ea452f1dfdfbf867e279e6ee8afe25f422c6f", "shasum": "", "mirrors": [ { @@ -1846,7 +1849,7 @@ "psr/http-message": "1.0.1", "psr/log": "~1.0" }, - "time": "2020-01-17T09:19:20+00:00", + "time": "2021-07-22T08:52:54+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1863,6 +1866,9 @@ "OBS", "php" ], + "support": { + "source": "https://github.com/huaweicloud/huaweicloud-sdk-php-obs/tree/v3.21.6" + }, "install-path": "../obs/esdk-obs-php" }, { @@ -2032,17 +2038,17 @@ }, { "name": "psr/container", - "version": "1.1.1", - "version_normalized": "1.1.1.0", + "version": "1.1.2", + "version_normalized": "1.1.2.0", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "", "mirrors": [ { @@ -2052,9 +2058,9 @@ ] }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, - "time": "2021-03-05T17:36:06+00:00", + "time": "2021-11-05T16:50:12+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2083,7 +2089,7 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, "install-path": "../psr/container" }, @@ -2389,17 +2395,17 @@ }, { "name": "qcloud/cos-sdk-v5", - "version": "v2.2.0", - "version_normalized": "2.2.0.0", + "version": "v2.4.4", + "version_normalized": "2.4.4.0", "source": { "type": "git", "url": "https://github.com/tencentyun/cos-php-sdk-v5.git", - "reference": "e67ad8143695192ee206bcbcafc78c08da92c621" + "reference": "2862ce2c9244eb12f099483db578910bde9b045a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/e67ad8143695192ee206bcbcafc78c08da92c621", - "reference": "e67ad8143695192ee206bcbcafc78c08da92c621", + "url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/2862ce2c9244eb12f099483db578910bde9b045a", + "reference": "2862ce2c9244eb12f099483db578910bde9b045a", "shasum": "", "mirrors": [ { @@ -2409,19 +2415,23 @@ ] }, "require": { - "guzzlehttp/guzzle": "~6.3", - "guzzlehttp/guzzle-services": "~1.1", - "php": ">=5.3.0" + "ext-curl": "*", + "ext-json": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^6.2.1 || ^7.0", + "guzzlehttp/guzzle-services": "^1.1", + "guzzlehttp/psr7": "^1.3.1 || ^2.0", + "php": ">=5.6" }, - "time": "2021-05-18T12:47:31+00:00", + "time": "2021-12-03T02:40:30+00:00", "type": "library", "installation-source": "dist", "autoload": { "psr-4": { - "Qcloud\\Cos\\": "src/Qcloud/Cos/" + "Qcloud\\Cos\\": "src/" }, "files": [ - "src/Qcloud/Cos/Common.php" + "src/Common.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2436,6 +2446,10 @@ { "name": "lewzylu", "email": "327874225@qq.com" + }, + { + "name": "tuunalai", + "email": "550566181@qq.com" } ], "description": "PHP SDK for QCloud COS", @@ -2446,23 +2460,23 @@ ], "support": { "issues": "https://github.com/tencentyun/cos-php-sdk-v5/issues", - "source": "https://github.com/tencentyun/cos-php-sdk-v5/tree/v2.2.0" + "source": "https://github.com/tencentyun/cos-php-sdk-v5/tree/v2.4.4" }, "install-path": "../qcloud/cos-sdk-v5" }, { "name": "qiniu/php-sdk", - "version": "v7.3.0", - "version_normalized": "7.3.0.0", + "version": "v7.4.1", + "version_normalized": "7.4.1.0", "source": { "type": "git", "url": "https://github.com/qiniu/php-sdk.git", - "reference": "0a461e13b09545b23df361843c6a65fdd3a26426" + "reference": "10c7ead8357743b4b987a335c14964fb07700d57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/0a461e13b09545b23df361843c6a65fdd3a26426", - "reference": "0a461e13b09545b23df361843c6a65fdd3a26426", + "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/10c7ead8357743b4b987a335c14964fb07700d57", + "reference": "10c7ead8357743b4b987a335c14964fb07700d57", "shasum": "", "mirrors": [ { @@ -2475,10 +2489,11 @@ "php": ">=5.3.3" }, "require-dev": { + "paragonie/random_compat": ">=2", "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.3" + "squizlabs/php_codesniffer": "~3.6" }, - "time": "2020-09-24T07:31:29+00:00", + "time": "2021-09-24T09:39:16+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2508,6 +2523,10 @@ "sdk", "storage" ], + "support": { + "issues": "https://github.com/qiniu/php-sdk/issues", + "source": "https://github.com/qiniu/php-sdk/tree/v7.4.1" + }, "install-path": "../qiniu/php-sdk" }, { @@ -2581,17 +2600,17 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.0", - "version_normalized": "1.23.0.0", + "version": "v1.23.1", + "version_normalized": "1.23.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", "shasum": "", "mirrors": [ { @@ -2606,7 +2625,7 @@ "suggest": { "ext-mbstring": "For best performance" }, - "time": "2021-05-27T09:27:20+00:00", + "time": "2021-05-27T12:26:48+00:00", "type": "library", "extra": { "branch-alias": { @@ -2650,7 +2669,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" }, "funding": [ { @@ -2755,17 +2774,17 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.23.0", - "version_normalized": "1.23.0.0", + "version": "v1.23.1", + "version_normalized": "1.23.1.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", "shasum": "", "mirrors": [ { @@ -2777,7 +2796,7 @@ "require": { "php": ">=7.1" }, - "time": "2021-02-19T12:13:01+00:00", + "time": "2021-07-28T13:41:28+00:00", "type": "library", "extra": { "branch-alias": { @@ -2827,7 +2846,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" }, "funding": [ { @@ -2847,17 +2866,17 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.25", - "version_normalized": "4.4.25.0", + "version": "v4.4.34", + "version_normalized": "4.4.34.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "31ea689a8e7d2410016b0d25fc15a1ba05a6e2e0" + "reference": "2d0c056b2faaa3d785bdbd5adecc593a5be9c16e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/31ea689a8e7d2410016b0d25fc15a1ba05a6e2e0", - "reference": "31ea689a8e7d2410016b0d25fc15a1ba05a6e2e0", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2d0c056b2faaa3d785bdbd5adecc593a5be9c16e", + "reference": "2d0c056b2faaa3d785bdbd5adecc593a5be9c16e", "shasum": "", "mirrors": [ { @@ -2870,7 +2889,7 @@ "php": ">=7.1.3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php72": "~1.5", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", @@ -2887,7 +2906,7 @@ "ext-intl": "To show region name in time zone dump", "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, - "time": "2021-05-27T09:48:32+00:00", + "time": "2021-11-12T10:50:54+00:00", "bin": [ "Resources/bin/var-dump-server" ], @@ -2925,7 +2944,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.25" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.34" }, "funding": [ { @@ -2945,17 +2964,17 @@ }, { "name": "topthink/framework", - "version": "v6.0.8", - "version_normalized": "6.0.8.0", + "version": "v6.0.9", + "version_normalized": "6.0.9.0", "source": { "type": "git", "url": "https://github.com/top-think/framework.git", - "reference": "4789343672aef06d571d556da369c0e156609bce" + "reference": "0b5fb453f0e533de3af3a1ab6a202510b61be617" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/framework/zipball/4789343672aef06d571d556da369c0e156609bce", - "reference": "4789343672aef06d571d556da369c0e156609bce", + "url": "https://api.github.com/repos/top-think/framework/zipball/0b5fb453f0e533de3af3a1ab6a202510b61be617", + "reference": "0b5fb453f0e533de3af3a1ab6a202510b61be617", "shasum": "", "mirrors": [ { @@ -2967,9 +2986,9 @@ "require": { "ext-json": "*", "ext-mbstring": "*", - "league/flysystem": "^1.0", + "league/flysystem": "^1.1.4", "league/flysystem-cached-adapter": "^1.0", - "php": ">=7.1.0", + "php": ">=7.2.5", "psr/container": "~1.0", "psr/log": "~1.0", "psr/simple-cache": "^1.0", @@ -2981,7 +3000,7 @@ "mockery/mockery": "^1.2", "phpunit/phpunit": "^7.0" }, - "time": "2021-04-27T00:41:08+00:00", + "time": "2021-07-22T03:24:49+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3013,23 +3032,23 @@ ], "support": { "issues": "https://github.com/top-think/framework/issues", - "source": "https://github.com/top-think/framework/tree/v6.0.8" + "source": "https://github.com/top-think/framework/tree/v6.0.9" }, "install-path": "../topthink/framework" }, { "name": "topthink/think-helper", - "version": "v3.1.4", - "version_normalized": "3.1.4.0", + "version": "v3.1.5", + "version_normalized": "3.1.5.0", "source": { "type": "git", "url": "https://github.com/top-think/think-helper.git", - "reference": "c28d37743bda4a0455286ca85b17b5791d626e10" + "reference": "f98e3ad44acd27ae85a4d923b1bdfd16c6d8d905" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/think-helper/zipball/c28d37743bda4a0455286ca85b17b5791d626e10", - "reference": "c28d37743bda4a0455286ca85b17b5791d626e10", + "url": "https://api.github.com/repos/top-think/think-helper/zipball/f98e3ad44acd27ae85a4d923b1bdfd16c6d8d905", + "reference": "f98e3ad44acd27ae85a4d923b1bdfd16c6d8d905", "shasum": "", "mirrors": [ { @@ -3041,7 +3060,7 @@ "require": { "php": ">=7.1.0" }, - "time": "2019-11-08T08:01:10+00:00", + "time": "2021-06-21T06:17:31+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3063,21 +3082,25 @@ } ], "description": "The ThinkPHP6 Helper Package", + "support": { + "issues": "https://github.com/top-think/think-helper/issues", + "source": "https://github.com/top-think/think-helper/tree/v3.1.5" + }, "install-path": "../topthink/think-helper" }, { "name": "topthink/think-orm", - "version": "v2.0.40", - "version_normalized": "2.0.40.0", + "version": "v2.0.45", + "version_normalized": "2.0.45.0", "source": { "type": "git", "url": "https://github.com/top-think/think-orm.git", - "reference": "1119d979b850849f3725856460cf108eec1c3eb8" + "reference": "3dcf9af447b048103093840833e8c74ab849152f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/top-think/think-orm/zipball/1119d979b850849f3725856460cf108eec1c3eb8", - "reference": "1119d979b850849f3725856460cf108eec1c3eb8", + "url": "https://api.github.com/repos/top-think/think-orm/zipball/3dcf9af447b048103093840833e8c74ab849152f", + "reference": "3dcf9af447b048103093840833e8c74ab849152f", "shasum": "", "mirrors": [ { @@ -3097,7 +3120,7 @@ "require-dev": { "phpunit/phpunit": "^7|^8|^9.5" }, - "time": "2021-04-19T13:29:37+00:00", + "time": "2021-11-30T14:31:05+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3125,7 +3148,7 @@ ], "support": { "issues": "https://github.com/top-think/think-orm/issues", - "source": "https://github.com/top-think/think-orm/tree/v2.0.40" + "source": "https://github.com/top-think/think-orm/tree/v2.0.45" }, "install-path": "../topthink/think-orm" }, diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 554d0b4..7201240 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -1,606 +1,581 @@ - - array ( - 'pretty_version' => '6.x-dev', - 'version' => '6.9999999.9999999.9999999-dev', - 'aliases' => - array ( + array( + 'pretty_version' => '6.x-dev', + 'version' => '6.9999999.9999999.9999999-dev', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'reference' => '306f3e80c4e0f55b5f20e296872a87473d818c14', + 'name' => 'dtapps/think-library', + 'dev' => true, + ), + 'versions' => array( + 'adbario/php-dot-notation' => array( + 'pretty_version' => '2.2.0', + 'version' => '2.2.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../adbario/php-dot-notation', + 'aliases' => array(), + 'reference' => 'eee4fc81296531e6aafba4c2bbccfc5adab1676e', + 'dev_requirement' => false, + ), + 'alibabacloud/credentials' => array( + 'pretty_version' => '1.1.4', + 'version' => '1.1.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/credentials', + 'aliases' => array(), + 'reference' => 'e79d4151ad8924c0cf79d4fe0ec151b8d7663a25', + 'dev_requirement' => false, + ), + 'alibabacloud/darabonba-openapi' => array( + 'pretty_version' => '0.1.9', + 'version' => '0.1.9.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/darabonba-openapi', + 'aliases' => array(), + 'reference' => '6f03803394ab48ef54a498e079a3575881e7fc34', + 'dev_requirement' => false, + ), + 'alibabacloud/dysmsapi-20170525' => array( + 'pretty_version' => '1.0.3', + 'version' => '1.0.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/dysmsapi-20170525', + 'aliases' => array(), + 'reference' => '37bc85289a407fe4523932f31d9ab79faf617e9b', + 'dev_requirement' => false, + ), + 'alibabacloud/endpoint-util' => array( + 'pretty_version' => '0.1.1', + 'version' => '0.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/endpoint-util', + 'aliases' => array(), + 'reference' => 'f3fe88a25d8df4faa3b0ae14ff202a9cc094e6c5', + 'dev_requirement' => false, + ), + 'alibabacloud/openapi-util' => array( + 'pretty_version' => '0.1.10', + 'version' => '0.1.10.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/openapi-util', + 'aliases' => array(), + 'reference' => 'c677ec9ea357caa98c2054dced1f5045634777da', + 'dev_requirement' => false, + ), + 'alibabacloud/tea' => array( + 'pretty_version' => '3.1.22', + 'version' => '3.1.22.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/tea', + 'aliases' => array(), + 'reference' => 'f9c9b2c927253a1c23a5381cc655e41311be7f65', + 'dev_requirement' => false, + ), + 'alibabacloud/tea-utils' => array( + 'pretty_version' => '0.2.14', + 'version' => '0.2.14.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/tea-utils', + 'aliases' => array(), + 'reference' => '381df15cb4bdb58dbf596f94869ffd2ef680eddd', + 'dev_requirement' => false, + ), + 'aliyuncs/oss-sdk-php' => array( + 'pretty_version' => 'v2.4.3', + 'version' => '2.4.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../aliyuncs/oss-sdk-php', + 'aliases' => array(), + 'reference' => '4ccead614915ee6685bf30016afb01aabd347e46', + 'dev_requirement' => false, + ), + 'baidubce/bce-sdk-php' => array( + 'pretty_version' => '0.8.22', + 'version' => '0.8.22.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../baidubce/bce-sdk-php', + 'aliases' => array(), + 'reference' => 'c3164434c8f0fe53b6ffe4479def893465137282', + 'dev_requirement' => false, + ), + 'dtapps/think-library' => array( + 'pretty_version' => '6.x-dev', + 'version' => '6.9999999.9999999.9999999-dev', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'reference' => '306f3e80c4e0f55b5f20e296872a87473d818c14', + 'dev_requirement' => false, + ), + 'ezyang/htmlpurifier' => array( + 'pretty_version' => 'v4.13.0', + 'version' => '4.13.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../ezyang/htmlpurifier', + 'aliases' => array(), + 'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75', + 'dev_requirement' => false, + ), + 'guzzle/batch' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/cache' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/common' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/guzzle' => array( + 'pretty_version' => 'v3.9.3', + 'version' => '3.9.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzle/guzzle', + 'aliases' => array(), + 'reference' => '0645b70d953bc1c067bbc8d5bc53194706b628d9', + 'dev_requirement' => false, + ), + 'guzzle/http' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/inflection' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/iterator' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/log' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/parser' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-async' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-backoff' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-cache' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-cookie' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-curlauth' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-error-response' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-history' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-log' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-md5' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-mock' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/plugin-oauth' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/service' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzle/stream' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v3.9.3', + ), + ), + 'guzzlehttp/command' => array( + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/command', + 'aliases' => array(), + 'reference' => '2aaa2521a8f8269d6f5dfc13fe2af12c76921034', + 'dev_requirement' => false, + ), + 'guzzlehttp/guzzle' => array( + 'pretty_version' => '6.3.0', + 'version' => '6.3.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', + 'aliases' => array(), + 'reference' => 'f4db5a78a5ea468d4831de7f0bf9d9415e348699', + 'dev_requirement' => false, + ), + 'guzzlehttp/guzzle-services' => array( + 'pretty_version' => '1.1.3', + 'version' => '1.1.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/guzzle-services', + 'aliases' => array(), + 'reference' => '9e3abf20161cbf662d616cbb995f2811771759f7', + 'dev_requirement' => false, + ), + 'guzzlehttp/promises' => array( + 'pretty_version' => 'v1.3.1', + 'version' => '1.3.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/promises', + 'aliases' => array(), + 'reference' => 'a59da6cf61d80060647ff4d3eb2c03a2bc694646', + 'dev_requirement' => false, + ), + 'guzzlehttp/psr7' => array( + 'pretty_version' => '1.4.2', + 'version' => '1.4.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/psr7', + 'aliases' => array(), + 'reference' => 'f5b8a8512e2b58b0071a7280e39f14f72e05d87c', + 'dev_requirement' => false, + ), + 'league/flysystem' => array( + 'pretty_version' => '1.1.9', + 'version' => '1.1.9.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../league/flysystem', + 'aliases' => array(), + 'reference' => '094defdb4a7001845300334e7c1ee2335925ef99', + 'dev_requirement' => false, + ), + 'league/flysystem-cached-adapter' => array( + 'pretty_version' => '1.1.0', + 'version' => '1.1.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../league/flysystem-cached-adapter', + 'aliases' => array(), + 'reference' => 'd1925efb2207ac4be3ad0c40b8277175f99ffaff', + 'dev_requirement' => false, + ), + 'league/mime-type-detection' => array( + 'pretty_version' => '1.9.0', + 'version' => '1.9.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../league/mime-type-detection', + 'aliases' => array(), + 'reference' => 'aa70e813a6ad3d1558fc927863d47309b4c23e69', + 'dev_requirement' => false, + ), + 'lizhichao/one-sm' => array( + 'pretty_version' => '1.10', + 'version' => '1.10.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../lizhichao/one-sm', + 'aliases' => array(), + 'reference' => '687a012a44a5bfd4d9143a0234e1060543be455a', + 'dev_requirement' => false, + ), + 'maennchen/zipstream-php' => array( + 'pretty_version' => '2.1.0', + 'version' => '2.1.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../maennchen/zipstream-php', + 'aliases' => array(), + 'reference' => 'c4c5803cc1f93df3d2448478ef79394a5981cc58', + 'dev_requirement' => false, + ), + 'markbaker/complex' => array( + 'pretty_version' => '2.0.3', + 'version' => '2.0.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../markbaker/complex', + 'aliases' => array(), + 'reference' => '6f724d7e04606fd8adaa4e3bb381c3e9db09c946', + 'dev_requirement' => false, + ), + 'markbaker/matrix' => array( + 'pretty_version' => '2.1.3', + 'version' => '2.1.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../markbaker/matrix', + 'aliases' => array(), + 'reference' => '174395a901b5ba0925f1d790fa91bab531074b61', + 'dev_requirement' => false, + ), + 'monolog/monolog' => array( + 'pretty_version' => '1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../monolog/monolog', + 'aliases' => array(), + 'reference' => 'fd8c787753b3a2ad11bc60c063cff1358a32a3b4', + 'dev_requirement' => false, + ), + 'myclabs/php-enum' => array( + 'pretty_version' => '1.8.3', + 'version' => '1.8.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../myclabs/php-enum', + 'aliases' => array(), + 'reference' => 'b942d263c641ddb5190929ff840c68f78713e937', + 'dev_requirement' => false, + ), + 'obs/esdk-obs-php' => array( + 'pretty_version' => '3.21.6', + 'version' => '3.21.6.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../obs/esdk-obs-php', + 'aliases' => array(), + 'reference' => '690ea452f1dfdfbf867e279e6ee8afe25f422c6f', + 'dev_requirement' => false, + ), + 'phpoffice/phpspreadsheet' => array( + 'pretty_version' => '1.17.1', + 'version' => '1.17.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpoffice/phpspreadsheet', + 'aliases' => array(), + 'reference' => 'c55269cb06911575a126dc225a05c0e4626e5fb4', + 'dev_requirement' => false, + ), + 'psr/cache' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/cache', + 'aliases' => array(), + 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', + 'dev_requirement' => false, + ), + 'psr/container' => array( + 'pretty_version' => '1.1.2', + 'version' => '1.1.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/container', + 'aliases' => array(), + 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', + 'dev_requirement' => false, + ), + 'psr/http-client' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/http-client', + 'aliases' => array(), + 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621', + 'dev_requirement' => false, + ), + 'psr/http-factory' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/http-factory', + 'aliases' => array(), + 'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be', + 'dev_requirement' => false, + ), + 'psr/http-message' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/http-message', + 'aliases' => array(), + 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363', + 'dev_requirement' => false, + ), + 'psr/http-message-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), + 'psr/log' => array( + 'pretty_version' => '1.1.4', + 'version' => '1.1.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/log', + 'aliases' => array(), + 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', + 'dev_requirement' => false, + ), + 'psr/log-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0.0', + ), + ), + 'psr/simple-cache' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/simple-cache', + 'aliases' => array(), + 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', + 'dev_requirement' => false, + ), + 'qcloud/cos-sdk-v5' => array( + 'pretty_version' => 'v2.4.4', + 'version' => '2.4.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../qcloud/cos-sdk-v5', + 'aliases' => array(), + 'reference' => '2862ce2c9244eb12f099483db578910bde9b045a', + 'dev_requirement' => false, + ), + 'qiniu/php-sdk' => array( + 'pretty_version' => 'v7.4.1', + 'version' => '7.4.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../qiniu/php-sdk', + 'aliases' => array(), + 'reference' => '10c7ead8357743b4b987a335c14964fb07700d57', + 'dev_requirement' => false, + ), + 'symfony/event-dispatcher' => array( + 'pretty_version' => 'v2.8.52', + 'version' => '2.8.52.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/event-dispatcher', + 'aliases' => array(), + 'reference' => 'a77e974a5fecb4398833b0709210e3d5e334ffb0', + 'dev_requirement' => false, + ), + 'symfony/polyfill-mbstring' => array( + 'pretty_version' => 'v1.23.1', + 'version' => '1.23.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', + 'aliases' => array(), + 'reference' => '9174a3d80210dca8daa7f31fec659150bbeabfc6', + 'dev_requirement' => false, + ), + 'symfony/polyfill-php72' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php72', + 'aliases' => array(), + 'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976', + 'dev_requirement' => true, + ), + 'symfony/polyfill-php80' => array( + 'pretty_version' => 'v1.23.1', + 'version' => '1.23.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php80', + 'aliases' => array(), + 'reference' => '1100343ed1a92e3a38f9ae122fc0eb21602547be', + 'dev_requirement' => true, + ), + 'symfony/var-dumper' => array( + 'pretty_version' => 'v4.4.34', + 'version' => '4.4.34.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/var-dumper', + 'aliases' => array(), + 'reference' => '2d0c056b2faaa3d785bdbd5adecc593a5be9c16e', + 'dev_requirement' => true, + ), + 'topthink/framework' => array( + 'pretty_version' => 'v6.0.9', + 'version' => '6.0.9.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../topthink/framework', + 'aliases' => array(), + 'reference' => '0b5fb453f0e533de3af3a1ab6a202510b61be617', + 'dev_requirement' => false, + ), + 'topthink/think-helper' => array( + 'pretty_version' => 'v3.1.5', + 'version' => '3.1.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../topthink/think-helper', + 'aliases' => array(), + 'reference' => 'f98e3ad44acd27ae85a4d923b1bdfd16c6d8d905', + 'dev_requirement' => false, + ), + 'topthink/think-orm' => array( + 'pretty_version' => 'v2.0.45', + 'version' => '2.0.45.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../topthink/think-orm', + 'aliases' => array(), + 'reference' => '3dcf9af447b048103093840833e8c74ab849152f', + 'dev_requirement' => false, + ), + 'upyun/sdk' => array( + 'pretty_version' => '3.5.0', + 'version' => '3.5.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../upyun/sdk', + 'aliases' => array(), + 'reference' => 'c9f824626552c32b987de4ac7f136e0e21cca962', + 'dev_requirement' => false, + ), ), - 'reference' => '14aa3f16683dfac34bebb749263ba76c8b7f81e4', - 'name' => 'liguangchun/think-library', - ), - 'versions' => - array ( - 'adbario/php-dot-notation' => - array ( - 'pretty_version' => '2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => 'eee4fc81296531e6aafba4c2bbccfc5adab1676e', - ), - 'alibabacloud/credentials' => - array ( - 'pretty_version' => '1.1.4', - 'version' => '1.1.4.0', - 'aliases' => - array ( - ), - 'reference' => 'e79d4151ad8924c0cf79d4fe0ec151b8d7663a25', - ), - 'alibabacloud/darabonba-openapi' => - array ( - 'pretty_version' => '0.1.8', - 'version' => '0.1.8.0', - 'aliases' => - array ( - ), - 'reference' => 'c577dea4415b6812d52d9e970a517932eed4a997', - ), - 'alibabacloud/dysmsapi-20170525' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '99a0098c844af962147a765abd4dc967ff311a1c', - ), - 'alibabacloud/endpoint-util' => - array ( - 'pretty_version' => '0.1.1', - 'version' => '0.1.1.0', - 'aliases' => - array ( - ), - 'reference' => 'f3fe88a25d8df4faa3b0ae14ff202a9cc094e6c5', - ), - 'alibabacloud/openapi-util' => - array ( - 'pretty_version' => '0.1.8', - 'version' => '0.1.8.0', - 'aliases' => - array ( - ), - 'reference' => '108ef765e9cd11bba0a185a5c12e5ad33621ff35', - ), - 'alibabacloud/tea' => - array ( - 'pretty_version' => '3.1.22', - 'version' => '3.1.22.0', - 'aliases' => - array ( - ), - 'reference' => 'f9c9b2c927253a1c23a5381cc655e41311be7f65', - ), - 'alibabacloud/tea-utils' => - array ( - 'pretty_version' => '0.2.14', - 'version' => '0.2.14.0', - 'aliases' => - array ( - ), - 'reference' => '381df15cb4bdb58dbf596f94869ffd2ef680eddd', - ), - 'aliyuncs/oss-sdk-php' => - array ( - 'pretty_version' => 'v2.4.2', - 'version' => '2.4.2.0', - 'aliases' => - array ( - ), - 'reference' => '0c9d902c33847c07efc66c4cdf823deaea8fc2b6', - ), - 'baidubce/bce-sdk-php' => - array ( - 'pretty_version' => '0.8.22', - 'version' => '0.8.22.0', - 'aliases' => - array ( - ), - 'reference' => 'c3164434c8f0fe53b6ffe4479def893465137282', - ), - 'ezyang/htmlpurifier' => - array ( - 'pretty_version' => 'v4.13.0', - 'version' => '4.13.0.0', - 'aliases' => - array ( - ), - 'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75', - ), - 'guzzle/batch' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/cache' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/common' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/guzzle' => - array ( - 'pretty_version' => 'v3.9.3', - 'version' => '3.9.3.0', - 'aliases' => - array ( - ), - 'reference' => '0645b70d953bc1c067bbc8d5bc53194706b628d9', - ), - 'guzzle/http' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/inflection' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/iterator' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/log' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/parser' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-async' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-backoff' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-cache' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-cookie' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-curlauth' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-error-response' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-history' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-log' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-md5' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-mock' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/plugin-oauth' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/service' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzle/stream' => - array ( - 'replaced' => - array ( - 0 => 'v3.9.3', - ), - ), - 'guzzlehttp/command' => - array ( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => '2aaa2521a8f8269d6f5dfc13fe2af12c76921034', - ), - 'guzzlehttp/guzzle' => - array ( - 'pretty_version' => '6.3.0', - 'version' => '6.3.0.0', - 'aliases' => - array ( - ), - 'reference' => 'f4db5a78a5ea468d4831de7f0bf9d9415e348699', - ), - 'guzzlehttp/guzzle-services' => - array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '9e3abf20161cbf662d616cbb995f2811771759f7', - ), - 'guzzlehttp/promises' => - array ( - 'pretty_version' => 'v1.3.1', - 'version' => '1.3.1.0', - 'aliases' => - array ( - ), - 'reference' => 'a59da6cf61d80060647ff4d3eb2c03a2bc694646', - ), - 'guzzlehttp/psr7' => - array ( - 'pretty_version' => '1.4.2', - 'version' => '1.4.2.0', - 'aliases' => - array ( - ), - 'reference' => 'f5b8a8512e2b58b0071a7280e39f14f72e05d87c', - ), - 'league/flysystem' => - array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a', - ), - 'league/flysystem-cached-adapter' => - array ( - 'pretty_version' => '1.1.0', - 'version' => '1.1.0.0', - 'aliases' => - array ( - ), - 'reference' => 'd1925efb2207ac4be3ad0c40b8277175f99ffaff', - ), - 'league/mime-type-detection' => - array ( - 'pretty_version' => '1.7.0', - 'version' => '1.7.0.0', - 'aliases' => - array ( - ), - 'reference' => '3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3', - ), - 'liguangchun/think-library' => - array ( - 'pretty_version' => '6.x-dev', - 'version' => '6.9999999.9999999.9999999-dev', - 'aliases' => - array ( - ), - 'reference' => '14aa3f16683dfac34bebb749263ba76c8b7f81e4', - ), - 'lizhichao/one-sm' => - array ( - 'pretty_version' => '1.10', - 'version' => '1.10.0.0', - 'aliases' => - array ( - ), - 'reference' => '687a012a44a5bfd4d9143a0234e1060543be455a', - ), - 'maennchen/zipstream-php' => - array ( - 'pretty_version' => '2.1.0', - 'version' => '2.1.0.0', - 'aliases' => - array ( - ), - 'reference' => 'c4c5803cc1f93df3d2448478ef79394a5981cc58', - ), - 'markbaker/complex' => - array ( - 'pretty_version' => '2.0.3', - 'version' => '2.0.3.0', - 'aliases' => - array ( - ), - 'reference' => '6f724d7e04606fd8adaa4e3bb381c3e9db09c946', - ), - 'markbaker/matrix' => - array ( - 'pretty_version' => '2.1.3', - 'version' => '2.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '174395a901b5ba0925f1d790fa91bab531074b61', - ), - 'monolog/monolog' => - array ( - 'pretty_version' => '1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => 'fd8c787753b3a2ad11bc60c063cff1358a32a3b4', - ), - 'myclabs/php-enum' => - array ( - 'pretty_version' => '1.8.0', - 'version' => '1.8.0.0', - 'aliases' => - array ( - ), - 'reference' => '46cf3d8498b095bd33727b13fd5707263af99421', - ), - 'obs/esdk-obs-php' => - array ( - 'pretty_version' => '3.19.9', - 'version' => '3.19.9.0', - 'aliases' => - array ( - ), - 'reference' => '72ce758acf5475cbb245899a5c7409a03cbeb640', - ), - 'phpoffice/phpspreadsheet' => - array ( - 'pretty_version' => '1.17.1', - 'version' => '1.17.1.0', - 'aliases' => - array ( - ), - 'reference' => 'c55269cb06911575a126dc225a05c0e4626e5fb4', - ), - 'psr/cache' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', - ), - 'psr/container' => - array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', - ), - 'psr/http-client' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621', - ), - 'psr/http-factory' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be', - ), - 'psr/http-message' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363', - ), - 'psr/http-message-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/log' => - array ( - 'pretty_version' => '1.1.4', - 'version' => '1.1.4.0', - 'aliases' => - array ( - ), - 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', - ), - 'psr/log-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0.0', - ), - ), - 'psr/simple-cache' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', - ), - 'qcloud/cos-sdk-v5' => - array ( - 'pretty_version' => 'v2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => 'e67ad8143695192ee206bcbcafc78c08da92c621', - ), - 'qiniu/php-sdk' => - array ( - 'pretty_version' => 'v7.3.0', - 'version' => '7.3.0.0', - 'aliases' => - array ( - ), - 'reference' => '0a461e13b09545b23df361843c6a65fdd3a26426', - ), - 'symfony/event-dispatcher' => - array ( - 'pretty_version' => 'v2.8.52', - 'version' => '2.8.52.0', - 'aliases' => - array ( - ), - 'reference' => 'a77e974a5fecb4398833b0709210e3d5e334ffb0', - ), - 'symfony/polyfill-mbstring' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '2df51500adbaebdc4c38dea4c89a2e131c45c8a1', - ), - 'symfony/polyfill-php72' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976', - ), - 'symfony/polyfill-php80' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => 'eca0bf41ed421bed1b57c4958bab16aa86b757d0', - ), - 'symfony/var-dumper' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => '31ea689a8e7d2410016b0d25fc15a1ba05a6e2e0', - ), - 'topthink/framework' => - array ( - 'pretty_version' => 'v6.0.8', - 'version' => '6.0.8.0', - 'aliases' => - array ( - ), - 'reference' => '4789343672aef06d571d556da369c0e156609bce', - ), - 'topthink/think-helper' => - array ( - 'pretty_version' => 'v3.1.4', - 'version' => '3.1.4.0', - 'aliases' => - array ( - ), - 'reference' => 'c28d37743bda4a0455286ca85b17b5791d626e10', - ), - 'topthink/think-orm' => - array ( - 'pretty_version' => 'v2.0.40', - 'version' => '2.0.40.0', - 'aliases' => - array ( - ), - 'reference' => '1119d979b850849f3725856460cf108eec1c3eb8', - ), - 'upyun/sdk' => - array ( - 'pretty_version' => '3.5.0', - 'version' => '3.5.0.0', - 'aliases' => - array ( - ), - 'reference' => 'c9f824626552c32b987de4ac7f136e0e21cca962', - ), - ), ); diff --git a/vendor/composer/platform_check.php b/vendor/composer/platform_check.php index 92370c5..580fa96 100644 --- a/vendor/composer/platform_check.php +++ b/vendor/composer/platform_check.php @@ -4,8 +4,8 @@ $issues = array(); -if (!(PHP_VERSION_ID >= 70300)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.'; +if (!(PHP_VERSION_ID >= 70400)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.'; } if ($issues) { diff --git a/vendor/league/flysystem/composer.json b/vendor/league/flysystem/composer.json index bd7434a..32ec81d 100644 --- a/vendor/league/flysystem/composer.json +++ b/vendor/league/flysystem/composer.json @@ -40,7 +40,6 @@ } }, "suggest": { - "ext-fileinfo": "Required for MimeType", "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", diff --git a/vendor/league/flysystem/src/Adapter/AbstractAdapter.php b/vendor/league/flysystem/src/Adapter/AbstractAdapter.php index e577ac4..a6a8ed0 100644 --- a/vendor/league/flysystem/src/Adapter/AbstractAdapter.php +++ b/vendor/league/flysystem/src/Adapter/AbstractAdapter.php @@ -67,6 +67,6 @@ abstract class AbstractAdapter implements AdapterInterface */ public function removePathPrefix($path) { - return substr($path, strlen($this->getPathPrefix())); + return substr($path, strlen((string) $this->getPathPrefix())); } } diff --git a/vendor/league/flysystem/src/Adapter/AbstractFtpAdapter.php b/vendor/league/flysystem/src/Adapter/AbstractFtpAdapter.php index b232cdc..25d949e 100644 --- a/vendor/league/flysystem/src/Adapter/AbstractFtpAdapter.php +++ b/vendor/league/flysystem/src/Adapter/AbstractFtpAdapter.php @@ -539,7 +539,7 @@ abstract class AbstractFtpAdapter extends AbstractAdapter */ protected function detectSystemType($item) { - return preg_match('/^[0-9]{2,4}-[0-9]{2}-[0-9]{2}/', $item) ? 'windows' : 'unix'; + return preg_match('/^[0-9]{2,4}-[0-9]{2}-[0-9]{2}/', trim($item)) ? 'windows' : 'unix'; } /** diff --git a/vendor/league/flysystem/src/Adapter/Ftp.php b/vendor/league/flysystem/src/Adapter/Ftp.php index b009210..caa8b91 100644 --- a/vendor/league/flysystem/src/Adapter/Ftp.php +++ b/vendor/league/flysystem/src/Adapter/Ftp.php @@ -11,6 +11,8 @@ use League\Flysystem\InvalidRootException; use League\Flysystem\Util; use League\Flysystem\Util\MimeType; +use function in_array; + class Ftp extends AbstractFtpAdapter { use StreamedCopyTrait; @@ -160,7 +162,7 @@ class Ftp extends AbstractFtpAdapter { if ($this->utf8) { $response = ftp_raw($this->connection, "OPTS UTF8 ON"); - if (substr($response[0], 0, 3) !== '200') { + if (!in_array(substr($response[0], 0, 3), ['200', '202'])) { throw new ConnectionRuntimeException( 'Could not set UTF-8 mode for connection: ' . $this->getHost() . '::' . $this->getPort() ); @@ -235,7 +237,7 @@ class Ftp extends AbstractFtpAdapter */ public function disconnect() { - if (is_resource($this->connection)) { + if ($this->hasFtpConnection()) { @ftp_close($this->connection); } @@ -536,8 +538,7 @@ class Ftp extends AbstractFtpAdapter */ public function isConnected() { - return is_resource($this->connection) - && $this->getRawExecResponseCode('NOOP') === 200; + return $this->hasFtpConnection() && $this->getRawExecResponseCode('NOOP') === 200; } /** @@ -563,11 +564,10 @@ class Ftp extends AbstractFtpAdapter $connection = $this->getConnection(); if ($this->isPureFtpd) { - $path = str_replace(' ', '\ ', $path); - $this->escapePath($path); + $path = str_replace([' ', '[', ']'], ['\ ', '\\[', '\\]'], $path); } - return ftp_rawlist($connection, $options . ' ' . $path); + return ftp_rawlist($connection, $options . ' ' . $this->escapePath($path)); } private function getRawExecResponseCode($command) @@ -576,4 +576,9 @@ class Ftp extends AbstractFtpAdapter return (int) preg_replace('/\D/', '', implode(' ', $response)); } + + private function hasFtpConnection(): bool + { + return is_resource($this->connection) || $this->connection instanceof \FTP\Connection; + } } diff --git a/vendor/league/flysystem/src/CorruptedPathDetected.php b/vendor/league/flysystem/src/CorruptedPathDetected.php new file mode 100644 index 0000000..81a27e5 --- /dev/null +++ b/vendor/league/flysystem/src/CorruptedPathDetected.php @@ -0,0 +1,17 @@ + 'application/vnd.audiograph', 'afm' => 'application/x-font-type1', 'afp' => 'application/vnd.ibm.modcap', + 'age' => 'application/vnd.age', 'ahead' => 'application/vnd.ahead.space', 'ai' => 'application/pdf', 'aif' => 'audio/x-aiff', @@ -45,6 +46,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'air' => 'application/vnd.adobe.air-application-installer-package+zip', 'ait' => 'application/vnd.dvb.ait', 'ami' => 'application/vnd.amiga.ami', + 'amr' => 'audio/amr', 'apk' => 'application/vnd.android.package-archive', 'apng' => 'image/apng', 'appcache' => 'text/cache-manifest', @@ -265,6 +267,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'evy' => 'application/x-envoy', 'exe' => 'application/octet-stream', 'exi' => 'application/exi', + 'exp' => 'application/express', 'exr' => 'image/aces', 'ext' => 'application/vnd.novadigm.ext', 'ez' => 'application/andrew-inset', @@ -319,6 +322,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'gca' => 'application/x-gca-compressed', 'gdl' => 'model/vnd.gdl', 'gdoc' => 'application/vnd.google-apps.document', + 'ged' => 'text/vnd.familysearch.gedcom', 'geo' => 'application/vnd.dynageo', 'geojson' => 'application/geo+json', 'gex' => 'application/vnd.geometry-explorer', @@ -351,8 +355,8 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'gv' => 'text/vnd.graphviz', 'gxf' => 'application/gxf', 'gxt' => 'application/vnd.geonext', - 'gz' => 'application/x-gzip', - 'gzip' => 'application/x-gzip', + 'gz' => 'application/gzip', + 'gzip' => 'application/gzip', 'h' => 'text/x-c', 'h261' => 'video/h261', 'h263' => 'video/h263', @@ -457,7 +461,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'karbon' => 'application/vnd.kde.karbon', 'kdb' => 'application/octet-stream', 'kdbx' => 'application/x-keepass2', - 'key' => 'application/vnd.apple.keynote', + 'key' => 'application/x-iwork-keynote-sffkey', 'kfo' => 'application/vnd.kde.kformula', 'kia' => 'application/vnd.kidspiration', 'kml' => 'application/vnd.google-earth.kml+xml', @@ -507,6 +511,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'm3u8' => 'application/vnd.apple.mpegurl', 'm4a' => 'audio/x-m4a', 'm4p' => 'application/mp4', + 'm4s' => 'video/iso.segment', 'm4u' => 'application/vnd.mpegurl', 'm4v' => 'video/x-m4v', 'm13' => 'application/x-msmediaview', @@ -608,6 +613,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'musd' => 'application/mmt-usd+xml', 'musicxml' => 'application/vnd.recordare.musicxml+xml', 'mvb' => 'application/x-msmediaview', + 'mvt' => 'application/vnd.mapbox-vector-tile', 'mwf' => 'application/vnd.mfer', 'mxf' => 'application/mxf', 'mxl' => 'application/vnd.recordare.musicxml', @@ -635,7 +641,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'nsf' => 'application/vnd.lotus-notes', 'nt' => 'application/n-triples', 'ntf' => 'application/vnd.nitf', - 'numbers' => 'application/vnd.apple.numbers', + 'numbers' => 'application/x-iwork-numbers-sffnumbers', 'nzb' => 'application/x-nzb', 'oa2' => 'application/vnd.fujitsu.oasys2', 'oa3' => 'application/vnd.fujitsu.oasys3', @@ -696,7 +702,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'p10' => 'application/x-pkcs10', 'p12' => 'application/x-pkcs12', 'pac' => 'application/x-ns-proxy-autoconfig', - 'pages' => 'application/vnd.apple.pages', + 'pages' => 'application/x-iwork-pages-sffpages', 'pas' => 'text/x-pascal', 'paw' => 'application/vnd.pawaafile', 'pbd' => 'application/vnd.powerbuilder6', @@ -921,6 +927,9 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'sti' => 'application/vnd.sun.xml.impress.template', 'stk' => 'application/hyperstudio', 'stl' => 'model/stl', + 'stpx' => 'model/step+xml', + 'stpxz' => 'model/step-xml+zip', + 'stpz' => 'model/step+zip', 'str' => 'application/vnd.pg.format', 'stw' => 'application/vnd.sun.xml.writer.template', 'styl' => 'text/stylus', @@ -977,6 +986,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'tpt' => 'application/vnd.trid.tpt', 'tr' => 'text/troff', 'tra' => 'application/vnd.trueapp', + 'trig' => 'application/trig', 'trm' => 'application/x-msterminal', 'ts' => 'video/mp2t', 'tsd' => 'application/timestamped-data', @@ -1047,6 +1057,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'vcs' => 'text/x-vcalendar', 'vcx' => 'application/vnd.vcx', 'vdi' => 'application/x-virtualbox-vdi', + 'vds' => 'model/vnd.sap.vds', 'vhd' => 'application/x-virtualbox-vhd', 'vis' => 'application/vnd.visionary', 'viv' => 'video/vnd.vivo', @@ -1136,7 +1147,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'xdw' => 'application/vnd.fujixerox.docuworks', 'xel' => 'application/xcap-el+xml', 'xenc' => 'application/xenc+xml', - 'xer' => 'application/xcap-error+xml', + 'xer' => 'application/patch-ops-error+xml', 'xfdf' => 'application/vnd.adobe.xfdf', 'xfdl' => 'application/vnd.xfdl', 'xht' => 'application/xhtml+xml', @@ -1195,7 +1206,7 @@ class GeneratedExtensionToMimeTypeMap implements ExtensionToMimeTypeMap 'z7' => 'application/x-zmachine', 'z8' => 'application/x-zmachine', 'zaz' => 'application/vnd.zzazz.deck+xml', - 'zip' => 'application/x-zip', + 'zip' => 'application/zip', 'zir' => 'application/vnd.zul', 'zirz' => 'application/vnd.zul', 'zmm' => 'application/vnd.handheld-entertainment+xml', diff --git a/vendor/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php b/vendor/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php new file mode 100644 index 0000000..0c71e4d --- /dev/null +++ b/vendor/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php @@ -0,0 +1,30 @@ + $overrides + */ + public function __construct(ExtensionToMimeTypeMap $innerMap, array $overrides) + { + $this->innerMap = $innerMap; + $this->overrides = $overrides; + } + + public function lookupMimeType(string $extension): ?string + { + return $this->overrides[$extension] ?? $this->innerMap->lookupMimeType($extension); + } +} diff --git a/vendor/myclabs/php-enum/composer.json b/vendor/myclabs/php-enum/composer.json index 73caf14..924f924 100644 --- a/vendor/myclabs/php-enum/composer.json +++ b/vendor/myclabs/php-enum/composer.json @@ -28,6 +28,6 @@ "require-dev": { "phpunit/phpunit": "^9.5", "squizlabs/php_codesniffer": "1.*", - "vimeo/psalm": "^4.5.1" + "vimeo/psalm": "^4.6.2" } } diff --git a/vendor/myclabs/php-enum/src/Enum.php b/vendor/myclabs/php-enum/src/Enum.php index a16aa23..89064eb 100644 --- a/vendor/myclabs/php-enum/src/Enum.php +++ b/vendor/myclabs/php-enum/src/Enum.php @@ -69,15 +69,25 @@ abstract class Enum implements \JsonSerializable $value = $value->getValue(); } + /** @psalm-suppress ImplicitToStringCast assertValidValueReturningKey returns always a string but psalm has currently an issue here */ $this->key = static::assertValidValueReturningKey($value); /** @psalm-var T */ $this->value = $value; } + /** + * This method exists only for the compatibility reason when deserializing a previously serialized version + * that didn't had the key property + */ public function __wakeup() { + /** @psalm-suppress DocblockTypeContradiction key can be null when deserializing an enum without the key */ if ($this->key === null) { + /** + * @psalm-suppress InaccessibleProperty key is not readonly as marked by psalm + * @psalm-suppress PossiblyFalsePropertyAssignmentValue deserializing a case that was removed + */ $this->key = static::search($this->value); } } @@ -85,7 +95,6 @@ abstract class Enum implements \JsonSerializable /** * @param mixed $value * @return static - * @psalm-return static */ public static function from($value): self { @@ -215,6 +224,7 @@ abstract class Enum implements \JsonSerializable * * @psalm-pure * @psalm-assert T $value + * @param mixed $value */ public static function assertValidValue($value): void { @@ -226,6 +236,8 @@ abstract class Enum implements \JsonSerializable * * @psalm-pure * @psalm-assert T $value + * @param mixed $value + * @return string */ private static function assertValidValueReturningKey($value): string { @@ -298,6 +310,7 @@ abstract class Enum implements \JsonSerializable * @link http://php.net/manual/en/jsonserializable.jsonserialize.php * @psalm-pure */ + #[\ReturnTypeWillChange] public function jsonSerialize() { return $this->getValue(); diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/Common/Model.php b/vendor/obs/esdk-obs-php/Obs/Internal/Common/Model.php index aad2ca6..511e5f4 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/Common/Model.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/Common/Model.php @@ -1,18 +1,25 @@ + + * 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. */ namespace Obs\Internal\Common; diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/Common/SdkCurlFactory.php b/vendor/obs/esdk-obs-php/Obs/Internal/Common/SdkCurlFactory.php index 9b3373b..f7b80e4 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/Common/SdkCurlFactory.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/Common/SdkCurlFactory.php @@ -1,18 +1,25 @@ + + * 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. */ namespace Obs\Internal\Common; diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/Common/SdkStreamHandler.php b/vendor/obs/esdk-obs-php/Obs/Internal/Common/SdkStreamHandler.php index 8863f3f..eb8cbb2 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/Common/SdkStreamHandler.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/Common/SdkStreamHandler.php @@ -1,18 +1,25 @@ + + * 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. */ namespace Obs\Internal\Common; diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/GetResponseTrait.php b/vendor/obs/esdk-obs-php/Obs/Internal/GetResponseTrait.php index 0e47651..90b8422 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/GetResponseTrait.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/GetResponseTrait.php @@ -114,7 +114,11 @@ trait GetResponseTrait } } } - + + private function isJsonResponse($response) { + return $response -> getHeaderLine('content-type') === 'application/json'; + } + private function parseCommonHeaders($model, $response){ $constants = Constants::selectConstants($this -> signature); foreach($constants::COMMON_HEADERS as $key => $value){ @@ -176,7 +180,17 @@ trait GetResponseTrait }else if($location === 'body' && $body !== null){ if(isset($value['type']) && $value['type'] === 'stream'){ $model[$key] = $body; - }else{ + }else if (isset($value['type']) && $value['type'] === 'json') { + $jsonBody = trim($body -> getContents()); + if ($jsonBody && ($data = json_decode($jsonBody, true))) { + if (is_array($data)) { + $model[$key] = $data; + } elseif (strlen($data)) { + ObsLog::commonLog(ERROR, "response body %s, and jsonToArray data is %s",$body, $data); + } + } + $closeBody = true; + } else { $model[$key] = $body -> getContents(); $closeBody = true; } @@ -248,6 +262,54 @@ trait GetResponseTrait $body -> close(); } } + + private function parseJsonToException($body, $obsException) { + try { + $jsonErrorBody = trim($body -> getContents()); + if ($jsonErrorBody && ($data = json_decode($jsonErrorBody, true))) { + if (is_array($data)) { + if ($data['request_id']) { + $obsException -> setRequestId(strval($data['request_id'])); + } + if ($data['code']) { + $obsException -> setExceptionCode(strval($data['code'])); + } + if ($data['message']) { + $obsException -> setExceptionMessage(strval($data['message'])); + } + } elseif (strlen($data)) { + ObsLog::commonLog(ERROR, "response body %s, and jsonToArray data is %s",$body, $data); + $obsException-> setExceptionMessage("Invalid response data,since it is not json data"); + } + } + } finally { + $body -> close(); + } + } + + private function parseJsonToModel($body, $model) { + try{ + $jsonErrorBody = trim($body -> getContents()); + if ($jsonErrorBody && ($jsonArray = json_decode($jsonErrorBody, true))) { + if (is_array($jsonArray)) { + if ($jsonArray['request_id']) { + $model['RequestId'] = strval($jsonArray['request_id']); + } + if ($jsonArray['code']) { + $model['Code'] = strval($jsonArray['code']); + } + if ($jsonArray['message']) { + $model['Message'] = strval($jsonArray['message']); + } + } elseif (strlen($jsonArray)) { + ObsLog::commonLog(ERROR, "response body %s, and jsonToArray data is %s",$body, $jsonArray); + $model['Message'] = "Invalid response data,since it is not json data"; + } + } + } finally { + $body -> close(); + } + } private function parseXmlToModel($body, $model){ try{ @@ -281,6 +343,8 @@ trait GetResponseTrait { $statusCode = $response -> getStatusCode(); $expectedLength = $response -> getHeaderLine('content-length'); + $responseContentType = $response -> getHeaderLine('content-type'); + $expectedLength = is_numeric($expectedLength) ? floatval($expectedLength) : null; $body = new CheckoutStream($response->getBody(), $expectedLength); @@ -291,11 +355,19 @@ trait GetResponseTrait $obsException-> setRequest($request); $obsException-> setResponse($response); $obsException-> setExceptionType($this->isClientError($response) ? 'client' : 'server'); - $this->parseXmlToException($body, $obsException); + if ($responseContentType === 'application/json') { + $this->parseJsonToException($body, $obsException); + } else { + $this->parseXmlToException($body, $obsException); + } throw $obsException; }else{ $this->parseCommonHeaders($model, $response); - $this->parseXmlToModel($body, $model); + if ($responseContentType === 'application/json') { + $this->parseJsonToModel($body, $model); + } else { + $this->parseXmlToModel($body, $model); + } } }else{ @@ -345,7 +417,11 @@ trait GetResponseTrait if($response){ $obsException-> setResponse($response); $obsException-> setExceptionType($this->isClientError($response) ? 'client' : 'server'); - $this->parseXmlToException($response -> getBody(), $obsException); + if ($this->isJsonResponse($response)) { + $this->parseJsonToException($response -> getBody(), $obsException); + } else { + $this->parseXmlToException($response -> getBody(), $obsException); + } if ($obsException->getRequestId() === null) { $prefix = strcasecmp($this->signature, 'obs' ) === 0 ? 'x-obs-' : 'x-amz-'; $requestId = $response->getHeaderLine($prefix . 'request-id'); @@ -363,7 +439,6 @@ trait GetResponseTrait protected function parseException(Model $model, Request $request, RequestException $exception, $message=null) { $response = $exception-> hasResponse() ? $exception-> getResponse() : null; - if($this-> exceptionResponseMode){ throw $this->buildException($request, $exception, $message); }else{ diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/Resource/OBSRequestResource.php b/vendor/obs/esdk-obs-php/Obs/Internal/Resource/OBSRequestResource.php index 45518fb..d5ff1af 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/Resource/OBSRequestResource.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/Resource/OBSRequestResource.php @@ -547,6 +547,7 @@ class OBSRequestResource { ] ] ], + 'setBucketQuota' => [ 'httpMethod' => 'PUT', 'specialParam' => 'quota', @@ -961,6 +962,75 @@ class OBSRequestResource { ] ], + 'setFetchPolicy' => [ + 'httpMethod' => 'PUT', + 'specialParam' => 'obsfetchpolicy', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ], + 'Policy' => [ + 'required' => true, + 'type' => 'json', + 'location' => 'body' + ] + ], + 'responseParameters' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-obs-request-id' + ] + ] + ] + ], + + 'getFetchPolicy' => [ + 'httpMethod' => 'GET', + 'specialParam' => 'obsfetchpolicy', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ] + ], + 'responseParameters' => [ + 'type' => 'object', + 'properties' => [ + 'Policy' => [ + 'type' => 'json', + 'location' => 'body' + ], + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-obs-request-id' + ] + ] + ] + ], + + 'deleteFetchPolicy' => [ + 'httpMethod' => 'DELETE', + 'specialParam' => 'obsfetchpolicy', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ] + ], + 'responseParameters' => [ + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-obs-request-id' + ] + ] + ], + 'setBucketPolicy' => [ 'httpMethod' => 'PUT', 'specialParam' => 'policy', @@ -1012,6 +1082,67 @@ class OBSRequestResource { ] ], + 'setFetchJob' => [ + 'httpMethod' => 'PUT', + 'specialParam' => 'obsfetchjob', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ], + 'Job' => [ + 'required' => true, + 'type' => 'json', + 'location' => 'body' + ] + ], + 'responseParameters' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-obs-request-id' + ], + 'JobInfo' => [ + 'type' => 'string', + 'location' => 'body' + ] + ] + ] + ], + + 'getFetchJob' => [ + 'httpMethod' => 'GET', + 'specialParam' => 'obsfetchjob', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ], + 'JobID' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'x-fetch-job-id' + ], + ], + 'responseParameters' => [ + 'type' => 'object', + 'properties' => [ + 'Job' => [ + 'type' => 'json', + 'location' => 'body' + ], + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-obs-request-id' + ] + ] + ] + ], + 'deleteBucketPolicy' => [ 'httpMethod' => 'DELETE', 'specialParam' => 'policy', diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/Resource/V2RequestResource.php b/vendor/obs/esdk-obs-php/Obs/Internal/Resource/V2RequestResource.php index 5cbab73..e7c2ef2 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/Resource/V2RequestResource.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/Resource/V2RequestResource.php @@ -980,6 +980,136 @@ class V2RequestResource { ] ], + 'setFetchPolicy' => [ + 'httpMethod' => 'PUT', + 'specialParam' => 'obsfetchpolicy', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ], + 'Policy' => [ + 'required' => true, + 'type' => 'json', + 'location' => 'body' + ] + ], + 'responseParameters' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-amz-request-id' + ] + ] + ] + ], + + 'getFetchPolicy' => [ + 'httpMethod' => 'GET', + 'specialParam' => 'obsfetchpolicy', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ] + ], + 'responseParameters' => [ + 'type' => 'object', + 'properties' => [ + 'Policy' => [ + 'type' => 'json', + 'location' => 'body' + ], + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-amz-request-id' + ] + ] + ] + ], + + 'deleteFetchPolicy' => [ + 'httpMethod' => 'DELETE', + 'specialParam' => 'obsfetchpolicy', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ] + ], + 'responseParameters' => [ + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-amz-request-id' + ] + ] + ], + + 'setFetchJob' => [ + 'httpMethod' => 'PUT', + 'specialParam' => 'obsfetchjob', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ], + 'Job' => [ + 'required' => true, + 'type' => 'json', + 'location' => 'body' + ] + ], + 'responseParameters' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-amz-request-id' + ], + 'JobInfo' => [ + 'type' => 'string', + 'location' => 'body' + ] + ] + ] + ], + + 'getFetchJob' => [ + 'httpMethod' => 'GET', + 'specialParam' => 'obsfetchjob', + 'requestParameters' => [ + 'Bucket' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'dns' + ], + 'JobID' => [ + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'x-fetch-job-id' + ], + ], + 'responseParameters' => [ + 'type' => 'object', + 'properties' => [ + 'Job' => [ + 'type' => 'json', + 'location' => 'body' + ], + 'RequestId' => [ + 'location' => 'header', + 'sentAs' => 'x-amz-request-id' + ] + ] + ] + ], + 'setBucketPolicy' => [ 'httpMethod' => 'PUT', 'specialParam' => 'policy', diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/SendRequestTrait.php b/vendor/obs/esdk-obs-php/Obs/Internal/SendRequestTrait.php index 959f81e..110501d 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/SendRequestTrait.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/SendRequestTrait.php @@ -47,7 +47,7 @@ trait SendRequestTrait protected $region = 'region'; - protected $signature = 'v2'; + protected $signature = 'obs'; protected $sslVerify = false; @@ -58,6 +58,8 @@ trait SendRequestTrait protected $socketTimeout = 60; protected $connectTimeout = 60; + + protected $isCname = false; /** @var Client */ protected $httpClient; @@ -93,6 +95,8 @@ trait SendRequestTrait } } } + + $queryParams = []; if(isset($args['QueryParams']) && is_array($args['QueryParams']) ){ @@ -108,7 +112,7 @@ trait SendRequestTrait $queryParams[$constants::SECURITY_TOKEN_HEAD] = $this->securityToken; } - $sign = new DefaultSignature($this->ak, $this->sk, $this->pathStyle, $this->endpoint, $method, $this->signature); + $sign = new DefaultSignature($this->ak, $this->sk, $this->pathStyle, $this->endpoint, $method, $this->signature, $this->securityToken, $this->isCname); $url = parse_url($this->endpoint); $host = $url['host']; @@ -119,9 +123,11 @@ trait SendRequestTrait if($this-> pathStyle){ $result = '/' . $bucketName; }else{ - $host = $bucketName . '.' . $host; + $host = $this->isCname ? $host : $bucketName . '.' . $host; } } + + $headers['Host'] = $host; if($objectKey){ $objectKey = $sign ->urlencodeWithSafe($objectKey); @@ -201,7 +207,7 @@ trait SendRequestTrait $queryParams['x-amz-security-token'] = $this->securityToken; } - $v4 = new V4Signature($this->ak, $this->sk, $this->pathStyle, $this->endpoint, $this->region, $method, $this->signature); + $v4 = new V4Signature($this->ak, $this->sk, $this->pathStyle, $this->endpoint, $this->region, $method, $this->signature, $this->securityToken, $this->isCname); $url = parse_url($this->endpoint); $host = $url['host']; @@ -212,9 +218,11 @@ trait SendRequestTrait if($this-> pathStyle){ $result = '/' . $bucketName; }else{ - $host = $bucketName . '.' . $host; + $host = $this->isCname ? $host : $bucketName . '.' . $host; } } + + $headers['Host'] = $host; if($objectKey){ $objectKey = $v4 -> urlencodeWithSafe($objectKey); @@ -550,8 +558,8 @@ trait SendRequestTrait $endpoint = $this->endpoint; } $signatureInterface = strcasecmp($this-> signature, 'v4') === 0 ? - new V4Signature($this->ak, $this->sk, $this->pathStyle, $endpoint, $this->region, $model['method'], $this->signature, $this->securityToken) : - new DefaultSignature($this->ak, $this->sk, $this->pathStyle, $endpoint, $model['method'], $this->signature, $this->securityToken); + new V4Signature($this->ak, $this->sk, $this->pathStyle, $endpoint, $this->region, $model['method'], $this->signature, $this->securityToken, $this->isCname) : + new DefaultSignature($this->ak, $this->sk, $this->pathStyle, $endpoint, $model['method'], $this->signature, $this->securityToken, $this->isCname); $authResult = $signatureInterface -> doAuth($operation, $params, $model); $httpMethod = $authResult['method']; ObsLog::commonLog(DEBUG, 'perform '. strtolower($httpMethod) . ' request with url ' . $authResult['requestUrl']); diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/Signature/AbstractSignature.php b/vendor/obs/esdk-obs-php/Obs/Internal/Signature/AbstractSignature.php index 87d39dd..3d36604 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/Signature/AbstractSignature.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/Signature/AbstractSignature.php @@ -43,6 +43,8 @@ abstract class AbstractSignature implements SignatureInterface protected $securityToken; protected $signature; + + protected $isCname; public static function urlencodeWithSafe($val, $safe='/'){ if(($len = strlen($val)) === 0){ @@ -56,7 +58,7 @@ abstract class AbstractSignature implements SignatureInterface return implode('', $buffer); } - protected function __construct($ak, $sk, $pathStyle, $endpoint, $methodName, $signature, $securityToken=false) + protected function __construct($ak, $sk, $pathStyle, $endpoint, $methodName, $signature, $securityToken=false, $isCname=false) { $this -> ak = $ak; $this -> sk = $sk; @@ -65,6 +67,7 @@ abstract class AbstractSignature implements SignatureInterface $this -> methodName = $methodName; $this -> signature = $signature; $this -> securityToken = $securityToken; + $this -> isCname = $isCname; } protected function transXmlByType($key, &$value, &$subParams, $transHolder) @@ -291,6 +294,7 @@ abstract class AbstractSignature implements SignatureInterface $temp[] = self::urlencodeWithSafe($val, ' ;/?:@&=+$,\'*'); } } + $headers[$name] = $temp; } }else if($type === 'password'){ @@ -357,7 +361,16 @@ abstract class AbstractSignature implements SignatureInterface $fileFlag = true; }else if($type === 'stream'){ $result['body'] = $val; - }else{ + } else if ($type === 'json') { + //TODO + $jsonData = json_encode($val); + if (!$jsonData) { + $obsException= new ObsException('input is invalid, since it is not json data'); + $obsException-> setExceptionType('client'); + throw $obsException; + } + $result['body'] = strval($jsonData); + } else{ $result['body'] = strval($val); } }else if($location === 'response'){ @@ -372,7 +385,7 @@ abstract class AbstractSignature implements SignatureInterface $requestUrl = $requestUrl . '/' . $dnsParam; }else{ $defaultPort = strtolower($url['scheme']) === 'https' ? '443' : '80'; - $host = $dnsParam. '.' . $host; + $host = $this -> isCname ? $host : $dnsParam. '.' . $host; $requestUrl = $url['scheme'] . '://' . $host . ':' . (isset($url['port']) ? $url['port'] : $defaultPort); } } diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/Signature/DefaultSignature.php b/vendor/obs/esdk-obs-php/Obs/Internal/Signature/DefaultSignature.php index 8f0b223..d83c230 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/Signature/DefaultSignature.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/Signature/DefaultSignature.php @@ -27,10 +27,10 @@ class DefaultSignature extends AbstractSignature const INTEREST_HEADER_KEY_LIST = array('content-type', 'content-md5', 'date'); - public function __construct($ak, $sk, $pathStyle, $endpoint, $methodName, $signature, $securityToken=false) + public function __construct($ak, $sk, $pathStyle, $endpoint, $methodName, $signature, $securityToken=false, $isCname=false) { - parent::__construct($ak, $sk, $pathStyle, $endpoint, $methodName, $signature, $securityToken); + parent::__construct($ak, $sk, $pathStyle, $endpoint, $methodName, $signature, $securityToken, $isCname); } public function doAuth(array &$requestConfig, array &$params, Model $model) @@ -38,7 +38,6 @@ class DefaultSignature extends AbstractSignature $result = $this -> prepareAuth($requestConfig, $params, $model); $result['headers']['Date'] = gmdate('D, d M Y H:i:s \G\M\T'); - $canonicalstring = $this-> makeCanonicalstring($result['method'], $result['headers'], $result['pathArgs'], $result['dnsParam'], $result['uriParam']); $result['cannonicalRequest'] = $canonicalstring; @@ -64,7 +63,7 @@ class DefaultSignature extends AbstractSignature $constants = Constants::selectConstants($this -> signature); foreach ($headers as $key => $value){ - $key = strtolower($key); + $key = strtolower($key); if(in_array($key, self::INTEREST_HEADER_KEY_LIST) || strpos($key, $constants::HEADER_PREFIX) === 0){ $interestHeaders[$key] = $value; } @@ -98,7 +97,9 @@ class DefaultSignature extends AbstractSignature } $uri = ''; - + + $bucketName = $this->isCname ? $headers['Host'] : $bucketName; + if($bucketName){ $uri .= '/'; $uri .= $bucketName; @@ -113,14 +114,15 @@ class DefaultSignature extends AbstractSignature } $uri .= $objectKey; } - + $buffer[] = $uri === ''? '/' : $uri; - + + if(!empty($pathArgs)){ ksort($pathArgs); $_pathArgs = []; foreach ($pathArgs as $key => $value){ - if(in_array(strtolower($key), $constants::ALLOWED_RESOURCE_PARAMTER_NAMES)){ + if(in_array(strtolower($key), $constants::ALLOWED_RESOURCE_PARAMTER_NAMES) || strpos($key, $constants::HEADER_PREFIX) === 0){ $_pathArgs[] = $value === null || $value === '' ? $key : $key . '=' . urldecode($value); } } @@ -129,7 +131,7 @@ class DefaultSignature extends AbstractSignature $buffer[] = implode('&', $_pathArgs); } } - + return implode('', $buffer); } diff --git a/vendor/obs/esdk-obs-php/Obs/Internal/Signature/V4Signature.php b/vendor/obs/esdk-obs-php/Obs/Internal/Signature/V4Signature.php index 25c4dd3..f2a1857 100644 --- a/vendor/obs/esdk-obs-php/Obs/Internal/Signature/V4Signature.php +++ b/vendor/obs/esdk-obs-php/Obs/Internal/Signature/V4Signature.php @@ -27,9 +27,9 @@ class V4Signature extends AbstractSignature protected $utcTimeZone; - public function __construct($ak, $sk, $pathStyle, $endpoint, $region, $methodName, $signature, $securityToken=false) + public function __construct($ak, $sk, $pathStyle, $endpoint, $region, $methodName, $signature, $securityToken=false, $isCname=false) { - parent::__construct($ak, $sk, $pathStyle, $endpoint, $methodName, $signature, $securityToken); + parent::__construct($ak, $sk, $pathStyle, $endpoint, $methodName, $signature, $securityToken, $isCname); $this->region = $region; $this->utcTimeZone = new \DateTimeZone ('UTC'); } diff --git a/vendor/obs/esdk-obs-php/Obs/ObsClient.php b/vendor/obs/esdk-obs-php/Obs/ObsClient.php index c2e649c..86bffc5 100644 --- a/vendor/obs/esdk-obs-php/Obs/ObsClient.php +++ b/vendor/obs/esdk-obs-php/Obs/ObsClient.php @@ -81,7 +81,12 @@ define('EMERGENCY', Logger::EMERGENCY); * @method Model getBucketTagging(array $args = []); * @method Model deleteBucketTagging(array $args = []); * @method Model optionsBucket(array $args = []); - * + * @method Model getFetchPolicy(array $args = []); + * @method Model setFetchPolicy(array $args = []); + * @method Model deleteFetchPolicy(array $args = []); + * @method Model setFetchJob(array $args = []); + * @method Model getFetchJob(array $args = []); + * * @method Model putObject(array $args = []); * @method Model getObject(array $args = []); * @method Model copyObject(array $args = []); @@ -155,12 +160,17 @@ define('EMERGENCY', Logger::EMERGENCY); * @method Promise listMultipartUploadsAsync(array $args = [], callable $callback); * @method Promise optionsObjectAsync(array $args = [], callable $callback); * @method Promise restoreObjectAsync(array $args = [], callable $callback); + * @method Model getFetchPolicyAsync(array $args = [], callable $callback); + * @method Model setFetchPolicyAsync(array $args = [], callable $callback); + * @method Model deleteFetchPolicyAsync(array $args = [], callable $callback); + * @method Model setFetchJobAsync(array $args = [], callable $callback); + * @method Model getFetchJobAsync(array $args = [], callable $callback); * */ class ObsClient { - const SDK_VERSION = '3.19.9'; + const SDK_VERSION = '3.21.6'; const AclPrivate = 'private'; const AclPublicRead = 'public-read'; @@ -284,6 +294,10 @@ class ObsClient if(isset($config['exception_response_mode'])){ $this -> exceptionResponseMode = $config['exception_response_mode']; } + + if (isset($config['is_cname'])) { + $this -> isCname = $config['is_cname']; + } $host = parse_url($this -> endpoint)['host']; if(filter_var($host, FILTER_VALIDATE_IP) !== false) { diff --git a/vendor/obs/esdk-obs-php/composer.json b/vendor/obs/esdk-obs-php/composer.json index 47ff6f7..4eed252 100644 --- a/vendor/obs/esdk-obs-php/composer.json +++ b/vendor/obs/esdk-obs-php/composer.json @@ -2,7 +2,7 @@ "name" : "obs/esdk-obs-php", "description" : "OBS PHP SDK", "license":"Apache-2.0", - "version":"3.19.9", + "version":"3.21.6", "require" : { "php" : ">=5.6.0", "guzzlehttp/guzzle" : "6.3.0", diff --git a/vendor/obs/esdk-obs-php/release/huaweicloud-sdk-php-obs-3.21.6.zip b/vendor/obs/esdk-obs-php/release/huaweicloud-sdk-php-obs-3.21.6.zip new file mode 100644 index 0000000000000000000000000000000000000000..2e535dd1c432a6cc756967afb5bc425cc625c996 GIT binary patch literal 105298 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

2-`j<+ z;rbmT8{*=!!-LI@GR#jZB;ENZIKq&PATKX17k_ay^bO~04zm#d^?l%V^%dd&%+@dt zx1q$50RcJv0|lb~|5+aYizfT;1@oUpa>;8Id(alYbF2mx3HnB-K5Ok7kI>q_nZJ0s zc4`eE+v4Shrt24=U9>eZ9;Y5ZxWc{aC3q|_nQWkFkSsVPLImTsLDwiYtl$2K{nq5I z-R^pyw%b{F~uDk^Y$K$-LJlpj)ezCsxv%lu{yteLW)%LGzuGgjz z46Se(LXW+yMOU?-Ge&lESfgpx*m3qd9<{ezGguvr%${;_CbgzKuHuT{pl*DOvVFfs ze6RAnYFH$u;N5>qe(iC_r~!IBTi2|&*H3MCAoljNQ$J}u+`L^FyS>w7Ut;c|bG>3k z;?WxPR&B@Xy*-*Q(01aD0Jq*APa`mble$4s-?Z=vcy@y9uAjrLs;E;3(RfT&|3n>5 z_^OTAr1)*2Rjp$Sb>5=Lp~J-)6VW=tn}+OI`Cp6+J1XXU=hMtcgH3NA~4* zM!JZ`GgF570^TZn*>`bG32qDV?mlnqydS8QO>_0Msecpn);Jy}1|HI5_eh)cU~pgs zD`L)0{kzyi7ajU|;SqYiFfpY6=B&r7rH$ig`V1o&Gl2*ddWo|Uy;>Zvb|ssAN-htk zktQGA%V-use2|)cp@b}+a)Hmu#pwa~RF^40qf61D>(_gQ1;)WXM+)Cy`w9U8fb?bkU)>@ark3SUG*}T9yP6#)Qq*c7}6<8pH+q z9zAeY4gS%#nG$YCEmT%c%PonflAd+yl=30TM)2Al zgfX8+#D2keU24_$o7kkSzGP_9d$gmBzE|FzM-IYiEJnTq8BleYSuSwpMzn7kg3I~p z$2H+lDJT=v3=U^Rbvn=qlF-#B#cqyAvaS?CHp;3Y?Rp1 z-I|ScpO!Lt^1?oB;mFEd~1#s-e+$4sSvn!9W$F3D&v^hWpT zql2^HTwxV*LF+QUz>(Af1L40}8$K&^oRA4^%x~dr6sk8OkY^GC&ETTzV_Mq*kLufP zoPYixo0~eG3Wg;Q;|;gA>5T>YUBx6VUR###gT@}3KZ3VW#)t;Y}mp5cB4^G zdV=J7d7v1#At9j+F{B$8zArEWMF8P$|JygXdJV0>0E)c<@A&ZCLn_9>#d^$srvASf zo$k(hSK!9^T)y>46yf*&PjYhxaiHyjOULo9I9AIH2+ZvaEWv2lw9mEVK(6RGe-kfo zzL=?68c^JO3vGl@ohL}d_X~u)G{plZJS1pTDmWHiifpj#jdi08a;vhGv>zMC50m1b zW{x$mN#2+hhXHt0g(NH7CVjvW(+%^;s`N0!G`N6mAZVOqGFLIZFVPIB_p2@}_IMFy zwk6})p?^x#TzNVozrDn5(#RL52>Jr4*YF8tG7({W2BA)ixabvr#LXxcx0w*OChft3 zuAl#zU~f&xPt?vuX#xRjBbm;4-I!~tnkUaDi}+l5lA)y;pCHtP^k*528Ri*f7NYp0 zEyRQZP&1tO!C`HF0BfjMGL6ZE;@jnFizUV6st~os6kh7Hxvr)M9Bpv}auetmY5bUA zIadc)4nYf14)J$x>}wU%_&f0vP$mc9;`Tc;mi^^ak(kegRgqW@{1d&+J~IY_EJt?? zJTsQ0R?3F6&z=f6l5^Xv`;QP;z~x8r7iq-{D}-Wz`46#ZwBMS|2Emw^yV4=OyU;D>~4krru^v7 zM1sv*0}N4#1Nm>I=;HTGp4JXU5(l|iNeOorxW|hsn#E58ecLOsSq8i3X$9$cwp2*z zt)4?_PvgO+W`j3nW>2awFb4(xVDO32&%VroLHoAYb>Nl4tZAD>YF~V3a!aSmK^b&X z3(r4%5?X8dI!DD@)j~jm5?wO$LTEJ_@kf^)uVCoo_^KSKwiv@3M{|Jt?&H+S+*N-= zhP?ywV5_55=k^c_o52m}`z=WSb<&1kIA%pB!a<9{;Yfz#XrvY?H9&ra2;x$d7U>=l z*x*}`94jGj!Fk4J;yO?y4C4dl88y@&2p0s}0wHxQ6Xpp6ytu$Pm+ek`5IN`K%YA+3 z+w(IGrk1;%MZaabe7+c193Guv8c!B=U9Xe(O44z;g)JiG%-`pEpxhAdMIw{pP?Vuh zAcTI2n{VoK{f2JGi6Y@nhm%>%*R1=k8tTsiUcSv|%mF8M0W-L_dE3E^VO<*j`o@IZ z&~?UBogp1O@*0u}bBwVnY0OBw1xTcx9xaI&tFfH@eb^qFXZ#gji@f91M@;lY)E^${ zh|`8iSiF2Z7oDt#9!0i7HVhNmIFr46a`Iy^0+y(0AaIDM74e0L*58|tkJP?TPS}py z&@{IDnnNpOR-7ky9zV?)9`ELKmi!|2RWix?oH+vpK?eOSiBX($zZFkUfzJuI87*qI z${raPuL=|zY85joG}rkrnfx}4jX4 z$L&_k77rm+v@^SG~rPUDj zJWEwuKUWY#T{M7y@j|m$tfw)SM!Q3yNTW#|7}k^1Wg#O{FoSiG@+li8go1+Z1G~5jf=l_<~5_4wl~vBZCUHDjOiYTz=HA@LUIjSmGiV z^3Vm7hv^;V!cz}|`|n+l5J&hdENb@-t?ty~ck$zi#qV&F5E&BV*d+B(eEkJn@fi}} zFXPS;x9g&?mS3;vu(Fml(^Ff+T*`JcrAdqzCY3lDtX)F+p?_mm``oJ}+DJ~PICN_E z)%Nh_ow?%@A&HMTjswc=0PdF84$)-vXY=sEv5Q4nL?YBQLXcOCsKj&g?ET>Um`d7y zpv)fN!s-WVet70J@CCo9SNK~@hPk%>HW{|Z*l5+;vWG}8#!a;uIvd|d9F2(ZT(DG3 z1mG2`sH|L4$P_i$hFYj4H+M=7R?ut;X|Ck+rX`m&1N8CO(N4w!3W>=x)N5<+Hw4yK zzxoW|8XLhJc)bm=4sp%y2qeEF7BtTCF*9Zsx>x@IU$LrsEr?85N!Q3vxLIY?T(2w- z=Yfna8Pl7$)&g0pwqP`UD+7f*7Q)mW!J3#|^WXG;HiIz5?5O&U%C`B-T2|1^DTvBJ z!W-4Aip3b!>$buh*IUcQ7}xu>^359(c5+0_*9U6QaN8ERUI38KpM;lxb4A4kSZ}p? z3^|f#1)KTl!lwQs1d8p=@$V9!YY)BFxZp|k6j&XwOE>$|r-jNRa&O$OqJ(h56*}+G zE4D^xTT~ojB|eO|v;w|#xEcSZyua!p{zYu*RmGWIAGxo@U}b))IXfs;SL#SOyjM){E;TZxxnuFk_BPyOz~bV4^%)lT5g|kyxZJW!8*l zJ02%*C2ozoc^KuMHOfLVdi3D&#zDF_&oQdMH~(Z_h7TJ}3_NlZ4D(gGTh9FXPT)mr zcn4Z2@oM`ezF%78p7^hu-M9&4#z5_hM_$QF^N6C1l5Gnc0Y*?^&5C68i)rC4qBjp?C}3xw~xrC(1Oyo-02yb&pMmL54T9uW{-Rp9zcdSoi^M@d#O zolh}YWWi^WJ{IF(mhMbXCG1-^dlA0T@9h%0Zd{48j&nw6!^N3Tg24F3Ei=dfMGqR9 zx!Qy6&mzP0DJsLjwy`!VUHM+-2bv`eUqn+tVVS_=dNlhN_Ez0csp^=21hszcYxis} z3S}sKmY04ts$g`tXzfx6akzDOnO8AHX-OFnB7n=`4=I>|l$EWIcOPBp=6TVnMQnaP zK+E`cr4O~~9#?tEoEj0zd_&OIoKn$?(I2(d_y_OJn(foY#&fWS1Oh(XzMJD7*i8~U z>ZiZKvI>?I@&V{zwHscF0jNTzIg+rEs}51z*reYhyp05y5~7SsqjRk8?@>-Q&xXPN z*~`VqtZ{~@j4jpT=?idmB85Iwv*9s1if%hEliDKG+L;qNS>_MCzrF2K{`SOiMk$c#R( z3mVw&qpKLl8pTiADk^9JT$~$|+^>KQG+={FQI0U_Z>}F-!a!DzVSwRhO@(tD3=ek{ zS_CWi8H0Yo4k|@f2$B+N-zX6#R~U4}aL5)*;iP)Ly7O*8VJi6UAxzd$h}f(h>G}xpGK!Ym8S=YR`s(Ne2J$L^$rBl*3n$yh3+1@Ub z^43c$b)AP#l*oIa4mk)!fn5`prsc;)qz<78mD`Z51>PUy7%vY|M$F!z;uu^`}PXD#~8 zmc`S07{vSwoeK0T#G6B6`h>EvInnXS16^X7vAsyW2lv#M-JR7>Z1mUCJt5-q)&NH$ z77z#^`c&n2d{B@IOtCIRyF`?i zuEhT7aTlTt@QcW`3^i;s)I8}>D*{)OclX}2Sl=6bj0^yuL!d4|1IE_Gq|;M3NI3UQ#yC?zXsuU>YaokiO%5QUWq9VY-$XSUxJO zzPN}~pJaodmFqHcTLLwq5;xGJo<&jm=?P~=x@plFZmwKK%mrp^#bROa7hBj?`*|7r zo|@zO`;p4@!)7XU;NOr8JGNgYvZ<9X$(ygd?f0agul*A)u7CRdrigW(y}-#W>1lz1 zsi^#nXwQ6F@J=Aob7F3V+{wJDc9>54<3uX zgr~Y-WN?L^b!QIrZTq@{6GN0zkDzQQ{9n?_$qh`(;M_NpZwBK??eKoAU!D7Hs&>wm zfr?b4$$=rEH);UkC#^(_w{EK0*CqhYQ;0&}r){y+`UFIB;)P6sj|imjM}VK;Po|D= zYD&#UGp77018Juh<|%``%v_5ow+moH!>=P(MeU@};udwpl^&rHn{hzQ56t|KISc~{ zSxR3dWC%nDA3I4rUcEFiEMC1jb1YuHrV=Vay)F|-g0YTBa`=R}`>+Rcm4k+RzmDa627Bb2Tgcj{PavcH}!t1uWnYmmd4 z74H`&=gf%|*Mh}d!IC*WlPr7714);fayNm7fH!2u@V=_vz{o}i|<-HV{2yWh{6h-7-}lpf9|h1zReO=!D$wU%YE^gs(+cJo^Z3^Q~AYk6FY zp!wc|1r+0xn27%hI}a&8z_)^V8kJ`8{(ZdLX@;r|E^>5_0b z(Dp%?jwh++3fTh1#;9kaQsd5Wxv3Twstss=$k*0kT1T-+xxMp9i}PerL`eS$4>Kn_LaU8V<`y8k1)pKOUy;L7AzyfVy3 zv3pz#S4O1);Z{}|r7X+z<|~unpfkIY4nL^L8nH{G;1xMIEwt5Y|D^}m79(P5d>Igc z#*hcSbC?KH5yaReo3DeVNBDngZiCi$R9Mn$){!i0x${lx5oHiiBX2(Kfn3~(~JqMUzN$y!~D}uJl zNz=jKJHcgm0-jiN#^N8Em+{_0G|~7mX;HtTMy2#eDc9Ti!*w1eU(6%;)F-Q*>iLhygy5P*s}U_p2>AiNjtI&cZaem` z!!>xwhab5{!otm0%uUbOc?s%U@%c%iZ7JX8+#KVwRQk_Sfp^QVqJ^t`-D4M~uv;G^ z2k+FBGgJ7QLda^r=+CJFA5|h$(u*&gsioyM{5%%BY*W}*k~JtgqvC~CU!tKe;)lq# z^4pzTA)+8BS0Wez99Q{2IUK1n)ZcKDI?TRE0ILOa>OGnrC#F6YEOeW-aYbO&b zxgnN1UHIQwOK24Jbq3hp27BaoW;TN!l%ATpI8_z9jv-G&yMpml(r*IKWcKc(aeD(k z@GMq#%a?4n`fd@#j@x_W9GF0TZ~>?p*fZTWv{pEF0jMd-#ZNWozXc>D{J)mq5%`$Y`tzVhTI!!idM9t3;Dp+a7jLugb1fW9Y0IyQ}OL&-`MLWn)fohbf z-iROFmzCXc{!V`kW;YXXQV9kLDdAXwL@rU+Q^Pa$Su~C)`k4f;gu3do%}iyb)NKmT zdgj9u2}2eUROjemHOQCK1P-y0Wxj+g~Sm948x<8Y%#YByn(WZbR z^#j($w75TOAs-HJI$^hhtpY@g?Job70Y&aCL1w1PMEOfG=UmhD z!xDW$*&vFPT(aVhh?Ji#8$WXpCKt&AN-bFzVFg)8DWijImoEiFR|%FY7O9tE)XeoQ zyypWB8#nAUNu`+}pw)j&1yta?Ao@v@R|*mqVMZV;GZPZ^VaaJM|7@L!*ZNs-+4-Zs zpa;U(wET=GG0&?pkB|(hsDesLDy$h^`oCpjRbaR@ihnh%Nn1h4TpP9|=7?xiqFRF5 z|NBPV%oIPJcY(%chV8E;Qtv=uSo!D`SYAxnz{00&&PLFFM80#9jq;s#1 zyeWrtqCyEuPQK$TXlI_IT)B)wd+F4OY};mI^+@5owKR}_5y}$iA5EFDhiL|FfdiFqOf8%V3T zfk!OLy=Cc!gSlwrm+h`{wUrhhU4%vK=k+i7{ohT z`A1szdaUrW^l?8&IO@bScB`!!#N)RRh|M|?72l3gu0YIcNwZQcDT8=go~;oh@@$hL6k;TOKI*r{GdIWsWaG3%6)O>Al-W zN8!zHsg%S=*jSGuOJH6ppomaSTo`H$x9VoJ8nZUN9=Vl_HPkuN z9pM7EV*sr$GvOfgEM?&l6ro9&XDY6)jp`c4Ozody zahN2mCSDmdNc{vJ;(I^1ICGR11__1%{iS{g>HHK+!%Sx@%5_JK7DtxjO-o_fxG`pU1&=m1ijv)q;ZEkmb zQbN2UpQJpR(2=bzja8cPs7#lmXTr^j)o!gkfMAVc<9Fv?xaP#gU@Dwi&94N1upGyX zY4l4Ps&P$xT}tz+cFzQ3X3cMRs!Q));{Gc)&c;lxX-wi|aBq2C8Q>E>NM$*sG@^l`!CT?_Nal>X%+8f4z%v7Wgi=B{iuJ zci$r;@hiJ!+kjs#tKe6%vkc+mdBD}G$d(~ZWXCWrUa9$b?#(+-p{t?1UgTL`54vLD zo8}nYnbmJ@5BoB%A4aDB%EP5~+E@Gz_bQNoT6k-mnj_4Vd>uZRe4MpCd&l2Ov9&Wu zvLeYfBFWVfm0wbMqf(L^{LC+GqChJG18rmxh3nmaI(^}xb2Xrv>#gaBd|0y7%0Tn0 zbJx!{wpYN-Pm`m>!Q=LT^P$4%o_j0Wn9L$tFP*vw@o=8MEjeDvglr#c4b(n_glHct z{uw6!8DetPxy9XtPr4q3FDiOchFnFC<0$A2q16853 z$$TQvB;BkW8{;!&JmM-(m*)76Qu7I~P=Kw=bfgniTZExxen|siQQehpPom#VX3j4{ zP-*yi9N_vj$so=XR{Mplb)g&js`I+a--&{~(5mPFOe0%PUtB;d%6FRahS~pfFd<)? zK;z051!BXoS#B5=?Ni^Z0UsV}Q6!vZ=~sN~tMS~;;`?ixG1qRJ@r%-lDw!G`3h5Atg?Aza~wbEn-w&ZV_ zAIES{GEo*FeCfHN7gabY9&G&68TBj4KB>?Fk%twt5W-029&%nkDg#;rofUSQR9-bPEB23Chu^BA7*|+B{VRdL_=rSN_)a6EOaZ5Vv3Mn$qEjHG<|>?Pc5+aPxPq zVxB3D1+z2Ix<8=lqvR@!vo@wRw(RBEwd~5j^2^i8`I!*^W07ud%Si1j_JQ8_`!ny3Z1gv9@!VB7yeeO{_6*ln;O{=5~*0S1}{mXZyAGME7#oM9fu zI67lpDo_sxA(Ks8fIOa{Y;APnyCc!ED4dk=P%O6?_-o6XXWRSZYG?;=BHXIkeQ}7#QE8?s#UG3qiVXLV!9^P%CLd+Kwq#& z0z+}I6`++~(5!!BMF*$Cy#utEgkyx3SUP2SX!x6BnJkr4 zi-=|!6kCGSUo;U~E33R1&PZH@4A<$XQ%%KfQonXNfksHmnmFp;Qx82}u+ix!X7$9c z(MHwC(kb-2gcZh9nvV?-k3YBYd-@C=k#uGU=1d)UdcuvF_PDxog}2t2x+t*6H|$9_ zpNpnEHf}kYO$Edo%GI)1feR|rMNg#3=b7#rR?D`OaJM9ff+{+CPDkpXJ$%K2=H}U^ znN?(sp*CV`5S}s%o^skQhg>Q&PeeA;eA>(h#yQjT%DmKBT6=YtB|UV;%9H9;=ws|W zkLbf`1%vK0y?JWyD{9S-CSBO#*TVIXE>%zJ(AD9JaN@Qx90;4Do>shbJ>1y-OKvO- zXO0`-R3&m)GZb<)+paA5O+*=1V-Ix{?GaWmI*>$#QJ^-crQ!Tn$6uTWdRgmF#(}1j ze2*v;#|ApKEK~|_nwDk8cobFyi`3rVS?MB}5N#6%t(y8Zk=#wYqsZz?Iu$cN75jR(svJ|X=l1+Ft3ep5baj4I&($xvRd64nb z=>;24Ib2VT($d1ED`Pqrp8>&gp9jgsJ9>0Shm|MGq+{KnZE#oi+? zZZ;S8k?Hy3Zjq5aQ-k`1nY(9E~TJN{gZ+WqfZ-nk^ z;-aRzE+vzyCFmvKU-<&gB2#E53&yZA5<>YEE+RP(qe2E>|M`Bbo|!!E4LkDf zsvCzxGOxZS-!};*mA>C!@2jh;*PC9gJ0iFH?|Cm8cb|{T!w*jmXE%7MD14#7QV9}M zUp-GoF_-u6Lpry3?pMq^X1hJI1%LMG3`f3GMAu^Ui~x^=!>x%V8Kt$hQ)J8l38QcK z>;?@8N1-}PPu$COJF+ZeTaMR%9}bR>FVlyk_oJ1gcI0|BIec5*J{ew|zJEA+y*o1a zWUuh=u3gsM7K}wl2S2>Bj+QF2N#}K~m`Vvhsyie~41YLbcT3zqAxBiRiq!y2*}4 z+1v0i_XFHUdD^PKAy41s=5G1=aJ@g>B&BC|Fx3qQwVK=@iYUHYOie@STwD}{tc#$| zd=7WyjisXw_2Pdl>v7x1M8^KP9`OQv7!iEHM6dk^ff_5lu0(#lAPJ6)pK0RQl|%GUpzw~a1OW|$%`z0G+1 zfAF@@|C6_^{a?JTb6WiXbc$lE1?oM{K2hQ}`W)2R6dAattPizC&UTS35pe^%hC`1@ z#K3chtUPrO8O31A+3>P7GyvC@+D>XT*Z*d8yVvpULd_qf#uc62A2pYSB`>!m8#|6n z?CGzL(N)OrEe_Y6SSo*N9*=+1^h`RR|nK@RbqU^Ug>gpb`XS zfm*Xfk5ulK>yX6EBV*X~eO3XLfn8aJIz!a}pi@9zTP7t5ESPuzjyssP)6n|hT;Cfu zkQ52cJL{i=qUks95(LHX(oc@49JI{dnU97zdTg{?;>FCGtUS$L5Eju=sKdX`v3c!` zdjx_Xcc9Z3=#mLrr>zwbM7}%lrdyeRYFab0)|^?yK0lTF?%`&14&qt}@OH!?5Bu3E z5auu=fVu=WjuYH}TP->NV(4N;;p4)ndv64&baK-+B^Ls+o?aQ37 zaOu|YEaxS(%{}C!hP2+XRWrsRgjma$vPJ(((mG1OQh0u$+u#;@N0mWHQM=Co zb<_nTah9YuyKK!PR^7GH#4FO+-d^Io;QIqKE{!OSmj(D~}{*V?wom@})9M6a!AZ@wHR8l-v!3os64Xa-6Ch zH_t@SPIy4~gwZ2%?QDJsNG!%n?>JE02wB;SCQ6zM3W(5Jp$AMQdf{2UbESZEk5)s~S+4K0MUgYU<( zs6*$g zDF(Is>p2(gD!KP~(nb0lCw!*u`gg>VZM;lSD`7AamMlA&C{58)QjtanFi;F1VRU#= z@EK(Vs`KyNG@LVxfQ0-)zVwe7>u=#z#%70p70$OAgC_bq` zh370*Fv7!fC7xX-)=sm9|9+gPK*Zgr8LS|kc4)K}!to5^loELEatat_!i>;9VM6Oj zS~q5Inr+>*<>+lwC5p76d<)h-?KY>gT$@~KGb(PypKb*i%GIN#KYj?u+(x)tgkFsx%-pgCqFDe%^Y6mWlxjj?r#(fS{Z z-BWaA-@7mTifx-6+crA3Z6_Vuwr$(CZQJa)gN~Dv-+$}uJ@$FWd$Fo6)=iC3bIiHs zvp)0tBxgnobX0i{tD*PC{zd*}3Kjx;$W>P6N(CDxDt+AJ*ztk#@X^TthvA1k3B;;& zwmt^<{Qeo>B@1Grxo8>9?ZwhpD~DrUPT4^0RTp^BP2;ftHzuI67n?)WXrqm`M@8K`$9l z(nf`?z_!3osIhjBw%&u8>m1!NDm!xGyNo1ZFpjF$^~KV=gTk-BWFkVQOH~%M!i}D z#%m*I`6em5oJ4>D4oXlC23J2n$P08teTWQOKlANK*0^e~`WP%LJsPu-bBxLK`p-)L zBe1d%N;^OG**Z0WDl3}%!uke(>F*N3MM0lGbap||MF-*};i*l$oWQFZ>W59Jp~b^f zSURD84&gBVvtkaRgI$)s$4`DqN>9tbm!9&~@DIG4z)Ne6LV3Krz;!wn&2w}pK$t7e z#CB~0=z5HXz)7+k6@iCFA$>NE0GYtLEIgdGIh4{`u}UtkvZ zv^>XXzJ?{w@}~vs;9cfg^H}n5C9@pb*7NiH^%H5XOO$e)=x3xfH&3DRRfR5Ca_n}HW!nGED{-EP>Tp$G@ymg zRN)ybxOs;)1(|~4v_-Y1sPnZ)g(nQ*|1iSA4i-qkMbPK1|)Bw@jb=;>7iPchu!8tmS0XkvqLk#$~#RF`ck=Owqnf zCc_~PQ?aPuqx?VB@w0peP9lRNfy8y&|;G2I1q;T(2sN072xeWP-s-EF@{R*CP; zXU~vTw+STPle}7v8n>~SK1si2>^_g8W7uQI&n0a`)9smmWbCQ5P`$}d$YH9`aaG)x z(nym83Rify84P%{C|hww?n@$Q)fZ1&GvT9z*3BQaHm)=s~F>noHzR+dG zf_v_5+%9@fzyIz_1;TVcU=`-F7bq~?vxNRCiQrtu(_6{kLo4}t7x;;)eXpaXHUf`* zLzP4<8b=V{kQGfh*+>3nLyF$KL*qtPDXS=kequuXQ7pA)V{y0}gXtr!p&_ofQYRMxAP)Sf?-GAl9_52Z1k4jpfCrC1;{|{sB{AR52oH@vo ziRnR%bD)hc5cra7+p`t9G$S0XBu;w;M8;`a%N>4>X&l8-(c%Hc2)^`YZqgQHe;8@bz zL}ke*gkpYVm)PSDr^b&?U&w#AKPF4}DI~+pyt*_iSw7b71Csql9_R|FtP=R0&}Ns> zZZwUQD~^Ol5o^}2znslSpbm;p1?4Tp#+95FF8@+WE^MBk<5Lb&T2?&SCyD8z`o)=o znvrXkdL5o`l|6r^n!=S^jCI4cqa3j#e86jM-YiI0W z(4_`Ls9?ACkl-MUg7s^4nWkyq$W;`AjzeY$aoBLslzy>ZwEk9ojEyZ|-HmzEt}!Fl zW?71{e?Y4uI1P25izk;@yTND+iSGU%#hUVuV#O~L1p@Hiq-L3vD*DF ziq+*G#d`LCDb{6<5?L>#aeKZf;P2BT>*cSyTf96K6x|6ByO9G)1j(7}2>(*7`5jr= z|E5@ROV8TrrW-->Z?N)m9d|25dRK6$$YJ(CAl3UUGzxv9o_HV&)YvL@ehpFv z2V0}Zu2kdIOK~f&0BfqbT$*{b6pgTvZz6gHaAvsH_ud+8O3%&H0CMloyuPGZkR`5=xMDxGSK)9eK$$>=!cADqF)aVj5Ws#g#;GaSrI8F0stUv{FALE* zt}{pazK1tn!`MY)LB&Lbjw@m&w?+bW6NgGY7k`O8$em#N|5B_v|3k6z$9i}FmtqC^ z55>w(k5Zr_79#R_$pSjC{js>beMORemGUx{Om%)uI!U2~FC>4E<%utq5J@3@SY{cm zdwUHD?U_`BE)YMNB2GnKr=++>DRG%}C#aBjPMKDRpniRrC)C}t$14@dnO6`$O(U?e z*w$2{*9sSp>x&>kYvF13%uuG%NtIXGYp=@fm-&gO7WMvsArhS%FA(x`x_<;K zg`W}4zX?{jN`L8Gu5ZD5vFB_ANAN*dy};2_FI>jK?HRqjT(M=)tOclhwEG3|SmE@s zC)`MQwz#Twh9Rl3q+lV(qQe+j8{SeQ*P_k z0cV^sq#a=*k(V19Q;-Tc)<8latUJ$OTn+P=N9BfqATJ_Pe zO|>f1kq_z==3{Vln2bLTsvwiJ+Hj872K5C7zzHbW_AYYdPI93jzxLz(tQrr2dd!1y z5j_dvCV+ruPz=!=M3(k9FT(_=y^yKngadGq-yk?iH&%#3LB|L~gNC4w;^eiWagpN! zagj5=ue8Q#4pKkpKF}>94${4d&@rNVhy_ACWPKhYRiaQ4yiY`2a$@SM@+yUbaMz7+o?w{x7q+`RpAHvJmOp;hJYY~Tc<1Db7ia;e_t?Gk!?kX44?$GSk|kvTN4 zuU^KHpBOU+xE&cW;8D0{?`^H|im5buU`$1ct&X{y3{1<0FG0a33tf&I2s#;gc zH6vWF+XLhNnM~iO_C3&C?ZGEhi1Rk1xsx`loc&994QM|Dk3ingl6n~DIAWF-0ze@% z>925kI~o*ftnoIWf6b|}E{$RUeqZO#{Yx|#tW&ZLf6~{56?pew!=5MTtxXR`vGYIwdO=aGy3kyRC4oW1xx@HFU~VK|7WN5lQOAnP-fh+0F1 zEQ2Zg4*${x*uFo#>`&0J>Oax1l*1&#u)`)Rg>k7_V&~?XWD_f?0`mfl(k%=-8dil} z58*iU-7WiEP^H?(h`ztKsVUCV_{U=2;#vF`lXtpSS^E58RzR|ZS8R~MvrLJeJy+Y3o|z8@-V z+FbeC;Si<>#E@@_-+V4Z`1d`=4R^UM55#5v@y9O_;aXa93CT>avGa~MN5(RLtCh${ zMc?k%ZmvrJM>8&}7s}!m=QUmni;!i&{XfA5NH7Gi19U)b3o;MPP`VR=X-6mjEEIYv zk|R<4@r^RIoY+SHw#O3R_BhMtAA5YN)tAWCi}5bHPWX5issNdfj7L5Q5hyE%)?-AZ z9D@j6T%*zUGdV{#w8d~QOyvMnlCEa6y~4)9??NHZ2~gwI0bkdGT5S~T{Q$DP$o}NX z?;Yi1;cGA(p4$Myc8C$3s=Jzs(~(8VanRfsx2Xdb5u*;CB8B|7QL_Rlg>CAfmc|9y zcLW#RoF`f&T zR4x{%lg6?{DolvfmM6wiJo;_vb6Ap7L%jv>y0g4R8RuUj&vJjtm&yB@@0taWLU(al zOaR+T;w<>_+wWX7abwW9Q5n?;k#%pyB$z3{0isK;FcWl?Ag!X zmapmSmNodju}s-&>xwO$^0WYo*q|J>i^(-Os*+67$I5>o(rw#;X)I+dVw-g!$Relxm#ewICqF4RCYw#k`q=X1fLkNs@+kGMgXYK z2@nj%B?F@!-v}txh0f_#QII81GOG-L5&!Zr_?{fkaToI4pQyRzs>VPn(}2+XVVgbG zxb5#C&&Ky%zt^>0@My{14O#^t^xk%a78(vLkmLw9Az6#4f7RrP>OhNe>!6PP@bF91 z3JW!_n#^`3RpfwUEQy_2QC}DRdC;Sm3*fmJxF-KNr+^KV6-{4(9J4qBnPRTXSqIWk zDb#M0RtxbKl3Dd3Iade((aAJV#)B5YDR{#>;yKuDM6i)v-_MEbCy?ccy;EAl;_ ztU%>KtMcVr^aP5rBa&3$svtRp^DDgaim@fZlTR9b2CIvKX#CL`Y))z87S1f?^QTR} zuj{i}JkeMc&u|52f6*UWMZFSaVVwOZ76||uz|Y|E_!bv`(=49$>uw>NeLy~Vv`;{lq4+p zMbsq50cPdvb~6m+YszLys;8uH0h;RhciD|)qX~*I&MCknO0Lpdi}h8pk-~HNFaG|V z(yZ28k=Y+_*tWPCHEQ&kYoe@&!944+9mUbes&o%iND&wlk%lyGD6W z0dRr5)haSS z$z(cas7MO{h zlublKs|lOS!1^Yl$Nf&P3;)XE=#TZWop%=A-XWRYqNNtL+oX*a44&q1rxMVyf*&NO zWAy~*z+)DOJKHQe213DGHdr==neG|S6{Q$DZ>eL+xWYQJ+?YH7Em;?Xp_-Rtv(y;v z(XwoS*KCHvN^P|cs@=$R@yLAcp*m1dV^&>PcADU5qY_6b}x0{GS-}lZLwY z%Fp#okt$wqFqI#D^;IffXW0eEQ&A*)czC2)?)?c1YGCcgC6jD_JFdy%o5WOfz}1$$f8$UEThZ}&-;5bg-2I}S2bC;+OPl^^W&E{J(FdBul^o8RbFa#Pv`YP!&2=|L z5tWa7P=QORR4n6W-&34 zK`jntJc~f%(pTK2J0~Cj-L9yI=*mv6VPgf%ARisz2QdNxT#yq!4~0@8U2U`uZ7X7(xRaR==A_R_}3-`=1P+LE>{DaJ`9u_|J z629FnL&LmJh=$mfuMXCpndv(K%Chlo`h0i9wmoWKfUnY zdi-Jjskuq(#i|mOr!WAVW=`NkFbak%NxdY zdC%CuLsZ%q6dx$_C0W>W-Z|VQPXSB$8=!Q-ZV2O1B-{$!CT*}OZO7xD7X*!*!S78) zdYP6xnCCo8!IivQf_7r&3%GV-2OdCKvA9X8s7a|1pjhy#tFl2U?{G zw~k;vlT@yp(7KaEdm` zrLWUIo)sL*AauGSIKjaLNsU$B}gqi$uZ#K}{gI#(s*S&pMCGyrXEy zTbznlg9&u+#Xp=Jeb>HJS}4clZ+T+sk)_KgaY*lfT0HXWFVXq#ez4dH;| z2Y;QXK2Gnt52Dbti}pS;RXQ)P|pQ{vLy=8v}av1HI`Eq=Xw zyVd3oEWqai$=haAm!x1Sab+KSA(8e@#pZES;f`ArHL(P%r6tNsNflO~gc*toAQ|I9 z*mK|W_>KBxT7{1&et3V2g%L*O<2Om><>Il+@{YZwF7zuP`*)ITZUJ9m9*?a&Pt06a zAo>qUZvAv#)$%+6@5#hfg?4~m`G+K@pnsEOMfTZMi+_=1@kmjZ3!7Q`Z;}js`e}%V zL16RsO_B`>%C`SSlIgAVGjTTG^LKY#fUaMJ`Tg|P91lvZAv9lVKjOB5o8SILlC5MK zAvSXOAKptov)pfV>mt8NvQOEypVgFR^!-9XT&Gg^DW4GEUHG**s zrCo$hm=4RJu;9_j@K&A!$SGJ#VkB2OaQKBEUCaFg9x`Z;2t{VPd>m9 z8Us0a0zW~DM?8ww?cua?NcJ29f`RA= z>rvwSU`3q`&7}Xhvs6@Aj$t3-0G8P;a<60#xG) zf^2@8%}~WbtCz%CimgOY55r-s1DdunA}E8BtO}n?SkhKVVne#e3Y+CH2`AJ1a!~v+ z9``1~yUYPkx?U(%hHb6`bAOCxqX{819bw+nF+Ba{!mWP2L!^0rS_6K%%=_N9%RhpX zCa$U)O7@6`nE|&bcB_}bNI$2LH)W1VrVtt5K_%xU=Ls~QcJL|5Kr4;C?Fjlk9kC6$o7o8 z-u1M`qN>w2GsbBGHpf}y+6m3$&mb54NzLx9xTcZf!WGAw*r%BN3P$JTrb?SS_x&n9 zxy0GtiQDZ0Jnw#KzXR5Dc23xBu1vkpt4N&d$c%!q>1ya??Obk4yJ#jh?!IXtc>1y) zd9tdb_q_s6W+^RN3!{Zc;N22_Yg}r~?4%Qz0`LAs6rE+99?C`T>DHkhndJrR)6&JyMMewe!jr8Lw6NR2|M6_=e{(Z#hc`iumAq@ zhj=XY;!RDri%a*IFZTyOI>A?mdb?oQ;tf3F7psh#U<#PMNI(>gh2#ypaeRk@><4~& zX;OlltbVPNpeJc;IF8Lvp+#80!P^!b@z4!2!kLIy9fuxp2~EyvtgWO$x7-#@WOpA} z(ok&oV}w|H=3&Y`VG$PN{f{5n;eKaM>wJ99!XlU=pryw&?x3Fs&a#Rb#}<1;8Td4J z1I@8XW4{^H!3meQ7H0S80|CsA2!(NbgDM2anDf+tlF zgcbyn;h@5}T7-x(r@HW72x+)di&gfnT2_Qqq_h~uV(yz!OgB$!a-Ed##-(oX+RR8r>`fgbx1``j@diZ|dpd}2D zYM5a?v1{BgJG!X_es=KEJWtsl)-5l3LsXWRr0R3f>bs_@1%uQl_o}ansDBU_Cz! zZ4)?T5qXDl%QeU|aZ9{FdDJpGa2zn1=go9NLT^Ik7|6-okTNnIhNo^V&TOMPZPheF zXSrY~Winv;8+3ECvYd8ND|_)#2@v|%i(XjN74(aGlyEt*s6g0A_~TXfiucA7(%#ij@)(`6#D}bmN2{F2!$n>Y}nFahSDQZ&=NO z%vqVKENwkaEl7ji%>giAswK)cD6`YuKN$OcdD;y2o)*ERpdwJ@;4O5bUYMc@475W{ zaklm&2xw7xO)QbkrmG|{A7P02!Rbwbav$e&GB)z!E1XzB{K*Iyoop|vj-WU zo`Npj{%}2zkc>X#hxheHHFhZluWDj4Va|&yy5^W>U*tHf2x>bsTM<@sUoS3>F3F(2 zU#$hf+2;;+ncJsOE2E+>8j-8(FJQe_kF=LQ=xJ}w@W@U>BW2;)yA(CjbmdE`0Vz8B z7Q454N=IKP_FKjf>^~z?!M4-xTVx0g42L3|XRNsE4im6l=Ey)6mWec&y+BAv;d*z`7UV)2}g%Y4S-9IT zW^^lY@}yUzWP9?Mpr#BT)rQP^j-F^JF!UmRX*=lN7T_B(o=@#_aLeZ{NF(YA35kL) z*CsjmmuW@JYboB`b3Vq=4-bb0^OomdXLig0z)pNx-*KJ@Gnxe-u-FfoBdm}G2OXKu ztC7E7v%a2+)n*WBEBvJQ`U#sMuAEmLq=~7do@}q0OI=t2Qz4eiO7!2 z?;QB^aQQ;FJWGJu{ONJZvi%UN&)wR%wAot3E@KwqBO+|xzRZQPC^DmB)eEk2M|*pYQ2|1>^eg|%n%{wGvvJgfMU95b>RwRDAQ#amNphz|WkYlG!&gcp zV*{j@Vg8Vjb3*%z=t|81Y}W~w)CGndj@>1G%ZdEtpfAm==PHtt%~L|leNzM}sCLig z&2c`(ct}nEr{qWxC$-7}s-Rm@zggIVF6wB}-$7?!M8OJufj@Gr4>5DSALS8yOzvxg zLgJWgc5kt?3~cGrEb56{DqTuAHSy+8zy~5{v7!EKyM$^@qGTvA=$7UvcCun9--QSh zLFJ&aK;xYN-*OF%8<8(QM~?V-)x~G(2f!V$R=zopb2|v>_9U&Sr4Mn^h&4Hu9-TSY z`(xv+?}*8~lwp@Ed3JuFW)jYN1Z@LX< zg}Vqyz~O?1%5X~Uz_3N~P6?Nai=0GYSlvRvRM73XBHb7FtwDx*xsAYnldKSPIjo~A z?wHPY&?lx_6gmSO_EkcnVeEHB4MlDap{g}?dF0ZF8buipl=XevV>Rh2_X> z46qzpZ{b11X7EKqa7!o$NlR8R5w3GXA`)kaWhkE|_tpu`7Q{PPvMdO8ZL7*$XpP#P zgc(?aYfzEUF5=bH)fiT6mTvh>wf<07RmOqcnEaRk?Jk-?LMd%DyonmVy5rOaj~ z%+2;hyU*S7EEra|4_Q(HP|c0ySyMwY+bV@d!(O*ax-HxS)~8O_HG}U_a=&XZauzf7 z4}urOI##+pF^fN1x5d+-!5cIK;jby<->ehuo7pU^b+~})4f(|hFENeR?Y(zjz=(QW z9>Dw&(;2SPpXYLnps(JE(S1~!iJjI^iXMw4hOF+iJeR^2k!Xb2Qa#F6)dN*--dOGPl9XPL6^^|e{ zi008!J4ZCUXzf`DyZdF5N3c{?^W1hyFhbqs(f1TN_KT~HI1C*f6yJA~JZ1oHd!A0p6xs0b+#?djvMZ17^&0ey77xk--AXdU8Ij{K2@G5CeU$b~ zBMC2}-6&>dof!lV>rWGgF~N*KVTRz3);jOoxTs4#N&;Ri#82gTwR<_il1^2o2W=Pf z;ty6?VHq*r?fYOs%j42PmS_b6?)OTj`rJ`)DKGzy1@oq98l4*X>gPU{rWom2fh7L9 z6%XtsYH()1vba4+`cdMO#F-X<7f(icIvBpVYAz-78?GUcbJs+yRNNAjx)$eh3R$_DiH4>f4Zm$f z;R75>i%T1f|J_#^Fx%J!aQZ-axE=gbLl~Lzqf#2gio$liDvvMG1RdJU7HQ-&cSeI- zmEU2(kqp;0-K>~Jv8OVLL{^UjcV z39IW^V$E2?nUlr5SDw|klBH|+$C>ED+qe_kxl4OkOrd;Guk$PPdK2( zohFpzqL8?-^59-71g*eZ+T8bL!_Jcq?907~V!x+z4_-NLsDO4>WlMh5_4xNnVpKc4 zw{LaItUmjF9$W5mey)CYJoZSAoIlI_<~&JO6rIWJtU=1ZbK|&UmZambedYtZ^3QAh zizav2J0w~y^(EKt^!7zUN|!+og2E}~*zGbZudY{%^C)-XxL?*Ilv(hx={+W2?nKHv z{uHHUS|>wGBD*c5tWa>Jsl46a5PJqR3y`B4uTbW#N>LJ1$ldg@6;|@9YLLdrWy@K2 zemd8_Hk$k~a}HOgF_AJojOiBU-}4VzT!|lpX@q?CjWil1wj~)J$0{=5WHiz$s~VZMxUA+OYa!RVba5JPTj;E>iYuDaDI!jqyg?3(6xyQRe&7l zERU4wO#b|UTN@Alx~b0u`#L=czC`ska!(uOL`UjsU)gvx+X1#WP;zF%)B2z`+ z$j!R=a|ZJ1RKvQ%R7AF0*28Pp5UzH89%s|vyTu zWIZ{qBHlW*hXDeOnc-I>sET+?05E^wBG%`p;+$5DHCU3EW`t^tHF>igg6&930TN>a z+PSrpGjAPeyily6F@$U4{9a*4CMF}5N%1=c+@uV~<;da~g;>5h#R-KtGSKthgf|nFXqD6Pau)PVI*C@pf;f+J&Wz!7I2Z|kUVzQOe!QzhA>7d4{Pr86WE7e)i zLYW1F_h+5IF;hL0*SD=`V95g8QA8`4I*Wpj{?2$(djq!mA~vlF);K59CLr@OxtS0)Scv{EGpUvUws7@1%TS`6PaNv z$UA9fh?fPG-P7YPt~4sTu)^?6DWAsANLKcaCtzLhB$%}{AH|P6KJM}V_izMSzQEd` z?_h)o&i|zr`Cs)LVP^+xF#{tfI|uiFsyEHpA8MOocV^GjY&_VTeQW_^F*+3k=;a=;fP4i2`X(5pV#+4#D* zMU{G`c1`wtvgv8YL~fpT{`8d|EJhKHxj`Z)hQVHVV@(fD!C17&oDz}@=O^i-&RS#( z_cnC5LY`v)2L0k|!A1D3H3ZHXj}I7y$wPfRN|fvuS)u@cgL~6P-l6sXSCYZ#thKA*@51 zgYdu)So*iN7ICBfwaloMeTmuk;1W)sOj=6~KXjZXsd_ye|P$5or^v{Sbhhur!${={L|lz0SF zh@c9yaHL29^BZeVzV;j|!lD|Qd*2(0tA$y{)z^5-drHP$I>SD9uaXg{IOgf3gAzW> zjCGM|<~oV39=SR%S)m-q*4JQy&pQ>B=*EOr08gHmad(}U7d{;U%Zq17gq#;!0_!Ll z@t{~%7!r0%iQd5PnVkyZRh&5ESUjpY1|_{^$Z{EP&C4`&2)Gx; zymB!p(j~{gpkoeVEAaIp7{YQ55;+JvWK+uviwjDq;pknQzxhjmZ`76c9Rvg4In#we zpMq~VhvGdp$arK=&UgkJSO|nshR113-`VHwQ8`@o`RXVwiD zW;GWm>IglW-p*8mNs&BKJU1UxrFOZuw}TT!cWQfloPPrr=C3%QzwD{By6`mhRy759 zN#M(yj~ME{(}w6QP&FJqDi^4r(skg$%o`CXyB0_I*|DWfmxG3&#!;xoAkDKBZO>9f?5uIr3} zPq&TABc;iHWe}}aUAAfX*)ryLI$ZKlVQ6~RLTlOeLh;ao1Xby{q_Ej|uKkfqUfyC2ppQxP)tGbc%4p{uM( z-YVy{+~rV+#r#e4o{W|t0`=<@C-}*T9rO`+Kg2^}de;n`0I4`v1OSf7-iLSH&Klw6 zYE-q|3VtLbkw;|qZwTnq(NiolP=a4Lak3;#Ok3f&Avch>f<7*TZ+iW~$T{GTfPtH> z@eBo|2p2j;L32Px1g9M)BHOJK4&EPGpkvpe_9~B)ndraZ-?iC`T`%IAx|u1?tJZp> za(U$k!=dlsr4^7D?)#!kX151nQWX%k6n!Q}T(%5~UD8GwE!P643Q8@F*;^t&=&Blm zw1D{vK0_`8lzvZT(f3HQL4$vt%|&u~IpxKW+f7*PeRj0qmFj=Z(9Zejbi=X^Vhf^Y3k9RT6FNjV4tkFd84i+=I7+E zG(C1`!;ndgP<-I+PmABbWf+U!5W&B-IjGidb$-Q#=8|`V`V`08s7*!mo4Ms}@z}Hg z&_x%Q8110(I5>_nvqI1k)QQ(Kn8hngPHKTrjq9-o5W4Hq)Fd?CD^eP$5Ki}1w+N81 z%05jnG)w8ctR@?#IkO}{D+mLBCJmY24Xh>1cR**GUhLu0%YMvd80{`vvsnJTh;T19 z66a!ionr+4oeoAs196hCnPdd=YoR*hyf{FI20-xjK>^WCojp#O&557Qh7+8})Lg^H zf_+!us01|R)-T$^fR%QV=0#15c?bP~^&Z;qNY;4D@nE$3cN+n>j1m>^XBpNV7N?JA zmxgMR!5z>wnuN`uvw^(>4=3GeB2#Ma4t{siq+DVlt;WTR1A&B1W(o_bYsa4>bgkmM zdKs;a)h^={1jd#~hf|$C*?FV4`1@ou1Q7#7a2gg9JQQYb2#7)>F_PV$AD}Z5%V5DJ zQTAxX7O9$3mX#@5Quswurr7Nn7M~QsrV+q*>?3NXfs}+amLcmDRsm(T6Vm9aLnwGz z@&q-wx?T)LJ3P9|v86m-Zg*`)8r>oXLAb0U+&mL80t&y1RFSlexfbY}c32w%H!;zE z-;)_cE(z&$S=ss1sqR{EgcHzNKd2NE*!E1<*mcza?z^(R-DQtBbZuLwx#t(>2Kb49gYp16I*0bv2 znAe{MD8ksS2Kx8Hm$a2v8hP1OnW?$^d{hWTgxMQMOR|BPiD{si+F}06?_)Dnz%+`3 z<(~-e3e*=OrX^qMs%()5C8(JvoTK_8InBrxF8}hu$v70OB%g+BoiNFESzNjzgc$Z} zd8$bH+*E-&8sR=#Zy>JelH1rxW$S%XUL;8>G0iC@iz*9dQQAmlC$H^f53|C0hq7oQ zMG&$_Px#0N*FV^hnc~eNJ&P_j35#})JHv|2je|-`RQ>M6df#EpYv2hA4zv8Uwq!Bp zED@El!8e@l(}%4lbYv%tJ|RBSDY8^2lpCj`%*4pl1LMF#0J?||3Y>&J@pqyohT5WI zu@_`{?j0A#GABITt0JPS+Vl2e_dacihjpIFG2&BTU-w5@`jlC#kb4O^_o2}cUXDLz zsdKX_ofYsL4%R)hzt&byUEMvS)+GXZ)i(E!`8aq;xup6p?UhGcED%xX_+Lk#DBJ=5 zJp5#Hy~)~YyLApivo3hzo*j!p=lxEzyeiBQvs2Tj@wsPQR4w2yPAM-yEydkjs6Lw! zW!;yO*{+K>x14%*B+rR&W`Zy4=f56p#ABvpw)sMBdRY711V!jG;{7dD32R4fr zqiGrcrxAiG!8UZOR-MK`F->qiJtvO8vViA$c_E<6_o7b|2Tn7l-F_4|Z1zY|h!uJjOcf6VeQDM}UcEemA`YwFV0{ zx5>~ZnKz}u?J5plDnd;z=kVTBN-6<}qx$Mm4$GOs#OG*3 z>RkdO^${)}wz8STy*7&ApSy!}o>LYN*`F_yp!_1n=Sn+4byK0DSq!x5xqk1fzj4n_P|~~-JttS#_yY!181WA|SA}vfWw~Y^Nzpi`V zciX@2vNN%gh$Qc%jFq9GaN%*t*Y`pLxBaMZMH)PDW5_WV z%fxLS-xV;zy>3%eqNOKII-8^iG{7(a5(OdM3jS6 zZxeP#+s1W;JtV=YU>eFa3NJ}Vg*_<4onKBQ)rPk^e!2D}?EE6qFgsb}a7MKCYa?oZ zu(|d$E*X!yJ9UKQ(lwCD^$`Z1>BOCS1;P+Llfw?|Pa|k_IAeEnWJ_oPY zJy~&z0}Vmip5W|RtJg0KaL!TUIFX+sPPba@cKG~>c(h8g>7es>ja>N4DmooXz)Xy>s3;{?UlzQkiG^8Mbd=Wxnc6WfRpasr}|;}%YaeVgKz!NIS=noBi$I? z9^L)|`tSSL@2m-#4+sDt2m=7X`+qnD89QSW>wmVd#p*VW8$Xdht$jp89kNAb8B;%+ zlB*Jx1Y%VB1^jXCCfX>7;PSM(vrSPCHtu|TuhZk>7}nb8k_R%XcG1pI7}-T z;Xp5xIp9gjv5`|jrnfT`U;x;xO)CgyJp~oWVOSXV4cL${4i5#;T!BVZAKQXpkVbnH z0xl0Kx;VCJAu$aSXNal!yG8cM^?B5PRY$rVVE8v_u>}-uxpV zGB2WHoA7h2P@Y0FUMY840wG+qIjTWt-;y?5udnf5&M6fhb1K>8s1O(}6($djKl%8_ z=c4OGB7zdDxIprGIem3kN}mhE+x5)_Z+#hg#2U#4=h?#P07yZqGVlGDNQxeeZ!fFq zDr?`DBUfFCBDysAR2wcFHdaZNzOCJYYq0JfR6VRH4RogEh_IF`v9SfyNH*ej6Ze_+ z-t5~xH1>0dxLQgyC-LFL955BSCeq5;7IY;~{o{C0#ayoK!66#fV?#Hz6$wn$1q{{6dSJJ+ zwRaQA3izMGIH9t|zzxa_6Y=t(Z_jE*%y{mux!J7USs_OQanv+-hPFU3#Q&_kO0H*IsvXnJ3_8cyDI{~7DiwB3cO^q` zc|Aonp_i-Tc&&U|d6kQsW%1+^AWOi62d2M)&vnlJj`cKkPKawDdORcjz4g>y`fh=_ zW_v)_*PK;ILhS5C8g9?xvMF*g@3USCqqAP@NNTwr)u8k2gIxysjSgT$`dC*n;k)R3 zd71UUR1UbzLhi>6EV6DJ?;)j=SmY|FMK8d)PkbhdniFexh%V2 znhYX!3qtC`Uk$;b>2oW<_K$FUf^x;vL0pb6_$Bn|PZ85gI1SEl=m^n1LK_l${iKhR z?D1?=-zZhQd~lmRrXGo<#$7L5&s$hCv1Xg9!6~fBo{p#NZW-fSaOfTHC<=TDPl_m0 zNA>B9CV(>*5GXLI|qHd~+`0#@GIi2l{K0Eh+RRwz!}7{Xolx6`s~GW9V(5zS4F`*A76 zW`|9tZr~fyfsy~jp2OjttzWy)VZOP6wo|iEFuQjG^4jD*(>`!3xcIDd+93-s*OajU9&4c-R6k9Dx$-o2jLF7sY zhVkjrjMg0(Z3MR|5!%zzX@KO3=Nq0E+TL#EhR)tz+Ny)89WMc~N zbUPeP-5TzL+S#26ux6Ew?=0rw%WvXtJUquua!9sFUX#qix!%1XsUlv>yrE@lDOzy; z6J~vyCeXbFz{s)5=Nm--SM8m&&NFsl3jsQyw;HYr%!R;?}$5`nmH`II+^0dg47Z-<|%unRtGN-XHc^X_^XXD~=H;LbKHm!-YkE}1aBemr!+A%-F3$OikYHf+eh zV>pN_=Zl*@siFAku_+QxXaeus#7YQ7TU1*%8{yUY*Rvki^40#}mPoR_t7-Cz`loJF zU^bw&vYwbp4s+>eYU^d~u^EKrLCnIO%x05Ve<%_pA&t}#UPa?tKbi=*Ovk%!_BIt@+re+sxodDb~pZ++oPZH5;?ZaR+48 zOzXQ)lo;!vGkQ1lE+34EX8s&0kv(0hCyUR?2#nmB5SYpiMj`f&n@roN@czJC>y%tm zl>#fKLwO`PC4DO+bZzW+-5b2&1;Z)1c5Z8n5zHA z4Q)||^qIc^0Qw;S0Eqt=+#qY9^@i2b>O2&3NsjLX)} z=emzQQn`7FYfa6~_jV-5E~^2Eor->4j6|t_4!&?FW4-leR}nXl30;uJa8ZvH+-I2Z zt%8dCC4AkEWY7B>hy&J6C2hK$Xtf+$p&6u%>JU_0tYZ&!SqpzR2AmN}OQ3LG%8ryM z(0@ZZtt5ON>_r7co^k?w5a1WBNmor!=9cTvT#n4)w=}QueyM=J|=YC zss0Mr!B&UXIG`xNsP7}Kg!LsWPhe)U?>J)LfNR17D^T1TB zidTvj^p4mbD3t}GH5h2QvD83D-ave=09haOK<-wUAYM&SRf0)0KD;y+$WT((qQTU2R6-uYT9tO1v@yDUOWZh?v_mR> zu|;kR@pyc}EQbRRi%@-N|B_7x&2C=#r5$CvUHAARv(k0&`=nP~G0DBu7akS!^25>l z($AtGA49_5)K|j(2~hf0L0}9O zgcBv~+X? zGKBXrF`QeyM|&QKm#JMnc0QFwo-CbA(OUZOC~QOtn*O4ykla7#~$ z=b4VT_tBobj=N_i_o@}0rABV`W+#$av2jV;ukIqwT3y@^d{}M4y|)nw7Cw_%vk~L* zmKai2B}Cu)1NGME+ChJi$9xHM(h{FzzKPijK1z1yI1&s?XjBbKt`$?HiKqAzwd+yV2>FB-T0I2DQ>Z%yACamsR<9Bc2&HY~at2ClbIq?adjOUe7)Fpf_V3 zv@D4BvJ%@)Z8r9JYqrf#578Tw>dNnOoQJGno|;BWD8}&@7r+#mYBX4v;Lv=o4eCm* z6Ibf&fOLC)GCYp-E#;Rr710~!cRIL!MLjVgg*Y_~OO0@|0ks-)a9dzgBCsYbgEYKF z-$A`mxKQA9aTmPt;C88XfX%%B*LL#p6O)$N&*=^V|KHgyK{I1ROIv5B|5;J~*La|8 z`Q!eL{8_DQj|SY7`5N~)QR^|b%YJ4+)fBR-E#J$>uc(ShAGRn)QLcH|bE5#K*&GBk z1pLCk?Rdk^l~U;QNgcsBgQctOZU@4cbk!JY098}t`v!vRppxsye5Y0}Bn$+@FA^Y% z6^Z>JZR*^d4kM(y@t^JsyDh8leWkhL}F|Y~nj2SYAnj|ruBoQluW=0oA zOhi6 zngqBI;7K-Aj2I3GkTRAD^3#NYV%!DEjl`pJCH<}0maaYEt)NFqFw28Z9Jn<`~RWU2X$pfc!t6<`mo23t%t z8a~DvT#ONR;yOenusr#ZR$T0`3Sj^NY2!sfSgoY|#%w$DCjN9On`42pIc#m_&eK)C z6sPlvNCArZKGaLxDcA5Ywv@!Ti|h%Cz4jnrmx$l<)C>Zgio_9G_c5dH+!yCfLD04_ z3K|yi!8v{pJ3A?6e}uq&S}yTyZ1|4FfogR4Q-7P}sQ+xqyc;(%)>OIQKtS7?zgs9b zwn($yJg6*;btsh^?Mcs}fRPp50V-u=v8qnt=0@f_3D79{c~ zB&c>uC8DbC<6_`l1ZQtW&syHa!Ok_msA`PbLl@35gQ_51c3D4cJ?J>N&zKf6X5ZMt zPeAKZPW(T0-g}#w=UMnV@Ty!f-nawOb8ga_IQtRdzn2iAnzmcFr9AVxN?xcjtN=pZimvP3CzEgF*KZLvyFZYTg&PdaGGg->DK&W zztTi5<||u+No3*wI);}0C}R>YnD(Rs!Le*q+%vOMV0#Cq!?e&v^hEw9b|<5%5I{`M zrf92SBs{fmO_?m{vu{Kz*|U=CwR7HqUbETlART1&NfDPa|Nh`S2w$XW?o}{At_Qi5 zS_LfxLZvL^CZaxw+7FIsh0&my3MLN>{n5q{GNP-e>>xImh}Ki0=O)qvn#us^*n#?T z{6TBn+s@dQGEr=G_1eLZ1@miT%sWI(fLWQ+AGw zak*^aUnQ^Dj6e$Yk38mD?T#(>q6zs^BWgV7X4aMuIOr@zl4Mnsnh|CHVC%@QAA>ZK zbb(I4@ao#3Jax9vAS+^!nSE|IsY2I+PqzF8i4lC=0XA>ik(c1iB*( zSW(?9y^3}Q#i%)#X7!!omLAjgq3KsIDMIHqo-G8_rH`6I+h@?84fM>HyO8G7DVJm>77T0MDtoT=6U6KMt^qVvj3WS#8Q6OMl|O; zIi$#AEN)wvqsh8?Z~69ha9x!P8IXg|b5IRTn6l>4;8BOA-*bwdzx{fo{6P1SZ2?ba z8A%s462BWb_EXJH5XNhKBd>QvA`>@Bzy3Cyq#R*We@R%o+Qf)DZs>gsc&)nedHC{| zX%b-H8+XHr$($o0j>I8~+@92D>9Rj_!C_N$ec`}z!^(<_bT!`W{xf3cz>U{VbTj>k z_vOgpBLfqy{6vN$F*4nGK9(q<4b9$#yy1j>s_VH_kUQ!RqJWq@NlJ>xq~R_~i8c}+ z`|eKC@?Cz`rc&|w>p$Q55IQfX`T+p|27dH&|C`=O$(G;2LErsfzWOHmhQ|N&bmKUF z%Z(rP+{{vq+e;#_s)VDZ_V4loM0uisA|_x5b#Wqd{`IZv>hje1?``#wVsh@VH1~A( zn~fP=Dck(tZSCQ9K}{@RlpWg#$8Q6oo6-iPVe#iWXZ)`5*pmB4%dGaXw#L%q@&V$^ zMthzD7D7`w3r1mhMp=uHthdZG{(AP9)HJGWrw|2feC9D@@@i+EXS3sf_-2?f;L7AK z=Aacy)9EC4@NP1j2YV09!>T*=>h#+7%3qt_QW?MdTsTG5Tld+fzL`j+jh`imoz)5jaG2WlT>GaR{Rp=U39U^i(9$3bVY zOiE^HP{OXYA$&$}rEosH^d$V~zu>zB|h4wb8G_ zr`rdfJ&q4&4QJBGBr7Wj)pg6qdd4fBo7@rL4^n{TABcU6@? z2AOna!Bk$dVo{~9Y|hCqGRxvsc33;R4B)6G%lj5V0oionzY?EPv4i5eQ(&vG!5b*#4OZ_j?V_F^4t9}MG@w^YEu2ZWkRQyt+M8-q@%>}M|c{$CX^+Vdyt zcJ-$M*ckF^#h{FafOO{xDU;nM$KSUE!$zEXWbYX^kXNr_Zki`<>KQhUv|hrQeEVCd zdNlpnXto7uhe5$2$psS^?QB5icmb-KPewEIG@9#8Y|Ar*L{A@N>%*!0VsVO~Y|m3` z`|w52f_S&T9Z`BnQ-$IXiP&W_YAZG!i@9Qu2JSUt3REh7$LGxl`>1H-VJ}3!p#0%w zRL*2x7hlqc`DpWX-!m#nZl&uFuTXyA4F3Z7&np1~)25*92RIb|0EeGwjsKL>{@)cg zLo;J*eUYC5Uf;>-e-wyCD%P?GZ17)FK10|777=g#S1pua6#z$})s2WS9R|t}ZDYhu ziL2}zc@ue`H>@)AjfpfXH1a!_T#Pe}F<0haADKU*s52ZqPCMun22T~PY^)cjyLUXh zga#0Yzx1h4X``tHq+%`HO!_PRAzXZU^nqG|rM;5~n~@+7%3J0GXiDjlfI01CKj>lL zd|CejIolYP+!K@l<`C2RXMG%#FdKjO8G!MZ79ais)t(eEIF!vXh-^|3)L%K0IL3j0 zjq$(hYngv^wNaOYo2ivM7u2W`G?a@jMd6;}5DQ&-uI%X2pg0OzAe#}uO`t*Fhg$MY z4W>UZA96L)iPQ>E0Wbn(o|~v@Kj?qZgNR8VvcPDQyjL<7wDowBzNEX-6DH^=1L^K; zmLDs7Ae8IA^!neWd)wh>9xvyc>&>_u7*e`!%4KV=_B$_IuKXWytti~z7S?u)U-8<5 z0Xsh-LilN$8es&lEc{+1`0*CzY14GO2ymq=2q#n`p+`s*{3QIr6i4gTWu!p_#9T+g zX$Bv~YZy!dCbfpYJqsQch%Sp}4<-DDiO-)W22}%_1k#ny7dUoBKQBtCD)r7*KU=|; zVET9kQts%ap31J8!Cy$mwauSoZ6x!WWL)j1bq$_N(!|s7k#Iceggbw&2xIJ?izCz_ z87376CXXUMeq(t$M)g~0UES{A`-#pTzR9bGTS!?#u$7+dLIcz2wXd%*wkK*Y6P8IT-c%t~vL!1o|DArlb7H~eFel4=BP09VXZ~DX&8_ek&L)-&aA7TZJ>Rrl z*Qw4{R&L3n$c2&AXZ7A*p;Ug4t-)K-h3Avz3ePT!XK^mg`I^z(k{kY z=JDcXx7#Q?>+@g5%~=h>^m58`7A~Y=S8@Kxe;+Q`@SlTutrp^;yWa#z*W=Q0%2(!GFQ9I+>dEM zwwSw!vSPH{(%U92YNM_?%5q}a?eeLQ{;YDc`^?irGO1}Pl@@oYUTb}(#j@;|u)ip< zc8S}bZW}f@`ff6BHapL(;f}JR^_I+e-~0HlM4f8eiVQGN000R%007GWKK+X3rZ)Oc z&JM=3LdGWg&Q?zU{_qbbXj1*50Y%`yB7KI22ZUn#R>vB%$Z2j%S)$YQG6CZk4Y|?< zId(1V6`V`-(qDR9pC9~zWipBt4S%(?w7g$7(2{*SVE$wB=W*Nbk7kD|lA%VGjH!du z^MOHw)O-v?x~Vx%2ae`Xsbt;)x^A2B#^v^|^?|K2NC%TQEs3R9 z+JrdMJa`;>iAZZoyb2gGbr=OASwl3dpy1JC%LLS#GZIadzq~ja^s`~xZj)1JaP7}C z!>$DXa5I{{aWoGDc=@S>e5wAWhdg&I$DKfWxWnu}(GS_FP;iC`5rNcfRQ@keTsjcK?8>3DA$*mAChL{Y`4%P6xa!G9l-04;uq%wrSCUc3YIHaeK}H;5uVKdO zYCua{2&(#so?afo%ghNHS(lVqK^4lsOH}h_0?3-7u<&$}D%Es)V`Ck8OvQ7dkVg}b z=T&zn=};y&uGMm?(nU}5crzbFx^4%%F4<4I;@+EG4`AO8Ae{aT(QhzWEecY;$=MRx zwB)MQeBha%F-~0_hbb4RCQjDI>Sc??umP_y>+BCML~(T3@@vm&4n8Qq8Gi@1xeNLK{Y1AZ0WASC}Jk4%66 z(Ywgl_wk~z<8?ypvO>RJE;F~~37BM&+olv#}UDO!pf(TkJ0{R z;Bntlt!S76lX8&?GE#OOqxXu!I`XE&$lqsRDUxvPmQ-mP?Gq^Xn9UmXDQeptEE?{A zm4wxlJJtPe?|g(Bgl%0o!ofBdf^y{#>;2;9wWw%;OvIj=S!h6~Gd5ucHbd%O7NE)J zD{!p>qH0`V6Sfix4T&u{v${1fWY#>!4Tkhxn2yavkK6J{-ReJcsA3!GVn-*fm!p(` zU!0TOp0!MI(5HPwuea}DoX-RUS5V?86Y#}0x`NN|*G9lpSW4)U?Hog4gL$dJUqMdY!W7HxjHH=~VRcRf$#Ql3cc_6(_dlzdsLI$6yu zbU_++-n&>|C7s$}aVeKGJC+bW-B46GD8?Td5GIX>AK-iidNlog!g9y5!MO>E^lv=4 zXRq(7t(U}-iCA;A)D1pvK20QxspAuFMlr^~$Fp{FFbbtvPHHe8;hFG4g~MdW;3O^o zY|L^ihJoU`@jNWS+hd9{WW=xbftePGrLj72}@XaM2;xJT)XKG7qM4G4}@b zpJ)N7+axShNpip@qxTX$88d5@pxNUBARU=I zG=TMF zuzZFQ`jmS*xC2KcQkKsd=D! zgMSSf25zG)tQGGtT!k0T>9+O8fEADWwiO>78%7mcn7Ra0czc@3x+8vwDV+hb%OGHc z2?B{~;x-`rlz>h4C8M1~@fH+A88)Cx_)N!S9Ms9Z`4?j$SswCg{G!}-`+}c26^HD7 z>d59x1u2aPDx5u2Oi)?p%^=Jgx4U+@!gs%P;LwV1qPDlwAUV?%Pgnlz-&9>LhWiNH zp7W>hgDH{Xv~sIXkF~gYqCN#@qlv5#Q?fTzIg~%sW1sF-!i@}Zz5REpUup7;nd;B- z5g_XSgJ$@5rO>J{{rmsFXa==+N6ayVFZB-;9F!w%FF#xnosQI$p(Ft;xT_*qII&gP5Gmf%*&RLc;=hCuNX)3Ls47 z!Aq_TYm0jG);O%RdO0Kr@GZfK0Le?{3;&{rfZUVMf`tqNse#KN5AqP@3F;38mVBU7 zTKm}!i!q@A2SJ37yfnocki_x<`;39ehPJvoHEL9?3*}jhj@^x}7<`;An7!OueAESn zM)jx6mShSFe2c03&rPrJ83-N5vhP2PLFNOGGUTPU)VQ5K<;EmXM7u>mc zKk74KXzT9v@95b*!ua55dz%3Xx6i_PhazDB_8Y}ZoDK#JUJk*N-_hrn#d26ZHkW+U7w`z&$U#U~_4 zOY`bXpBzpJSZHXO1&ioT!{f}FHh=co%VZ@!est(PIJYj!c zO)>i9GBf)aJqQig(@;gdOfluV7odHA8OLg&tX6S+X=+W6iV$(9hpm z5>Ox{Z!l(rh;U?$Ib?c6Bruw+-_v1hDtc9ds#{V~#(e-8i~= zp&kc!(OpCtZH9;<1TwO^(VW=iLC=1h3wy^l`eH437dEOziOWX!n8cD@YS_i`z)uv8 z$x?U|^0r3^d6-PB?NFx&%3-;aQQ1;OItHoo7cR<3fXHiWeJp*j$RwAt%z8%;m|i%p z8Ywwo1IcM-sEvIT3d<=wMT`3;ieXkpqLS9d4uT4K)P<9w+nNUf3{ui_pbiD;a*aqP zVXG^%x_?L?~tTl^^Udaj&-~>po;3aoUf7`Zy`8vYYV+ z_Ytnwk}(*jsxYS{C0OEg&(_T*JN?*G)jpz%Wqc9`H;QldV;XpRp5^5S8`mI=y*w7wbOy&qQvm ze+9wA!#;YBEpe9mlJSVtlvrNpZh=w%k><xX{p8`PpRbJs(6GzD zvc_!GA)mCM;Z6PtI?Wc8jLN4Sc}GRnoYZ=K33e_a1pkb%Qq6l znc})0@xPQZ^o%t3Niz|Wm_t&p zDt?H2TiKN8*hu}FY31F9v6kV;n*NQ2Cwv!}I=BZgT^1jdq}$Qp3fAeNoV^uHRz@m$ zE*7L@W!f6m)W1d3|cpI7^!;_~d9Mx>|^R8Rc|bsYdXU8AV#9o%jotK zmZ)(^s5J3RGA9U>07fm}!LqIhAJWM6g?fth62(+xUVWoJB7!gS+}?ML6A{0qM-#TV z=Y{=3$}jY7g=`j3)aNzh3o|PrgMYsgQjAiCW9YLIOt6I^A{I|jMVlcq)JMMv%*v~| zK)gy5h|{uz=t1scbWXuf>c`8$+OF2_a$&)OUOalFK-#!2c=3disL{JQzTEAaIn@5b zt^mAANJRk|Tf?jP4Q5Vj3o+$a5UT@}L$95{MCO#uczQtY&^b+nOLEUcK98ZhkQryL z^p~q$%brCzQAIzU8-C*tK`ujjY{)y31Dm^8_eKu3%-dngK*Gw%jqE7x`_1+hUKTd4 z)aWfIz3qr-4Xi9|Oib>cXT9$O*6Z!xQ{@~wIkZ`QR`qB^fDDB4cxirHq+u>l6Z2|i z6(g!h6M67@l6#aaMh4j$^=v;eV#8Mk3OgC7T|0?=GYtFjAy46Q?Xo`pj;vV{O1_Oq zY+Y2-5C||QCY}tT`@lQpX^|@yHNR7@gz1@GG#`=TDQLHmaHph@%S#gYL#DkT5dUwm zelx$c^gP;yBL?YdQn~}lH}7;>@(^5zmx1#cUc)C$s)NfC!ta^2z>`QCRwDNd8Fi`- zz%MCiFDMF7?Xo(9L1^IZNZ@rDhjirJS5O6BUVFdw2SlsD;LJe!AdD^58j%7TC@nm4ZD57ZpU-tRM!v--p!*# z7wL9~_2Tvr5_)J;c%k@Qnzuls^Ax$8HWw)|9MVFi;5AD)n+M7+6aK+(5yrZ@o~{>89bTa?3%q&E{imr$Jas|mx%m3 zOacOdq`HL<%Jc;ZN(JEeOGoo3lp!7;T+bE7Y4*Txm$&vb1(|^R1%Ttrcl77HKr-9i?*Cy=UOm!-zXH^AkIL<-8Mg z5>H{jz0}t7rNnNR{yYNbL5#pJrPo+1iD(&G;>h{xG;!PA!AdlCLzl+gI=aEHK5DIj zB$1bM$O%;kLDe)GHZ+49?w9!cTLPCM%|?p%FAu`lxAO-d1k=?S5KB>t#07^p0inhG z)!pn2FG382Me~Om4R`#&NX1>MvfRm+!!L|b}QKReI@0h?* z4G#rUL7#D^6nZzRu@wlkFr|a0x*5+0sVhVuH`ZmdVr5j07oKXlAq({2Dk*L5sE3*^ zgqvPORgrh^!dn*7{tl;XpQF#i5nDEvvCpG?QRsmva`u!kitG$_!Z&|PX4?3kPn5fL2?Pdbn6~|c5+oRY0_Q$)uv=s(-1WPP&w{$=$_acmi-CDm?jo9N;3;B=+i59lnql za@Q_Jsh3#X2q4b|gcGYT6GuC#)Gm=aNN6RIQ4{=DDr}*R&JM$gAzjdqg*5+b76$i^ zTCXl%SZ@v^GE%>4qJntr9GlTJ0OT1b5O;XnM^=R{WM7lln_-ebMjrth)P(UmxX&(7 z?Jzu*D+;H#AlQMro@&%$J_k5vIWNZk=-O8}ZM(nvU1>lYHs#9%Q=0HS&)ig6IZzk{ z(;3yRsLCIz0f$@3U_p&qyENw|2@;tlSi~nnITSg&U>k7{woFE!-{qJ1l*yP`3QlE; ziPPZL zR}5L(>+&{nlbWC;$wLU>Q6MauI15^tECCTmXPDf6Xcg!`_7;90z^MxOAt&M1Mvx{= zdT4()ogavpJH(*mmjh*HNjrfx{9v<_{=hw2cuD)0srHcvNSE3b2{!nL<)7wQ9@m*v z{$-aL8x;M6ktmb9`BAp-Jx-D^94=n0AXc;aSG-QTNX21>KS~qQF3p7kUt*pOW{4nN z5#{uhr6kw5k7>Z-Cm#5MCP@J#Xf)F)`-E&MtMb#-D~<7n{mE3j%}yt}q^ zgRwC=r*JFhVF~&wC$a15OKrqJ8#SE9)t=IQL7rdo#D+nx;f6iFCq+bOqZLQY#}AuuIv4VkT7q;T48t7z;% z*KHu?A#_J#Jqb!3Cu5krN#rl9-!2&O)j;FmS|XqFBt9Ps2rSzH=Iv&f71lJnWGP!( z#ID`oczYEYpTQ;Vcg+@={yjMY9+U<~WHUGuQY#`CGLV~t>Fm=xe312);^W0@C<-#5 z*V*vaz2Ier*H&CPS0#P|%&N67k3h{waPvz=pe;wS_@h#lsC$#t~}I{I`Ta zXnA<#e{%Fv$$I%#BWK2#j2V>S(R+mAXDOs%$cR>%dk>wAswHA0yGyGzy_<{ z)XLyTwU8=iAFQH&V-E`7dB&0c>3IVSNH|a(v7Y~16EL7NCV|0|ERbHDC-(gZBPKB; z7o^Vm9*1Nt+>iyGgpW5}zzkt8>NWHN8DR{;{;oc#1G0;nr4B~5s)`Aw)pFU>IJgOk z334k^2a_+LX>o{MlM8uwbiU9oxrS9`4U%6Cr2$)(#2hn+UmCO$}9s=5=-wAd{>if#mZ5xET8DTT-j9NQyf+f~U?1vj^1EpAOgCh6BiG`CJF; z0zKPkK@IPx<$2*%a13`9mPIT45r{u&q}`{&f&(B4{>pFD;GC^BoHC`$hlO*vHBmR2 zR^#dh+{IeAI;mI< z)WCLoe*dzWP|ze!R0`v`c_gfkGd!7ctf=kG@@X(O;O1*mpup@s?|1hu>piKxL57iF zF$aRtE9Qb`QE+chn-)7u$j)|zk{%qpP5~j5|E0Y^{sKf3|GNsUjS_gI0i!b?R*(Bd zo6QLElN?sB@o*HjS^WM{ZPT5{6sX(Mmft4VcxFrpN<*lBNJiCvF(aw0cpc&Gj2)HP z{%i4_(ICxBUn9h*#>AF>^hv8nVWzVJhMPyxS{abaNg3EQ(c7oGkPhZ>4SljVw7x(X zp(ErEW;|vrrnq)G7MNL$M!HITgL9(PW8*Raa-_C1vu^>6Kz zmZ(oEN<1c`QbGd;q`T+Hx&7mUw{j-KgwKQ+V}vDJcA7u!O%T(U&h~?XDa$7<)S(BFL{-e? z{grN}hYeIGV<6(jr$6vO!8syw3)sDZZ;%JUf#f7>*TiH)63@p}Jvl6KQMhGc&4QI< zWaUjzppw~9wrpp&geC21I=TvE<1Up1B>pX)HfV(=%ZF%$91C(6IR+XCj3^$?LJfTo zWt4tf3L!!D7%T=!pr}zVTyAbAa1Bg(s=rQx$2SHZl5mX-x`5PrDFe1Z>V-AQ6Ju-o zw~8~(Nwk6A7V48WX$hy+Hyg}ev_ zNRj|*OiAEZvk~C&a6zIFGU2Tl$w(r8p2JjPS(!jE!JyR?)7;t{J|(Ye?GamMWtl(| zc_iAo&+q)`1HG}micyY>Zra0iGwGwxSo?NuX9}5|+g@~S(*DfR0-mR^tqKlfjjIEcRO4uBQg zwya+TW40k%jKdFc!)8-(HZ3)tDJ`raHkNk_MuoHYn}~WbLW-rdP~799Y8w=2yP-po z^8D*lzf|tDi@E562BM8I+uVbPl6ECgwR^WZ_ZH>yHMBo1ob#|M3QyYEx->V|M1`HB zDTB+O}{(b*XN(w9y#Zqbo%C!+aX*EHf58hsBSG@;sLoJT?=P; zNXs;SvMu~O72*Syf4ic^iKw>AJSeug?dG&?sgq2r%UyfNE&Q(b1f=U?j9(jkxZhUfEIXOrQDMGRjs+*OejlzC3CQ4;SyB z`J)H2yy!<&;kPRoyH#u5Q0ZhNhDI*JfWVPvPaxkojmm=lI1=)EIAtGY){JXFHdqkd zXK9!61rk2zc23VJkkp4hwdD!L%$5N|7WR*l1cB}!ZRx+1d*z&5LZHVHBy`lTgsq&H z(k3Bd{wsbyQRge$hsCVzZ$5!Eu;N1Qf1R*#=Sjp3x2kP;(a^3UW-xqct3hfWq6Och=jj`wXc7N%a z8--zpnC8+`H~|;fVYljdcn(q@Xaf*Qd-MC_g^s1a_fa(t!c~2oRW2ENRZpTAK)asY zbFNq!wSZ$rnLI5|;B4m!5*#i=oUCzB*XAGV+M-RXT}>%hY?v~6+S<=T72Y)48^bNu^`t&%TYOp5!&V#@=84_u5n%X6Mq^56untLvy42=MDRlI$~n}uS@p-Mvl~U z$whRcy?=ub57~?bqv$ zj6VuQe&*erfc#NE@nYtUU0s8Bk_waW#7&2{)H(=#_$6HE6_e?ZUL%N&auDZH)BGpcBW z9@ZcNPGxTl?jB7jDlGnxu;*X7i)p|yWbMRMc^im*ULc1eT|!3YVnQ@>_XObqsKB4F zyJRB>i$zcUc24F(x&VpGpra?H?~`$EvQv7}S6rB)DEOPn7C98g;rZ}{-{mI~$N74^ zYxqUqFBQs$0MD#i|u=C(GDivRldPk&xgyRpGyMf|qn9?H}=BvDO1EPVb^dj;We z*6NKssoR7L&;wbd#Ixv7w-B$?!@t1%zyM2@|d$%o|w)_;C9%Qx3EESNF3=wR?aCwmpP@L4*1O zUZ21GgRWDBV1f|TYM3Q)y~TPKOzpHtq!KHb`nfm?8Hy(&B{~Sg-Q|!nzcuSu`j|Eayf<2NGWv~uEVTffH>)ro5i3xEKbVp+T-0NS=}^vSv6*>8 zVzX&Sa6uB2c4-zkaT6eV>7HmV{Gf0QD1#^ZxE^29Y#diF@6xa3u8tmWhtQu+Zr4h90}{Z(G;<#lfC%v! z$CL)X?2z8kG`VEf(+1VH9MKKM;_TR=k+aJMV1dF0%*)bQE{n@FQ2JeR^jMvKV^D~H z!E+BtsMAN9GQ!aHQSpK8Y#m7!PrLB<6n|nC=?BCj$hB~u=&i@d8N@5U@6*E%FaA{+ zUxg5sDYAGU!Ir7>V|RJtfC;pySI`%$&kcOOzj z-<}yby7#`WZ<#=(SL$46p;6^%5HQNdtrSY#?z03<6?_8x>FE~=b8Z#mpm&9-zg@A= zyn@jQY;9}=QdQUr1uXrb*q?hLPn~(iiaU)j(x6^H?K$co3Rfd0h+-aJ3|k|Z>reGiakAD21pM9L+;Q8L?6yvir8`9bGFjCvbB%(5R+;jMk;5j^#g8u;vr5tlhk5iVLNGs6 z)^qL#Wx(TzK%ygXE%=E)GNHLi7S!Ph(6jDfWONBM`#t*J!xpN!k?LvpYnGq>>!gg- z<1n3gM_yGq{m_DewML3jG?y6F$dtZ&SJPH7M$2Kwa5Glj2|=g?O=%0FxE2#i`)Oe- zcS@^f?7h1~%DLG~;S;Ni3W{K$k|`{+Tvttq9RQo?aDANIC*^{l(u++~Sq`WzvOP09 zu?`Mqmi8PG59;YbCa7KvuD)CDJ>R|UvD{O~upA@1w8qE%x!-8&4lqoxxSan}w+d$5 zHq&qs)PGUEWgn3(LmNBPJK)_>_He45(z6IgY{ZEY-XP^$pF$&b^D zF2^2YO|7V#sh1(Ojki(9NtsMKde_Bum*#?W2QNt&AYagmkuGheFCTO6j zQ@S|L<;F6&Yl^aR!j=Zt2*7*9`K&!SwusyCIZLGV-HE65O^akrxt9?Qwt2x~iwIZ^ zrLfMD`XxLt4vk4@%x?$kS@T^xvsTeFP{Yuh7cFyC57!ml7WUhb^yoc$gngp{D=t2@ zkAP%W*{AL=Za?`ajo~S>Pp!NxVoam^QjeUJc5tZZjZ@aZDO|3b^GG1Z|dGUTPOZ3)l|G z0?LQf{?sLCPw{grkmtmRyA?Q*oJ7RM^2bK!OR84SXvFHwvT4oKZ7-wmL~(uyOXgl> z)y+&zsf`iF2OAV;eDP6jiBC?qA$c7g?CEj7A^G9zxM0fJZc^W0lI~IMo&zNnbFEc% z&l#AbT%|i)N#^#8pWPlI%$G5lBxDX#}Q*j7F3pIz=cnqx$o z?V@GD_%-D};LiuhT&<0iF$rHCW|>bMFw6g69+zSQ#DHifnMiMC%{(=T67V0vE6 zRR27QI$zNfxN7tS2DMjCKkT`}!Iz+~Q{*qO_Xtt-2M%}E>rH=}<;R;}nVc=&+r__& z!|`Kx)=e{cmyt+JN6DC%rRR!yuUn7K)z8!l(`Fy({HUvQwWC|%)eoZ7qqK%e!S{~_tU3W$~ zGQw8Q4pPe^hmQ6nYNRJStB?hrBBHpXKkgaknOCS#SHT8+?EW*h5nt$WN&eomhKsgUW zcxBCEA;qZ3mpk}R%QaSv<@;83nQ_n0ZG0Q-kK$9uWw+`w_vf=GgCtk2dbNjKuwyb+ zbJh$M7B0>gL~6NOUJyKJqnfY<#V=z+zOzL?aDSDdZ%yy7IaUEEr{Eb8L0&DFVj!

P(T#E+~cp_!oZ;{%xGnM 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 literal 0 HcmV?d00001 diff --git a/vendor/psr/container/composer.json b/vendor/psr/container/composer.json index 3797a25..017f41e 100644 --- a/vendor/psr/container/composer.json +++ b/vendor/psr/container/composer.json @@ -12,7 +12,7 @@ } ], "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "autoload": { "psr-4": { diff --git a/vendor/psr/container/src/ContainerExceptionInterface.php b/vendor/psr/container/src/ContainerExceptionInterface.php index cf10b8b..0f213f2 100644 --- a/vendor/psr/container/src/ContainerExceptionInterface.php +++ b/vendor/psr/container/src/ContainerExceptionInterface.php @@ -2,9 +2,11 @@ namespace Psr\Container; +use Throwable; + /** * Base interface representing a generic exception in a container. */ -interface ContainerExceptionInterface +interface ContainerExceptionInterface extends Throwable { } diff --git a/vendor/qcloud/cos-sdk-v5/.github/workflows/install.yml b/vendor/qcloud/cos-sdk-v5/.github/workflows/install.yml new file mode 100644 index 0000000..6d0b2f8 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/.github/workflows/install.yml @@ -0,0 +1,29 @@ +name: Support Multiple Versions + +on: + push: + pull_request: + +jobs: + install: + name: PHP${{ matrix.php-version }} Test Install + runs-on: "${{ matrix.os }}" + strategy: + matrix: + os: [ubuntu-latest] + php-version: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0'] + max-parallel: 10 + fail-fast: false + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + coverage: none + + - name: Setup Dependencies + run: + composer install -o diff --git a/vendor/qcloud/cos-sdk-v5/.travis.yml b/vendor/qcloud/cos-sdk-v5/.travis.yml deleted file mode 100644 index 1dfbb81..0000000 --- a/vendor/qcloud/cos-sdk-v5/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: php -php: - - 5.6 -notifications: - email: - recipients: - - wjielai@tencent.com - - fysntian@tencent.com - -before_script: - - composer install --prefer-dist --dev --no-interaction - -script: - - phpunit -v --coverage-clover=coverage.xml - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/qcloud/cos-sdk-v5/CHANGELOG.md b/vendor/qcloud/cos-sdk-v5/CHANGELOG.md index a736509..027189f 100644 --- a/vendor/qcloud/cos-sdk-v5/CHANGELOG.md +++ b/vendor/qcloud/cos-sdk-v5/CHANGELOG.md @@ -1,22 +1,113 @@ cos-php-sdk-v5 Upgrade Guide ==================== +2.4.3 to 2.4.4 +--------- +- 修复图片水印签名问题 + +2.4.2 to 2.4.3 +--------- +- 优化审核接口返回相关字段 +- 增加host开关功能 +- GetObject接口支持万象自定义样式 +- 修复ip的host bug + +2.4.1 to 2.4.2 +--------- +- 修复图片处理相关接口403签名不对的bug + +2.4.0 to 2.4.1 +--------- +- 增加桶Bucket、GetBucket对应Sample详细注解 +- 对部分传入参数进行检查 +- 添加doesObjectExist、doesBucketExist对应Sample +- 调整整体项目架构,修复composer依赖问题 +- 调整UT + +2.3.4 to 2.4.0 +--------- +- 新增文档转码功能,包括提交、查询、拉取文档预览任务 +- 丰富头域参数说明 +- 修复预签名中将万象参数作为key报错问题 +- 调整travis与action,后续版本保证多版本测试正常 + +2.3.3 to 2.3.4 +--------- +- 修复laravel8中guzzlehttp/psr7报错问题,后续重新整理依赖 +- 修复putBucketAccelerate接口与目前API不一致的问题 + +2.3.2 to 2.3.3 +--------- +- 修复laravel8中guzzlehttp/psr7报错问题 +- 清理无用代码 + +2.3.1 to 2.3.2 +--------- +- 新增视频截帧,视频信息查询示例 +- 新增PUT/GET Bucket Referer示例 +- 对于相应接口添加CRC返回信息 +- 修复图片审核中ci-process param出现两次的问题 +- 修复PHP5.6 版本的依赖问题 +- 根据PHP版本自动composer install guzzle6.x或guzzle7 + +2.3.0 to 2.3.1 +--------- +- 修复文本检测的返回格式 +- 修复sample中的问题 +- 新增视频、文本、文档、音频检测 +- 新增媒体转码、截图、拼接 + +2.2.3 to 2.3.0 +--------- +- 新增图片审核,视频审核,音频审核,文本审核,文档审核接口 +- 新增单链接限速demo +- 暴露getPresigned接口Headers和Params参数接口 +- 补充textDetect UT +- 修复stream_for废弃问题 +- 修复x-cos头检测逻辑问题 +- 修复UT部分bug + +2.2.2 to 2.2.3 +- 在putObejct中新增x-cos-tagging头 +- 修复`GetObjectWithoutSign`bug + +2.2.1 to 2.2.2 +---------- +新增appendObject SDK,包括sample,service,test +增加无签名对象下载地址 SDK,包括sample,service,test +增加全球加速相关配置参数 +将COS_SECRETID修改为SECRETID、COS_SECRETKEY修改为SECRETKEY,防止混淆 +修复部分逻辑代码bug +修复部分拼写错误 +- Add `AppendObject` interface +- Add `GetObjectWithoutSign` interface +- Add `allow_accelerate` param to client +- Change const name `COS_SECRETID->SECRETID` `COS_SECRETKEY->SECRETKEY` +- Fix `getPresigned` interface +- Fix typo + +2.2.0 to 2.2.1 +---------- +- Add `PutObjectTagging` interface +- Add `GetObjectTagging` interface +- Add `DeleteObjectTagging` interface + 2.1.6 to 2.2.0 ---------- -`PutObject` interface supports ci image process -`GetObject` interface supports ci image process -Add `ImageInfo` interface, which is used for get image info -Add `ImageExif` interface, which is used for get image exif -Add `ImageAve` interface, which is used for get image ave -Add `ImageProcess` interface, which is used for data processing on cloud -Add `Qrcode` interface, which is used for qrcode recognition -Add `QrcodeGenerate` interface, which is used for generate qrcode -Add `DetectLabel` interface, which is used for detect image label -Add `PutBucketImageStyle` interface, which is used for add bucket image style -Add `GetBucketImageStyle` interface, which is used for get bucket image style -Add `DeleteBucketImageStyle` interface, which is used for delete bucket image style -Add `PutBucketGuetzli` interface, which is used for open bucket guetzli state -Add `GetBucketGuetzli` interface, which is used for get bucket guetzli state -Add `DeleteBucketGuetzli` interface, which is used for close bucket guetzli state +- `PutObject` interface supports ci image process +- `GetObject` interface supports ci image process +- Add `ImageInfo` interface, which is used for get image info +- Add `ImageExif` interface, which is used for get image exif +- Add `ImageAve` interface, which is used for get image ave +- Add `ImageProcess` interface, which is used for data processing on cloud +- Add `Qrcode` interface, which is used for qrcode recognition +- Add `QrcodeGenerate` interface, which is used for generate qrcode +- Add `DetectLabel` interface, which is used for detect image label +- Add `PutBucketImageStyle` interface, which is used for add bucket image style +- Add `GetBucketImageStyle` interface, which is used for get bucket image style +- Add `DeleteBucketImageStyle` interface, which is used for delete bucket image style +- Add `PutBucketGuetzli` interface, which is used for open bucket guetzli state +- Add `GetBucketGuetzli` interface, which is used for get bucket guetzli state +- Add `DeleteBucketGuetzli` interface, which is used for close bucket guetzli state 2.1.5 to 2.1.6 ---------- diff --git a/vendor/qcloud/cos-sdk-v5/README.md b/vendor/qcloud/cos-sdk-v5/README.md index 9ce3a63..9a951b2 100644 --- a/vendor/qcloud/cos-sdk-v5/README.md +++ b/vendor/qcloud/cos-sdk-v5/README.md @@ -2,55 +2,51 @@ 腾讯云 COS-PHP-SDK-V5([XML API](https://cloud.tencent.com/document/product/436/7751)) +[![PHP Version](http://poser.pugx.org/qcloud/cos-sdk-v5/require/php)](https://packagist.org/packages/qcloud/cos-sdk-v5) +[![License](https://poser.pugx.org/qcloud/cos-sdk-v5/license)](LICENSE) [![Latest Stable Version](https://poser.pugx.org/qcloud/cos-sdk-v5/v/stable)](https://packagist.org/packages/qcloud/cos-sdk-v5) [![Total Downloads](https://img.shields.io/packagist/dt/qcloud/cos-sdk-v5.svg?style=flat)](https://packagist.org/packages/qcloud/cos-sdk-v5) -[![Build Status](https://travis-ci.com/tencentyun/cos-php-sdk-v5.svg?branch=master)](https://travis-ci.com/tencentyun/cos-php-sdk-v5) +[![Build Status](https://api.travis-ci.com/tencentyun/cos-php-sdk-v5.svg?branch=master)](https://app.travis-ci.com/github/tencentyun/cos-php-sdk-v5) [![codecov](https://codecov.io/gh/tencentyun/cos-php-sdk-v5/branch/master/graph/badge.svg)](https://codecov.io/gh/tencentyun/cos-php-sdk-v5) +[![Support Multiple Versions](https://github.com/tencentyun/cos-php-sdk-v5/actions/workflows/install.yml/badge.svg)](https://github.com/tencentyun/cos-php-sdk-v5/actions/workflows/install.yml) -## 环境准备 +## 依赖 -- PHP 5.6+ 您可以通过`php -v`命令查看当前的 PHP 版本。 +- [x] PHP >= 5.6 +> 如果您的 php 版本 `>=5.3` 且 `<5.6` , 请使用 [v1.3](https://github.com/tencentyun/cos-php-sdk-v5/tree/1.3) 版本 -> - 如果您的 php 版本 `>=5.3` 且 `<5.6` , 请使用 [v1.3](https://github.com/tencentyun/cos-php-sdk-v5/tree/1.3) 版本 +- [x] ext-curl +- [x] ext-json +- [x] ext-simplexml -- cURL 扩展 您可以通过`php -m`命令查看 cURL 扩展是否已经安装好。 - -> - Ubuntu 系统中,您可以使用 apt-get 包管理器安装 PHP 的 cURL 扩展,安装命令如下。 - -``` -sudo apt-get install php-curl -``` - -> - CentOS 系统中,您可以使用 yum 包管理器安装 PHP 的 cURL 扩展。 - -``` -sudo yum install php-curl -``` - -## SDK 安装 +## 安装 SDK 安装有三种方式: -- Composer 方式 -- Phar 方式 -- 源码方式 +- [Composer 方式](#composer-方式) +- [Phar 方式](#Phar-方式) +- [源码方式](#源码方式) ### Composer 方式 推荐使用 Composer 安装 cos-php-sdk-v5,Composer 是 PHP 的依赖管理工具,允许您声明项目所需的依赖,然后自动将它们安装到您的项目中。 +```bash +composer require qcloud/cos-sdk-v5 +``` + > 您可以在 [Composer 官网](https://getcomposer.org/) 上找到更多关于如何安装 Composer,配置自动加载以及用于定义依赖项的其他最佳实践等相关信息。 -#### 安装步骤: +#### 安装步骤 -1. 打开终端。 -2. 下载 Composer,执行以下命令。 +1. 打开终端; +2. 下载 Composer,执行以下命令: -``` +```bash curl -sS https://getcomposer.org/installer | php ``` -3. 创建一个名为`composer.json`的文件,内容如下。 +3. 创建一个名为`composer.json`的文件,内容如下: ```json { @@ -60,15 +56,15 @@ curl -sS https://getcomposer.org/installer | php } ``` -4. 使用 Composer 安装,执行以下命令。 +4. 使用 Composer 安装,执行以下命令: -``` +```bash php composer.phar install ``` 使用该命令后会在当前目录中创建一个 vendor 文件夹,里面包含 SDK 的依赖库和一个 autoload.php 脚本,方便在项目中调用。 -5. 通过 autoload.php 脚本调用 cos-php-sdk-v5。 +5. 通过 autoload.php 脚本调用 cos-php-sdk-v5: ```php require '/path/to/vendor/autoload.php'; @@ -80,7 +76,9 @@ require '/path/to/vendor/autoload.php'; Phar 方式安装 SDK 的步骤如下: -1. 在 [GitHub 发布页面](https://github.com/tencentyun/cos-php-sdk-v5/releases) 下载相应的 phar 文件。 +1. 在 [GitHub 发布页面](https://github.com/tencentyun/cos-php-sdk-v5/releases) 下载相应的 phar 文件; +> 对于 PHP 版本`>= 5.6`且`<7.2.5`的用户请下载`cos-sdk-v5-6.phar`以使用 Guzzle6 版本。 +> 对于 PHP 版本`>=7.2.5`的用户请下载`cos-sdk-v5-7.phar`以使用 Guzzle7 版本。 2. 在代码中引入 phar 文件: ```php @@ -91,16 +89,18 @@ require '/path/to/cos-sdk-v5.phar'; 源码方式安装 SDK 的步骤如下: -1. 在 [GitHub 发布页面](https://github.com/tencentyun/cos-php-sdk-v5/releases) 下载相应的 cos-sdk-v5.tar.gz 文件。 -2. 解压后通过 autoload.php 脚本加载 SDK: +1. 在 [GitHub 发布页面](https://github.com/tencentyun/cos-php-sdk-v5/releases) 下载相应的 cos-sdk-v5.tar.gz 文件; +> 对于 PHP 版本`>= 5.6`且`<7.2.5`的用户请下载`cos-sdk-v5-6.tar.gz`以使用 Guzzle6 版本。 +> 对于 PHP 版本`>=7.2.5`的用户请下载`cos-sdk-v5-7.tar.gz`以使用 Guzzle7 版本。 +2. 解压后通过 autoload.php 脚本加载 SDK: ```php -require '/path/to/cos-php-sdk-v5/vendor/autoload.php'; +require '/path/to/cos-sdk-v5/vendor/autoload.php'; ``` ## 快速入门 -可参照 Demo 程序,详见 [sample 目录](https://github.com/tencentyun/cos-php-sdk-v5/tree/master/sample)。 +可参照 Demo 程序,详见 [sample 目录](https://github.com/tencentyun/cos-php-sdk-v5/tree/master/sample) 。 ## 接口文档 @@ -292,11 +292,11 @@ try { echo "$e\n"; } -## getObjectUrl(获取文件UrL) +## getObjectUrl(获取文件Url) try { $signedUrl = $cosClient->getObjectUrl($bucket, $key, '+10 minutes'); echo $signedUrl; } catch (\Exception $e) { - print_r($e); + echo "$e\n"; } ``` diff --git a/vendor/qcloud/cos-sdk-v5/composer.json b/vendor/qcloud/cos-sdk-v5/composer.json index 3add560..ccee3d0 100644 --- a/vendor/qcloud/cos-sdk-v5/composer.json +++ b/vendor/qcloud/cos-sdk-v5/composer.json @@ -13,17 +13,39 @@ { "name": "lewzylu", "email": "327874225@qq.com" + }, + { + "name": "tuunalai", + "email": "550566181@qq.com" } ], "autoload": { "psr-4": { - "Qcloud\\Cos\\": "src/Qcloud/Cos/" + "Qcloud\\Cos\\": "src/" }, - "files": ["src/Qcloud/Cos/Common.php"] + "files": ["src/Common.php"] + }, + "autoload-dev": { + "psr-4": { + "Qcloud\\Cos\\Tests\\": "tests/" + } }, "require": { - "php": ">=5.3.0", - "guzzlehttp/guzzle": "~6.3", - "guzzlehttp/guzzle-services": "~1.1" + "php": ">=5.6", + "ext-curl": "*", + "ext-json": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^6.2.1 || ^7.0", + "guzzlehttp/guzzle-services": "^1.1", + "guzzlehttp/psr7": "^1.3.1 || ^2.0" + }, + "config": { + "platform-check": false + }, + "scripts": { + "test": [ + "@putenv XDEBUG_MODE=coverage", + "phpunit -v --color=always" + ] } } diff --git a/vendor/qcloud/cos-sdk-v5/phpunit.xml b/vendor/qcloud/cos-sdk-v5/phpunit.xml deleted file mode 100644 index a8516ed..0000000 --- a/vendor/qcloud/cos-sdk-v5/phpunit.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - src/Qcloud/Cos/Tests - - - - - src/ - - - - - - diff --git a/vendor/qcloud/cos-sdk-v5/sample/abortMultipartUpload.php b/vendor/qcloud/cos-sdk-v5/sample/abortMultipartUpload.php index 50cd6da..588d7f2 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/abortMultipartUpload.php +++ b/vendor/qcloud/cos-sdk-v5/sample/abortMultipartUpload.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->abortMultipartUpload(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'UploadId' => 'string', )); diff --git a/vendor/qcloud/cos-sdk-v5/sample/appendObject.php b/vendor/qcloud/cos-sdk-v5/sample/appendObject.php new file mode 100644 index 0000000..5298066 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/appendObject.php @@ -0,0 +1,37 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials' => array( + 'secretId' => $secretId, + 'secretKey' => $secretKey))); +$local_path = "/data/exampleobject"; +try { + $result = $cosClient->appendObject(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', + 'Position' => 0, //追加对象位置 + 'Body' => fopen($local_path, 'rb'),//读取文件内容 + )); + /* + $result = $cosClient->appendObject(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', + 'Position' => (integer)$result['Position'], //取出上一个追加文件的对象位置进行追加 + 'Body' => "hello", //文件流 + )); + */ + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/blindWatermark.php b/vendor/qcloud/cos-sdk-v5/sample/blindWatermark.php index 2fc7253..9aa70c4 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/blindWatermark.php +++ b/vendor/qcloud/cos-sdk-v5/sample/blindWatermark.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -18,7 +18,7 @@ try { $blindWatermarkTemplate->setType(2); $blindWatermarkTemplate->setLevel(3); $result = $cosClient->getObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'ImageHandleParam' => $blindWatermarkTemplate->queryString(), 'SaveAs' => '/data/exampleobject' diff --git a/vendor/qcloud/cos-sdk-v5/sample/catchException.php b/vendor/qcloud/cos-sdk-v5/sample/catchException.php index b44e6f1..c6dd180 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/catchException.php +++ b/vendor/qcloud/cos-sdk-v5/sample/catchException.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketAcl(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/ciTransformation.php b/vendor/qcloud/cos-sdk-v5/sample/ciTransformation.php index eece57a..f705017 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/ciTransformation.php +++ b/vendor/qcloud/cos-sdk-v5/sample/ciTransformation.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -25,7 +25,7 @@ try { $ciParamTransformation->addRule($imageMogrTemplate); $ciParamTransformation->addRule($imageViewTemplate); $result = $cosClient->getObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'ImageHandleParam' => $ciParamTransformation->queryString(), 'SaveAs' => '/data/exampleobject', diff --git a/vendor/qcloud/cos-sdk-v5/sample/completeMultipartUpload.php b/vendor/qcloud/cos-sdk-v5/sample/completeMultipartUpload.php index 35e0e04..9b2b624 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/completeMultipartUpload.php +++ b/vendor/qcloud/cos-sdk-v5/sample/completeMultipartUpload.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->completeMultipartUpload(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'UploadId' => 'string', 'Parts' => array( diff --git a/vendor/qcloud/cos-sdk-v5/sample/copy.php b/vendor/qcloud/cos-sdk-v5/sample/copy.php index b0e1d6a..eba98cc 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/copy.php +++ b/vendor/qcloud/cos-sdk-v5/sample/copy.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -15,9 +15,9 @@ $cosClient = new Qcloud\Cos\Client( $local_path = "/data/exampleobject"; try { $result = $cosClient->copy( - $bucket = 'examplebucket-125000000', //格式:BucketName-APPID + $bucket = 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket $key = 'exampleobject', - $copySorce = array( + $copySource = array( 'Region' => '', 'Bucket' => '', 'Key' => '', diff --git a/vendor/qcloud/cos-sdk-v5/sample/copyObject.php b/vendor/qcloud/cos-sdk-v5/sample/copyObject.php index 813fc46..4375e8e 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/copyObject.php +++ b/vendor/qcloud/cos-sdk-v5/sample/copyObject.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->copyObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'CopySource' => 'examplebucket2-125000000.cos.ap-guangzhou.myqcloud.com/exampleobject', 'MetadataDirective' => 'Replaced', diff --git a/vendor/qcloud/cos-sdk-v5/sample/cosClient.php b/vendor/qcloud/cos-sdk-v5/sample/cosClient.php index b1a965b..4b68d1a 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/cosClient.php +++ b/vendor/qcloud/cos-sdk-v5/sample/cosClient.php @@ -2,10 +2,10 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$token = "COS_TMPTOKEN"; //"云 API 临时密钥 Token" -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket +$token = "COS_TMPTOKEN"; //如果使用永久密钥不需要填入token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见https://cloud.tencent.com/document/product/436/14048 $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, //园区 @@ -15,7 +15,7 @@ $cosClient = new Qcloud\Cos\Client( 'ip' => '', //ip 'port' => '', //端口 'endpoint' => '', //endpoint - 'domain' => '', //自定义域名 + 'domain' => '', //domain可以填写用户自定义域名,或者桶的全球加速域名 'proxy' => '', //代理服务器 'retry' => 10, //重试次数 'userAgent' => '', //UA diff --git a/vendor/qcloud/cos-sdk-v5/sample/createBucket.php b/vendor/qcloud/cos-sdk-v5/sample/createBucket.php index eafad49..511dbc3 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/createBucket.php +++ b/vendor/qcloud/cos-sdk-v5/sample/createBucket.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->createBucket(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/createDocProcessJobs.php b/vendor/qcloud/cos-sdk-v5/sample/createDocProcessJobs.php new file mode 100644 index 0000000..0eae43c --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/createDocProcessJobs.php @@ -0,0 +1,50 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->createDocProcessJobs(array( + 'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Tag' => 'DocProcess', //任务的 Tag:DocProcess 固定值 + 'QueueId' => 'pd8e422a2ea134165a92f2012ea43****', //任务所在的队列 ID + 'Input' => array( + 'Object' => 'Append功能测试.pdf' //待操作的文件对象 + ), + 'Operation' => array( + 'DocProcess' => array( + 'SrcType' => 'pdf', //源数据的后缀类型 + 'TgtType' => 'png', //转换输出目标文件类型 + 'SheetId' => 0, //表格文件参数,转换第 X 个表,默认为1 + 'StartPage' => 1, //从第 X 页开始转换,默认为1 + 'EndPage' => 3, //转换至第 X 页,默认为-1,即转换全部页 + 'ImageParams' => '', //转换后的图片处理参数 + 'DocPassword' => '', //Office 文档的打开密码 + 'Comments' => 0, //是否隐藏批注和应用修订,默认为 0 + 'PaperDirection' => 0, //表格文件转换纸张方向,默认为0 + 'Quality' => 100, //生成预览图的图片质量,取值范围 [1-100],默认值100 + 'Zoom' => 100, //预览图片的缩放参数,取值范围[10-200], 默认值100 + ), + 'Output' => array( + 'Region' => $region, //存储桶的地域 + 'Bucket' => 'examplebucket-1250000000', //存储结果的存储桶 + 'Object' => 'pic-${Page}.jpg', //输出文件路径 + ), + ), + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/createFolder.php b/vendor/qcloud/cos-sdk-v5/sample/createFolder.php index ccf3948..2c9f4a6 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/createFolder.php +++ b/vendor/qcloud/cos-sdk-v5/sample/createFolder.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->putObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'folder/', 'Body' => "", )); diff --git a/vendor/qcloud/cos-sdk-v5/sample/createMediaConcatJobs.php b/vendor/qcloud/cos-sdk-v5/sample/createMediaConcatJobs.php new file mode 100644 index 0000000..3f967d4 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/createMediaConcatJobs.php @@ -0,0 +1,96 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + // start --------------- 使用模版 ----------------- // + $result = $cosClient->createMediaConcatJobs(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Tag' => 'Concat', + 'QueueId' => 'asdadadfafsdkjhfjghdfjg', + 'CallBack' => 'https://example.com/callback', + 'Input' => array( + 'Object' => 'video01.mp4' + ), + 'Operation' => array( + 'TemplateId' => 'asdfafiahfiushdfisdhfuis', + 'Output' => array( + 'Region' => $region, + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Object' => 'concat-video02.mp4', + ), + ), + )); + // 请求成功 + print_r($result); + // end --------------- 使用模版 ----------------- // + + // start --------------- 自定义参数 ----------------- // + $result = $cosClient->createMediaConcatJobs(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Tag' => 'Concat', + 'QueueId' => 'asdadadfafsdkjhfjghdfjg', + 'CallBack' => 'https://example.com/callback', + 'Input' => array( + 'Object' => 'video01.mp4' + ), + 'Operation' => array( + 'Output' => array( + 'Region' => $region, + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Object' => 'concat-video03.mp4', + ), + 'ConcatTemplate' => array( + 'ConcatFragments' => array( + array( + 'Url' => 'https://example.com/video01.mp4', + 'Mode' => 'Start', +// 'StartTime' => '0', +// 'EndTime' => '7', + ), + array( + 'Url' => 'https://example.com/video02.mp4', + 'Mode' => 'Start', +// 'StartTime' => '0', +// 'EndTime' => '10', + ), + // ... repeated + ), + 'Index' => 1, + 'Container' => array( + 'Format' => 'mp4' + ), + 'Audio' => array( + 'Codec' => 'mp3', + 'Samplerate' => '', + 'Bitrate' => '', + 'Channels' => '', + ), + 'Video' => array( + 'Codec' => 'H.264', + 'Bitrate' => '1000', + 'Width' => '1280', + 'Height' => '', + 'Fps' => '30', + ), + ), + ), + )); + // 请求成功 + print_r($result); + // end --------------- 自定义参数 ----------------- // +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/createMediaSnapshotJobs.php b/vendor/qcloud/cos-sdk-v5/sample/createMediaSnapshotJobs.php new file mode 100644 index 0000000..b4c75a5 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/createMediaSnapshotJobs.php @@ -0,0 +1,71 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + // start --------------- 使用模版 ----------------- // + $result = $cosClient->createMediaSnapshotJobs(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Tag' => 'Snapshot', + 'QueueId' => 'asdadadfafsdkjhfjghdfjg', + 'CallBack' => 'https://example.com/callback', + 'Input' => array( + 'Object' => 'video01.mp4' + ), + 'Operation' => array( + 'TemplateId' => 'asdfafiahfiushdfisdhfuis', + 'Output' => array( + 'Region' => $region, + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Object' => 'snapshot-${Number}.jpg', + ), + ), + )); + // 请求成功 + print_r($result); + // end --------------- 使用模版 ----------------- // + + + // start --------------- 自定义参数 ----------------- // + $result = $cosClient->createMediaSnapshotJobs(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Tag' => 'Snapshot', + 'QueueId' => 'asdadadfafsdkjhfjghdfjg', + 'CallBack' => 'https://example.com/callback', + 'Input' => array( + 'Object' => 'video01.mp4' + ), + 'Operation' => array( + 'Output' => array( + 'Region' => $region, + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Object' => 'snapshot-${Number}.jpg', + ), + 'Snapshot' => array( + 'Mode' => 'Average', + 'Start' => 3, + 'TimeInterval' => '', + 'Count' => 3, + 'Width' => '1280', + 'Height' => '', + ), + ), + )); + // 请求成功 + print_r($result); + // end --------------- 自定义参数 ----------------- // +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/createMediaTranscodeJobs.php b/vendor/qcloud/cos-sdk-v5/sample/createMediaTranscodeJobs.php new file mode 100644 index 0000000..6f5d4f1 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/createMediaTranscodeJobs.php @@ -0,0 +1,91 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + // start --------------- 使用模版 ----------------- // + $result = $cosClient->createMediaTranscodeJobs(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Tag' => 'Transcode', + 'QueueId' => 'asdadadfafsdkjhfjghdfjg', + 'CallBack' => 'https://example.com/callback', + 'Input' => array( + 'Object' => 'video01.mp4' + ), + 'Operation' => array( + 'TemplateId' => 'asdfafiahfiushdfisdhfuis', + 'Output' => array( + 'Region' => $region, + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Object' => 'video02.webm', + ), + ), + )); + // 请求成功 + print_r($result); + // end --------------- 使用模版 ----------------- // + + + // start --------------- 自定义参数 ----------------- // + $result = $cosClient->createMediaTranscodeJobs(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Tag' => 'Transcode', + 'QueueId' => 'asdadadfafsdkjhfjghdfjg', + 'CallBack' => 'https://example.com/callback', + 'Input' => array( + 'Object' => 'video01.mp4' + ), + 'Operation' => array( + 'Output' => array( + 'Region' => $region, + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Object' => 'video01.mkv', + ), + 'Transcode' => array( + 'Container' => array( + 'Format' => 'mp4' + ), + 'Video' => array( + 'Codec' => 'H.264', + 'Profile' => 'high', + 'Bitrate' => '1000', + 'Preset' => 'medium', + 'Width' => '1280', + 'Fps' => '30', + ), + 'Audio' => array( + 'Codec' => 'aac', + 'Samplerate' => '44100', + 'Bitrate' => '128', + 'Channels' => '4', + ), + 'TransConfig' => array( + 'AdjDarMethod' => 'scale', + 'IsCheckReso' => 'false', + 'ResoAdjMethod' => '1', + ), + 'TimeInterval' => array( + 'Start' => '0', + 'Duration' => '60', + ), + ), + ), + )); + // 请求成功 + print_r($result); + // end --------------- 自定义参数 ----------------- // +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/createMultipartUpload.php b/vendor/qcloud/cos-sdk-v5/sample/createMultipartUpload.php index bedca7e..91851c8 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/createMultipartUpload.php +++ b/vendor/qcloud/cos-sdk-v5/sample/createMultipartUpload.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->createMultipartUpload(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', /* 'CacheControl' => 'string', diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBucket.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBucket.php index a3d1fc2..d929a14 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteBucket.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBucket.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->deleteBucket(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketCors.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketCors.php index fc958e1..f584fd2 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketCors.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketCors.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->deleteBucketCors(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketDomain.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketDomain.php index 5239fe6..cbb5ba2 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketDomain.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketDomain.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->deleteBucketDomain(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketGuetzli.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketGuetzli.php index f165e70..fbb4147 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketGuetzli.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketGuetzli.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->DeleteBucketGuetzli(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketImageStyle.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketImageStyle.php index cc4a295..411b892 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketImageStyle.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketImageStyle.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->DeleteBucketImageStyle(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketLifecycle.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketLifecycle.php index dbe3183..bdf5439 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketLifecycle.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketLifecycle.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->deleteBucketLifecycle(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketTagging.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketTagging.php index 9341d2a..cc437b8 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketTagging.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketTagging.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->deleteBucketTagging(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketWebsite.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketWebsite.php index a2b8014..2b6a300 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteBucketWebsite.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBucketWebsite.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->deleteBucketWebsite(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteBuckets.php b/vendor/qcloud/cos-sdk-v5/sample/deleteBuckets.php new file mode 100644 index 0000000..ad7826d --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteBuckets.php @@ -0,0 +1,52 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + //列出所有buckets + $buckets = $cosClient->listBuckets(); + + //若bucket列表不为空则进行删除逻辑,先删除对象,再判断是否有上传的任务进行删除,最后删除桶 + if (!empty($buckets['Buckets'][0])) { + foreach ($buckets['Buckets'][0]['Bucket'] as $key => $value) { + $result = $cosClient->listObjects(array('Bucket' => $value['Name'])); + if (isset($result['Contents'])) { + foreach ($result['Contents'] as $content) { + $cosClient->deleteObject(array('Bucket' => $value['Name'], 'Key' => $content['Key'])); + } + } + while(True){ + $result = $cosClient->ListMultipartUploads( + array('Bucket' => $value['Name'])); + if ($result['Uploads'] == array()) { + break; + } + foreach ($result['Uploads'] as $upload) { + try { + $cosClient->AbortMultipartUpload( + array('Bucket' => $value['Name'], + 'Key' => $upload['Key'], + 'UploadId' => $upload['UploadId'])); + } catch (\Exception $e) { + print_r($e); + } + } + } + $cosClient->deleteBucket(array('Bucket' => $value['Name'])); + } + } + print_r('DELETE ALL BUCKETS SUCCEED!'); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} \ No newline at end of file diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteFolder.php b/vendor/qcloud/cos-sdk-v5/sample/deleteFolder.php index 61bec24..f771405 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteFolder.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteFolder.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -19,7 +19,7 @@ $isTruncated = true; while ( $isTruncated ) { try { $result = $cosClient->listObjects( - ['Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + ['Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Delimiter' => '', 'EncodingType' => 'url', 'Marker' => $nextMarker, @@ -34,7 +34,7 @@ while ( $isTruncated ) { // 按照需求自定义拼接下载路径 try { $cosClient->deleteObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => $cos_file_path, )); echo ( $cos_file_path . "\n" ); diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteObject.php b/vendor/qcloud/cos-sdk-v5/sample/deleteObject.php index d89655e..e1db6f0 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/deleteObject.php +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteObject.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->deleteObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/deleteObjectTagging.php b/vendor/qcloud/cos-sdk-v5/sample/deleteObjectTagging.php new file mode 100644 index 0000000..a650665 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/deleteObjectTagging.php @@ -0,0 +1,25 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->deleteObjectTagging(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} \ No newline at end of file diff --git a/vendor/qcloud/cos-sdk-v5/sample/detectAudio.php b/vendor/qcloud/cos-sdk-v5/sample/detectAudio.php new file mode 100644 index 0000000..4555231 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/detectAudio.php @@ -0,0 +1,53 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + // start --------------- 桶文件审核 ----------------- // + $result = $cosClient->detectAudio(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Object' => 'sound01.mp3', + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', +// 'Callback' => 'https://example.com/callback', +// 'CallbackVersion' => '', +// 'BizType' => '', + ), + )); + // 请求成功 + print_r($result); + // end --------------- 桶文件审核 ----------------- // + + // start --------------- 音频文件地址审核 ----------------- // + $result = $cosClient->detectAudio(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Url' => 'https://example.com/test.mp3', + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', +// 'Callback' => 'https://example.com/callback', +// 'CallbackVersion' => '', +// 'BizType' => '', + ), + )); + // 请求成功 + print_r($result); + // end --------------- 音频文件地址审核 ----------------- // +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/detectDocument.php b/vendor/qcloud/cos-sdk-v5/sample/detectDocument.php new file mode 100644 index 0000000..2581c4c --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/detectDocument.php @@ -0,0 +1,49 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + // 存储桶文档审核 + $result = $cosClient->detectDocument(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Object' => 'test01.docx', +// 'Type' => 'docx', + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', +// 'Callback' => 'https://example.com/callback/', +// 'BizType' => '', + ), + )); + + // 文档URL审核 + $result = $cosClient->detectDocument(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Url' => 'https://example.com/test01.docx', +// 'Type' => 'docx', + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', +// 'Callback' => 'https://example.com/callback/', +// 'BizType' => '', + ), + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/detectImage.php b/vendor/qcloud/cos-sdk-v5/sample/detectImage.php new file mode 100644 index 0000000..68ad951 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/detectImage.php @@ -0,0 +1,48 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials' => array( + 'secretId' => $secretId, + 'secretKey' => $secretKey))); +try { + //存储桶图片审核 + $result = $cosClient->detectImage(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', + 'DetectType' => 'porn,politics', //可选四种参数:porn,politics,terrorist,ads,可使用多种规则,注意规则间不要加空格 + 'ci-process' => 'sensitive-content-recognition', +// 'Interval' => 5, // 审核gif时使用 截帧的间隔 +// 'MaxFrames' => 5, // 针对 GIF 动图审核的最大截帧数量,需大于0。 +// 'BizType' => '', // 审核策略 + )); + // 请求成功 + print_r($result); + + + //图片链接审核 + $imgUrl = 'https://test.jpg'; + $result = $cosClient->detectImage(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => '/', // 链接图片资源路径写 / 即可 + 'DetectType' => 'porn,ads',//可选四种参数:porn,politics,terrorist,ads,可使用多种规则,注意规则间不要加空格 + 'DetectUrl' => $imgUrl, + 'ci-process' => 'sensitive-content-recognition', +// 'Interval' => 5, // 审核gif时使用 截帧的间隔 +// 'MaxFrames' => 5, // 针对 GIF 动图审核的最大截帧数量,需大于0。 +// 'BizType' => '', // 审核策略 + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/detectImages.php b/vendor/qcloud/cos-sdk-v5/sample/detectImages.php new file mode 100644 index 0000000..e55fd29 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/detectImages.php @@ -0,0 +1,44 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials' => array( + 'secretId' => $secretId, + 'secretKey' => $secretKey))); +try { + $imgUrl = 'http://example.com/test.php'; + $result = $cosClient->detectImages(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Inputs' => array( + array( + 'Object' => 'test01.png', +// 'Interval' => '', +// 'MaxFrames' => '', +// 'DataId' => 'aaa', + ), + array( + 'Url' => $imgUrl, +// 'Interval' => '', +// 'MaxFrames' => '', +// 'DataId' => 'bbb', + ), + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', +// 'BizType' => '' + ) + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/detectLable.php b/vendor/qcloud/cos-sdk-v5/sample/detectLable.php index da120c1..12eafc4 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/detectLable.php +++ b/vendor/qcloud/cos-sdk-v5/sample/detectLable.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->DetectLabel(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/detectText.php b/vendor/qcloud/cos-sdk-v5/sample/detectText.php new file mode 100644 index 0000000..7e463bd --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/detectText.php @@ -0,0 +1,52 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + // start --------------- 文本内容审核 ----------------- // + $content = '敏感词'; + $result = $cosClient->detectText(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Content' => base64_encode($content) // 文本需base64_encode + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', //Porn,Terrorism,Politics,Ads,Illegal,Abuse类型 + 'BizType' => '', + ), + )); + // 请求成功 + print_r($result); + // end --------------- 文本内容审核 ----------------- // + + // start --------------- 存储桶文本文件审核 ----------------- // + $result = $cosClient->detectText(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Object' => 'test01.txt' + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', +// 'Callback' => 'https://example.callback.com/test/', // 回调URL +// 'CallbackVersion' => 'Detail', +// 'BizType' => '', + ), + )); + // 请求成功 + print_r($result); + // end --------------- 存储桶文本文件审核 ----------------- // +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/detectVideo.php b/vendor/qcloud/cos-sdk-v5/sample/detectVideo.php new file mode 100644 index 0000000..fa0b5dd --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/detectVideo.php @@ -0,0 +1,63 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + //存储桶视频审核 + $result = $cosClient->detectVideo(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Object' => 'test.mp4', // 存储桶文件 + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', +// 'Callback' => 'https://example.com/callback', +// 'BizType' => '', +// 'DetectContent' => 1, +// 'CallbackVersion' => 'Detail', + 'Snapshot' => array( +// 'Mode' => 'Average', +// 'TimeInterval' => 50, + 'Count' => '3', + ), + ), + )); + + //视频url审核 + $videoUrl = 'http://example.com/test.mp4'; + $result = $cosClient->detectVideo(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Input' => array( + 'Url' => $videoUrl, // 视频url + ), + 'Conf' => array( + 'DetectType' => 'Porn,Terrorism,Politics,Ads', +// 'Callback' => 'https://example.com/callback', +// 'BizType' => '', +// 'DetectContent' => 1, +// 'CallbackVersion' => 'Detail', + 'Snapshot' => array( +// 'Mode' => 'Average', +// 'TimeInterval' => 50, + 'Count' => '3', + ), + ), + )); + + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/doesBucketExist.php b/vendor/qcloud/cos-sdk-v5/sample/doesBucketExist.php new file mode 100644 index 0000000..9bfa427 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/doesBucketExist.php @@ -0,0 +1,25 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->doesBucketExist( + 'examplebucket-125000000'//存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + ); ; + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/doesObjectExist.php b/vendor/qcloud/cos-sdk-v5/sample/doesObjectExist.php new file mode 100644 index 0000000..668d9bd --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/doesObjectExist.php @@ -0,0 +1,26 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->doesObjectExist( + 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'exampleobject' //对象名 + ); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/download.php b/vendor/qcloud/cos-sdk-v5/sample/download.php index 2a0b208..78f1f46 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/download.php +++ b/vendor/qcloud/cos-sdk-v5/sample/download.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,13 +14,13 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); $local_path = "/data/exampleobject"; -$printbar = function($totolSize, $downloadedSize) { - printf("downloaded [%d/%d]\n", $downloadedSize, $totolSize); +$printbar = function($totalSize, $downloadedSize) { + printf("downloaded [%d/%d]\n", $downloadedSize, $totalSize); }; try { $result = $cosClient->download( - $bucket = 'examplebucket-125000000', //格式:BucketName-APPID + $bucket = 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket $key = 'exampleobject', $saveAs = $local_path, $options=['Progress' => $printbar, //指定进度条 diff --git a/vendor/qcloud/cos-sdk-v5/sample/downloadFolder.php b/vendor/qcloud/cos-sdk-v5/sample/downloadFolder.php index 0297ad1..db91471 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/downloadFolder.php +++ b/vendor/qcloud/cos-sdk-v5/sample/downloadFolder.php @@ -2,12 +2,9 @@ require dirname( __FILE__ ) . '/../vendor/autoload.php'; -$secretId = 'COS_SECRETID'; -//'云 API 密钥 SecretId'; -$secretKey = 'COS_SECRETKEY'; -//'云 API 密钥 SecretKey'; -$region = 'ap-beijing'; -//设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -25,7 +22,7 @@ $isTruncated = true; while ( $isTruncated ) { try { $result = $cosClient->listObjects( - ['Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + ['Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Delimiter' => '', 'EncodingType' => 'url', 'Marker' => $nextMarker, @@ -43,7 +40,7 @@ while ( $isTruncated ) { // 按照需求自定义拼接下载路径 try { $result = $cosClient->download( - $bucket = 'examplebucket-125000000', //格式:BucketName-APPID + $bucket = 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket $key = $cos_file_path, $saveAs = $local_file_path ); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBlindWatermark.php b/vendor/qcloud/cos-sdk-v5/sample/getBlindWatermark.php index 01a54bb..7dd5d8b 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBlindWatermark.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBlindWatermark.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -22,7 +22,7 @@ try { $picOperationsTemplate->setIsPicInfo(1); $picOperationsTemplate->addRule($blindWatermarkTemplate, "resultobject"); $result = $cosClient->putObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Body' => fopen($local_path, 'rb'), 'PicOperations' => $picOperationsTemplate->queryString(), diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketAccelerate.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketAccelerate.php new file mode 100644 index 0000000..584a9fe --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketAccelerate.php @@ -0,0 +1,25 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->getBucketAccelerate(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketAcl.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketAcl.php index 997c56f..faded17 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketAcl.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketAcl.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketAcl(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketCors.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketCors.php index 55b347f..273b9c0 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketCors.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketCors.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketCors(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketDomain.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketDomain.php index 72caf27..6c74798 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketDomain.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketDomain.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketDomain(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketGuetzli.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketGuetzli.php index b1f5395..a4e218e 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketGuetzli.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketGuetzli.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->GetBucketGuetzli(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketImageStyle.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketImageStyle.php index bb47917..52a3c49 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketImageStyle.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketImageStyle.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->GetBucketImageStyle(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'StyleName' => 'stylename', )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketInventory.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketInventory.php index f76f47f..001f402 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketInventory.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketInventory.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketInvnetory(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Id' => 'string', )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketLifecycle.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketLifecycle.php index aef6702..c077e43 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketLifecycle.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketLifecycle.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketLifecycle(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketLogging.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketLogging.php index 1bea180..09da0cf 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketLogging.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketLogging.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketLogging(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketReferer.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketReferer.php new file mode 100644 index 0000000..48d52c5 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketReferer.php @@ -0,0 +1,25 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials' => array( + 'secretId' => $secretId, + 'secretKey' => $secretKey))); +try { + $result = $cosClient->getBucketReferer(array( + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + ) + ); + // 请求成功 + echo($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketTagging.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketTagging.php index 344d253..da422db 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketTagging.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketTagging.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketTagging(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getBucketWebsite.php b/vendor/qcloud/cos-sdk-v5/sample/getBucketWebsite.php index 3e5d76d..8a31f5b 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getBucketWebsite.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getBucketWebsite.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getBucketWebsite(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessJob.php b/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessJob.php new file mode 100644 index 0000000..1213b68 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessJob.php @@ -0,0 +1,26 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->describeDocProcessJob(array( + 'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'examplejobid', // JobId + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessJobs.php b/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessJobs.php new file mode 100644 index 0000000..fc9c9df --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessJobs.php @@ -0,0 +1,33 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->getDescribeDocProcessJobs(array( + 'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'QueueId' => 'pd8e422a2ea134165a92f2012ea43****', //拉取该队列 ID 下的任务 + 'Tag' => 'DocProcess', //任务的 Tag:DocProcess 固定值 +// 'NextToken' => '143486', //请求的上下文,用于翻页。上次返回的值 +// 'OrderByTime' => 'Desc', //Desc 或者 Asc。默认为 Desc +// 'Size' => 2, //拉取的最大任务数。默认为10。最大为100 +// 'States' => 'All', //拉取该状态的任务,以,分割,支持多状态:All、Submitted、Running、Success、Failed、Pause、Cancel。默认为 All。 +// 'StartCreationTime' => '2021-10-10T16:20:07+0800', //拉取创建时间大于该时间的任务 +// 'EndCreationTime' => '2021-10-10T16:20:07+0800', //拉取创建时间小于该时间的任务 + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessQueues.php b/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessQueues.php new file mode 100644 index 0000000..7a72dbe --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getDescribeDocProcessQueues.php @@ -0,0 +1,25 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->describeDocProcessQueues(array( + 'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getDetectAudioResult.php b/vendor/qcloud/cos-sdk-v5/sample/getDetectAudioResult.php new file mode 100644 index 0000000..eb11cd8 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getDetectAudioResult.php @@ -0,0 +1,26 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->getDetectAudioResult(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', // jobId + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getDetectDocumentResult.php b/vendor/qcloud/cos-sdk-v5/sample/getDetectDocumentResult.php new file mode 100644 index 0000000..0f9c1b5 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getDetectDocumentResult.php @@ -0,0 +1,26 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->getDetectDocumentResult(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', // jobId + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getDetectTextResult.php b/vendor/qcloud/cos-sdk-v5/sample/getDetectTextResult.php new file mode 100644 index 0000000..1e9ec9d --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getDetectTextResult.php @@ -0,0 +1,26 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->getDetectTextResult(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', // jobId + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getDetectVideoResult.php b/vendor/qcloud/cos-sdk-v5/sample/getDetectVideoResult.php new file mode 100644 index 0000000..d8fe635 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getDetectVideoResult.php @@ -0,0 +1,26 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->getDetectVideoResult(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', // jobId + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getMediaInfo.php b/vendor/qcloud/cos-sdk-v5/sample/getMediaInfo.php new file mode 100644 index 0000000..b999c2e --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getMediaInfo.php @@ -0,0 +1,29 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); + +try { + $result = $cosClient->GetMediaInfo( + array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' =>'exampleobject', //桶中的媒体文件,如test.mp4 + 'ci-process' => 'videoinfo' //操作类型,固定使用 videoinfo + ) + ); + // 请求成功 + echo($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} \ No newline at end of file diff --git a/vendor/qcloud/cos-sdk-v5/sample/getObject.php b/vendor/qcloud/cos-sdk-v5/sample/getObject.php index cbc0da7..4f1e20d 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getObject.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getObject.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->getObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'SaveAs' => '/data/exampleobject', /* diff --git a/vendor/qcloud/cos-sdk-v5/sample/getObjectSensitiveContentRecognition.php b/vendor/qcloud/cos-sdk-v5/sample/getObjectSensitiveContentRecognition.php new file mode 100644 index 0000000..d2c3154 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getObjectSensitiveContentRecognition.php @@ -0,0 +1,53 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials' => array( + 'secretId' => $secretId, + 'secretKey' => $secretKey))); +try { + /** + * 此接口已不再维护 2021.11.25 + * 图片审核建议使用 detectImage & detectImages 两个接口 + * 新增功能字段会在 detectImage & detectImages 接口维护 + */ + //存储桶图片审核 + $result = $cosClient->getObjectSensitiveContentRecognition(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', + 'DetectType' => 'porn,politics', //可选四种参数:porn,politics,terrorist,ads,可使用多种规则,注意规则间不要加空格 + 'ci-process' => 'sensitive-content-recognition', +// 'Interval' => 5, // 审核gif时使用 截帧的间隔 +// 'MaxFrames' => 5, // 针对 GIF 动图审核的最大截帧数量,需大于0。 +// 'BizType' => '', // 审核策略 + )); + // 请求成功 + print_r($result); + + + //图片链接审核 + $imgUrl = 'https://test.jpg'; + $result = $cosClient->getObjectSensitiveContentRecognition(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => '/', // 链接图片资源路径写 / 即可 + 'DetectType' => 'porn,ads',//可选四种参数:porn,politics,terrorist,ads,可使用多种规则,注意规则间不要加空格 + 'DetectUrl' => $imgUrl, + 'ci-process' => 'sensitive-content-recognition', +// 'Interval' => 5, // 审核gif时使用 截帧的间隔 +// 'MaxFrames' => 5, // 针对 GIF 动图审核的最大截帧数量,需大于0。 +// 'BizType' => '', // 审核策略 + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getObjectTagging.php b/vendor/qcloud/cos-sdk-v5/sample/getObjectTagging.php new file mode 100644 index 0000000..72e3792 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getObjectTagging.php @@ -0,0 +1,25 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials' => array( + 'secretId' => $secretId, + 'secretKey' => $secretKey))); +try { + $result = $cosClient->getObjectTagging(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject' + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getObjectUrl.php b/vendor/qcloud/cos-sdk-v5/sample/getObjectUrl.php index 656ffbd..88a75c2 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getObjectUrl.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getObjectUrl.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -18,7 +18,7 @@ $cosClient = new Qcloud\Cos\Client( $local_path = "/data/exampleobject"; try { - $bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID + $bucket = "examplebucket-1250000000"; //存储桶,存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket $key = "exampleobject"; //对象在存储桶中的位置,即对象键 $signedUrl = $cosClient->getObjectUrl( $bucket, @@ -29,7 +29,7 @@ try { 'Params' => [ // Params中可以传自定义querystring 'aaa' => 'bbb', 'ccc' => 'ddd' - ] + ], ] ); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/getObjectWithoutSign.php b/vendor/qcloud/cos-sdk-v5/sample/getObjectWithoutSign.php new file mode 100644 index 0000000..6044eb2 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getObjectWithoutSign.php @@ -0,0 +1,27 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials' => array( + 'secretId' => $secretId, + 'secretKey' => $secretKey))); + +try { + $bucket = 'examplebucket-125000000'; //存储桶,存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + $key = "exampleobject"; //对象在存储桶中的位置,即对象键 + $signedUrl = $cosClient -> getObjectUrlWithoutSign($bucket, $key); + + // 请求成功 + echo $signedUrl; +} catch (\Exception $e) { + // 请求失败 + print_r($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/getPresignedUrl.php b/vendor/qcloud/cos-sdk-v5/sample/getPresignedUrl.php index 2a507ec..7d068e7 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/getPresignedUrl.php +++ b/vendor/qcloud/cos-sdk-v5/sample/getPresignedUrl.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -12,14 +12,16 @@ $cosClient = new Qcloud\Cos\Client( 'credentials'=> array( 'secretId' => $secretId , 'secretKey' => $secretKey))); -$local_path = "/data/exampleobject"; try { $signedUrl = $cosClient->getPresignedUrl( - $method='putObject', - $args=['Bucket'=>'examplebucket-1250000000', //格式:BucketName-APPID - 'Key'=>'exampleobject', - 'Body'=>''], - $expires='+30 minutes"'); + $method='getObject', + $args=array( + 'Bucket'=>'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key'=>'exampleobject', + 'Body'=>'', + 'Params'=>array(), + 'Headers'=>array()), + $expires='+30 minutes'); // 请求成功 echo($signedUrl); } catch (\Exception $e) { diff --git a/vendor/qcloud/cos-sdk-v5/sample/getSnapshot.php b/vendor/qcloud/cos-sdk-v5/sample/getSnapshot.php new file mode 100644 index 0000000..4e6965a --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/getSnapshot.php @@ -0,0 +1,41 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +$time = 3.14; +$local_path = "/data/exampleobject/test.jpg"; +try { + /* + * 如果访问400,media bucket unbinded, bucket's host is unavailable + * 请先在控制台开启媒体处理开关 + */ + $result = $cosClient->getSnapshot( + array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' =>'exampleobject', //桶中的媒体文件,如test.mp4 + 'ci-process' => 'snapshot', //操作类型,固定使用 snapshot + 'Time' => $time, //截图的时间点,单位为秒 + 'SaveAs' => $local_path, //本地保存路径 +// 'Width' => 0, +// 'Height' => 0, +// 'Format' => 'jpg', +// 'Rotate' => 'auto', +// 'Mode' => 'exactframe', + ) + ); + // 请求成功 + echo($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} \ No newline at end of file diff --git a/vendor/qcloud/cos-sdk-v5/sample/headBucket.php b/vendor/qcloud/cos-sdk-v5/sample/headBucket.php index 2f8d0c7..1e1c314 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/headBucket.php +++ b/vendor/qcloud/cos-sdk-v5/sample/headBucket.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,11 +14,12 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->headBucket(array( - 'Bucket' => 'examplebucket-125000000' //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000' //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); } catch (\Exception $e) { + // 请求失败 echo($e); } diff --git a/vendor/qcloud/cos-sdk-v5/sample/headObject.php b/vendor/qcloud/cos-sdk-v5/sample/headObject.php index 0d6ba2b..6986395 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/headObject.php +++ b/vendor/qcloud/cos-sdk-v5/sample/headObject.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->headObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/imageAve.php b/vendor/qcloud/cos-sdk-v5/sample/imageAve.php index 3227e1e..59e317d 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/imageAve.php +++ b/vendor/qcloud/cos-sdk-v5/sample/imageAve.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->ImageAve(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/imageExif.php b/vendor/qcloud/cos-sdk-v5/sample/imageExif.php index 877aae7..51d263c 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/imageExif.php +++ b/vendor/qcloud/cos-sdk-v5/sample/imageExif.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->ImageExif(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/imageInfo.php b/vendor/qcloud/cos-sdk-v5/sample/imageInfo.php index 1178083..934f31b 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/imageInfo.php +++ b/vendor/qcloud/cos-sdk-v5/sample/imageInfo.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->ImageInfo(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/imageMogr.php b/vendor/qcloud/cos-sdk-v5/sample/imageMogr.php index 5b60d2f..f905b97 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/imageMogr.php +++ b/vendor/qcloud/cos-sdk-v5/sample/imageMogr.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -17,7 +17,7 @@ try { $imageMogrTemplate->thumbnailByScale(50); $imageMogrTemplate->rotate(50); $result = $cosClient->getObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'ImageHandleParam' => $imageMogrTemplate->queryString(), 'SaveAs' => '/data/exampleobject', diff --git a/vendor/qcloud/cos-sdk-v5/sample/imageProcess.php b/vendor/qcloud/cos-sdk-v5/sample/imageProcess.php index 7b23171..3619440 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/imageProcess.php +++ b/vendor/qcloud/cos-sdk-v5/sample/imageProcess.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -19,7 +19,7 @@ try { $picOperationsTemplate->setIsPicInfo(1); $picOperationsTemplate->addRule($imageMogrTemplate, "resultobject"); $result = $cosClient->ImageProcess(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'PicOperations' => $picOperationsTemplate->queryString(), )); diff --git a/vendor/qcloud/cos-sdk-v5/sample/imageView.php b/vendor/qcloud/cos-sdk-v5/sample/imageView.php index 1bf41b5..dc25878 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/imageView.php +++ b/vendor/qcloud/cos-sdk-v5/sample/imageView.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -19,7 +19,7 @@ try { $imageViewTemplate->setHeight(600); $imageViewTemplate->setQuality(1, 85); $result = $cosClient->getObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'ImageHandleParam' => $imageViewTemplate->queryString(), 'SaveAs' => '/data/exampleobject' diff --git a/vendor/qcloud/cos-sdk-v5/sample/imageWatermark.php b/vendor/qcloud/cos-sdk-v5/sample/imageWatermark.php index f921f50..03ac1a4 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/imageWatermark.php +++ b/vendor/qcloud/cos-sdk-v5/sample/imageWatermark.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -20,7 +20,7 @@ try { $imageWatermarkTemplate->setDy(10); $imageWatermarkTemplate->setSpcent(100); $result = $cosClient->getObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'ImageHandleParam' => $imageWatermarkTemplate->queryString(), 'SaveAs' => '/data/exampleobject' diff --git a/vendor/qcloud/cos-sdk-v5/sample/listBucket.php b/vendor/qcloud/cos-sdk-v5/sample/listBuckets.php similarity index 50% rename from vendor/qcloud/cos-sdk-v5/sample/listBucket.php rename to vendor/qcloud/cos-sdk-v5/sample/listBuckets.php index 6dfcf9a..6f72251 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/listBucket.php +++ b/vendor/qcloud/cos-sdk-v5/sample/listBuckets.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, diff --git a/vendor/qcloud/cos-sdk-v5/sample/listMultipartUploads.php b/vendor/qcloud/cos-sdk-v5/sample/listMultipartUploads.php index 35c8100..6cc30bc 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/listMultipartUploads.php +++ b/vendor/qcloud/cos-sdk-v5/sample/listMultipartUploads.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->listMultipartUploads(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Delimiter' => '/', 'EncodingType' => 'url', 'KeyMarker' => 'string', diff --git a/vendor/qcloud/cos-sdk-v5/sample/listObjects.php b/vendor/qcloud/cos-sdk-v5/sample/listObjects.php index 6a4f2a1..2a4aa5c 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/listObjects.php +++ b/vendor/qcloud/cos-sdk-v5/sample/listObjects.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,12 +14,12 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->listObjects(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID - 'Delimiter' => '/', - 'EncodingType' => 'url', - 'Marker' => 'prefix/picture.jpg', - 'Prefix' => 'prfix', - 'MaxKeys' => 1000, + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Delimiter' => '/', //Delimiter表示分隔符, 设置为/表示列出当前目录下的object, 设置为空表示列出所有的object + 'EncodingType' => 'url',//编码格式,对应请求中的 encoding-type 参数 + 'Marker' => 'prefix/picture.jpg',//起始对象键标记 + 'Prefix' => 'prfix/', //Prefix表示列出的object的key以prefix开始 + 'MaxKeys' => 1000, // 设置最大遍历出多少个对象, 一次listObjects最大支持1000 )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/listParts.php b/vendor/qcloud/cos-sdk-v5/sample/listParts.php index 6b18478..72b57a9 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/listParts.php +++ b/vendor/qcloud/cos-sdk-v5/sample/listParts.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->listParts(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'UploadId' => 'NWNhNDY0YzFfMmZiNTM1MGFfNTM2YV8xYjliMTg', 'PartNumberMarker' => 1, diff --git a/vendor/qcloud/cos-sdk-v5/sample/picOperations.php b/vendor/qcloud/cos-sdk-v5/sample/picOperations.php index be7b03e..da216e1 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/picOperations.php +++ b/vendor/qcloud/cos-sdk-v5/sample/picOperations.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -20,7 +20,7 @@ try { $picOperationsTemplate->setIsPicInfo(0); $picOperationsTemplate->addRule($imageMogrTemplate, "resultobject"); $result = $cosClient->putObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Body' => fopen($local_path, 'rb'), 'PicOperations' => $picOperationsTemplate->queryString(), diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBlindWatermark.php b/vendor/qcloud/cos-sdk-v5/sample/putBlindWatermark.php index d5f9e0f..6ccf015 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBlindWatermark.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBlindWatermark.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -21,7 +21,7 @@ try { $picOperationsTemplate->setIsPicInfo(1); $picOperationsTemplate->addRule($blindWatermarkTemplate, "resultobject"); $result = $cosClient->putObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Body' => fopen($local_path, 'rb'), 'PicOperations' => $picOperationsTemplate->queryString(), diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketAccelerate.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketAccelerate.php new file mode 100644 index 0000000..7aa8323 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketAccelerate.php @@ -0,0 +1,26 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->putBucketAccelerate(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Status' => 'Enabled' + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} + diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketAcl.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketAcl.php index c5b475f..1c588bf 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketAcl.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketAcl.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,8 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->putBucketAcl(array( - //bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式 - 'Bucket' => 'examplebucket-125000000', + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'ACL' => 'private', 'Grants' => array( array( diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketCors.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketCors.php index 375077b..d2fff89 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketCors.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketCors.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->putBucketCors(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'CORSRules' => array( array( 'ID' => '1234', diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketDomain.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketDomain.php index 480e320..0431c4c 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketDomain.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketDomain.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->putBucketDomain(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'DomainRules' => array( array( 'Name' => 'www.qq.com', diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketGuetzli.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketGuetzli.php index d0bd12a..33954f0 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketGuetzli.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketGuetzli.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->PutBucketGuetzli(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket )); // 请求成功 print_r($result); diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketImageStyle.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketImageStyle.php index 9fbb671..6937dfb 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketImageStyle.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketImageStyle.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->PutBucketImageStyle(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'StyleName' => 'stylename', 'StyleBody' => 'imageMogr2/thumbnail/!50px', )); diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketInventory.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketInventory.php index 7b0eb2e..75df313 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketInventory.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketInventory.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->putBucketInventory(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Id' => 'string', 'Destination' => array( 'COSBucketDestination'=>array( diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketLifecycle.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketLifecycle.php index 96cad2a..f19c652 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketLifecycle.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketLifecycle.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->putBucketLifecycle(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Rules' => array( array( 'Expiration' => array( diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketLogging.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketLogging.php index cc6911f..0b18733 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketLogging.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketLogging.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,9 +14,9 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->putBucketLogging(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'LoggingEnabled' => array( - 'TargetBucket' => 'examplebucket2-125000000', //格式:BucketName-APPID + 'TargetBucket' => 'examplebucket2-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'TargetPrefix' => '', ) )); diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketReferer.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketReferer.php new file mode 100644 index 0000000..191b6fe --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketReferer.php @@ -0,0 +1,35 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials' => array( + 'secretId' => $secretId, + 'secretKey' => $secretKey))); +try { + $result = $cosClient->putBucketReferer( + array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Status' => 'Enabled', //是否开启防盗链,枚举值:Enabled、Disabled + 'RefererType' => 'White-List', //防盗链类型,枚举值:Black-List、White-List + 'DomainList' => array( + 'Domains' => array( + '*.qq.com', + '*.qcloud.com', + ) + ), //生效域名列表 +// 'EmptyReferConfiguration' => 'Allow',//是否允许空 Referer 访问,枚举值:Allow、Deny,默认值为 Deny + ) + ); + // 请求成功 + echo($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} \ No newline at end of file diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketTagging.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketTagging.php index 06cb9eb..26e6064 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketTagging.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketTagging.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->putBucketTagging(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'TagSet' => array( array('Key'=>'key1', 'Value'=>'value1', diff --git a/vendor/qcloud/cos-sdk-v5/sample/putBucketWebsite.php b/vendor/qcloud/cos-sdk-v5/sample/putBucketWebsite.php index 34421de..96afb28 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putBucketWebsite.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putBucketWebsite.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -15,7 +15,7 @@ $cosClient = new Qcloud\Cos\Client( try { $result = $cosClient->putBucketWebsite(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'IndexDocument' => array( 'Suffix' => 'index.html', ), diff --git a/vendor/qcloud/cos-sdk-v5/sample/putImageStyle.php b/vendor/qcloud/cos-sdk-v5/sample/putImageStyle.php index 90b4b01..18b5242 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putImageStyle.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putImageStyle.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -20,7 +20,7 @@ try { $picOperationsTemplate->setIsPicInfo(1); $picOperationsTemplate->addRule($imageStyleTemplate, "resultobject"); $result = $cosClient->putObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Body' => fopen($local_path, 'rb'), 'PicOperations' => $picOperationsTemplate->queryString(), diff --git a/vendor/qcloud/cos-sdk-v5/sample/putObject.php b/vendor/qcloud/cos-sdk-v5/sample/putObject.php index b97c5d0..e42f1fd 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putObject.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putObject.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -13,9 +13,16 @@ $cosClient = new Qcloud\Cos\Client( 'secretId' => $secretId , 'secretKey' => $secretKey))); $local_path = "/data/exampleobject"; +//添加tagging +/*$tagSet = http_build_query( array( + urlencode("key1") => urlencode("value1"), + urlencode("key2") => urlencode("value2")), + '', + '&' +); */ try { $result = $cosClient->putObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Body' => fopen($local_path, 'rb'), /* @@ -29,7 +36,8 @@ try { 'Metadata' => array( 'string' => 'string', ), - 'StorageClass' => 'string' + 'StorageClass' => 'string', + 'Tagging' => $tagSet //最多10个标签 */ )); // 请求成功 diff --git a/vendor/qcloud/cos-sdk-v5/sample/putObjectTagging.php b/vendor/qcloud/cos-sdk-v5/sample/putObjectTagging.php new file mode 100644 index 0000000..668a7c6 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/putObjectTagging.php @@ -0,0 +1,33 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); +try { + $result = $cosClient->putObjectTagging(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', + 'TagSet' => array( + array('Key'=>'key1', + 'Value'=>'value1', + ), + array('Key'=>'key2', + 'Value'=>'value2', + ), + ), + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo "$e\n"; +} \ No newline at end of file diff --git a/vendor/qcloud/cos-sdk-v5/sample/putQrcode.php b/vendor/qcloud/cos-sdk-v5/sample/putQrcode.php index 11147b8..8df50c8 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/putQrcode.php +++ b/vendor/qcloud/cos-sdk-v5/sample/putQrcode.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -20,7 +20,7 @@ try { $picOperationsTemplate->setIsPicInfo(1); $picOperationsTemplate->addRule($imageQrcodeTemplate, "resultobject"); $result = $cosClient->putObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Body' => fopen($local_path, 'rb'), 'PicOperations' => $picOperationsTemplate->queryString(), diff --git a/vendor/qcloud/cos-sdk-v5/sample/qrcode.php b/vendor/qcloud/cos-sdk-v5/sample/qrcode.php index 5843119..e71f40c 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/qrcode.php +++ b/vendor/qcloud/cos-sdk-v5/sample/qrcode.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->Qrcode(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Cover' => 0, )); diff --git a/vendor/qcloud/cos-sdk-v5/sample/qrcodeGenerate.php b/vendor/qcloud/cos-sdk-v5/sample/qrcodeGenerate.php index 94c8b0c..f97b936 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/qrcodeGenerate.php +++ b/vendor/qcloud/cos-sdk-v5/sample/qrcodeGenerate.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->QrcodeGenerate(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'QrcodeContent' => '', 'QrcodeMode' => 0, 'QrcodeWidth' => '200', diff --git a/vendor/qcloud/cos-sdk-v5/sample/restoreObject.php b/vendor/qcloud/cos-sdk-v5/sample/restoreObject.php index ce81954..78c89bb 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/restoreObject.php +++ b/vendor/qcloud/cos-sdk-v5/sample/restoreObject.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->restoreObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Days' => integer, 'CASJobParameters' => array( diff --git a/vendor/qcloud/cos-sdk-v5/sample/selectObjectContent.php b/vendor/qcloud/cos-sdk-v5/sample/selectObjectContent.php index e5e7994..c9b8de2 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/selectObjectContent.php +++ b/vendor/qcloud/cos-sdk-v5/sample/selectObjectContent.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client(array( 'region' => $region, 'schema' => 'https', //协议头部,默认为http @@ -14,9 +14,9 @@ $cosClient = new Qcloud\Cos\Client(array( ) )); try { - $result = $cosClient->selectObjectContent(array( - 'Bucket' => $bucket, //格式:BucketName-APPID - 'Key' => $key, + $result = $cosClient->selectObjectContent(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', 'Expression' => 'Select * from COSObject s', 'ExpressionType' => 'SQL', 'InputSerialization' => array( @@ -54,9 +54,9 @@ try { } try { - $result = $cosClient->selectObjectContent(array( - 'Bucket' => $bucket, //格式:BucketName-APPID - 'Key' => $key, + $result = $cosClient->selectObjectContent(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', 'Expression' => 'Select * from COSObject s', 'ExpressionType' => 'SQL', 'InputSerialization' => array( diff --git a/vendor/qcloud/cos-sdk-v5/sample/textWatermark.php b/vendor/qcloud/cos-sdk-v5/sample/textWatermark.php index 83622ea..c4664fe 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/textWatermark.php +++ b/vendor/qcloud/cos-sdk-v5/sample/textWatermark.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -18,7 +18,7 @@ try { $textWatermarkTemplate->setGravity('center'); $textWatermarkTemplate->setFontsize(30); $result = $cosClient->getObject(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'ImageHandleParam' => $textWatermarkTemplate->queryString(), 'SaveAs' => '/data/exampleobject' diff --git a/vendor/qcloud/cos-sdk-v5/sample/trafficLimit.php b/vendor/qcloud/cos-sdk-v5/sample/trafficLimit.php new file mode 100644 index 0000000..5732369 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/sample/trafficLimit.php @@ -0,0 +1,40 @@ + $region, + 'schema' => 'https', //协议头部,默认为http + 'credentials'=> array( + 'secretId' => $secretId , + 'secretKey' => $secretKey))); + +$local_path = '/data/exampleobject'; +try { + //上传对象,单链接限速 + $result = $cosClient->putObject(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', + 'Body' => fopen($local_path, 'rb'), + 'TrafficLimit' => 8 * 1024 * 1024 // 限制为1MB/s + )); + // 请求成功 + print_r($result); + + //下载对象,单链接限速 + $result = $cosClient->getObject(array( + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket + 'Key' => 'exampleobject', + 'SaveAs' => $local_path, + 'TrafficLimit' => 8 * 1024 * 1024 // 限制为1MB/s + )); + // 请求成功 + print_r($result); +} catch (\Exception $e) { + // 请求失败 + echo($e); +} \ No newline at end of file diff --git a/vendor/qcloud/cos-sdk-v5/sample/upload.php b/vendor/qcloud/cos-sdk-v5/sample/upload.php index 7ef439f..8f21b32 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/upload.php +++ b/vendor/qcloud/cos-sdk-v5/sample/upload.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,13 +14,13 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); $local_path = "/data/exampleobject"; -$printbar = function($totolSize, $uploadedSize) { - printf("uploaded [%d/%d]\n", $uploadedSize, $totolSize); +$printbar = function($totalSize, $uploadedSize) { + printf("uploaded [%d/%d]\n", $uploadedSize, $totalSize); }; try { $result = $cosClient->upload( - $bucket = 'examplebucket-125000000', //格式:BucketName-APPID + $bucket = 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket $key = 'exampleobject', $body = fopen($local_path, 'rb') /* diff --git a/vendor/qcloud/cos-sdk-v5/sample/uploadFolder.php b/vendor/qcloud/cos-sdk-v5/sample/uploadFolder.php index 6b93925..709d7e9 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/uploadFolder.php +++ b/vendor/qcloud/cos-sdk-v5/sample/uploadFolder.php @@ -2,12 +2,9 @@ require dirname( __FILE__ ) . '/../vendor/autoload.php'; -$secretId = 'COS_SECRETID'; -//'云 API 密钥 SecretId'; -$secretKey = 'COS_SECRETKEY'; -//'云 API 密钥 SecretKey'; -$region = 'ap-beijing'; -//设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -30,7 +27,7 @@ function uploadfiles( $path, $cosClient ) { // 按照需求自定义拼接上传路径 try { $cosClient->upload( - $bucket = 'examplebucket-125000000', //格式:BucketName-APPID + $bucket = 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket $key = $cos_file_path, $body = fopen( $cos_file_path, 'rb' ) ); diff --git a/vendor/qcloud/cos-sdk-v5/sample/uploadPart.php b/vendor/qcloud/cos-sdk-v5/sample/uploadPart.php index d255807..27fe569 100644 --- a/vendor/qcloud/cos-sdk-v5/sample/uploadPart.php +++ b/vendor/qcloud/cos-sdk-v5/sample/uploadPart.php @@ -2,9 +2,9 @@ require dirname(__FILE__) . '/../vendor/autoload.php'; -$secretId = "COS_SECRETID"; //"云 API 密钥 SecretId"; -$secretKey = "COS_SECRETKEY"; //"云 API 密钥 SecretKey"; -$region = "ap-beijing"; //设置一个默认的存储桶地域 +$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi +$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket $cosClient = new Qcloud\Cos\Client( array( 'region' => $region, @@ -14,7 +14,7 @@ $cosClient = new Qcloud\Cos\Client( 'secretKey' => $secretKey))); try { $result = $cosClient->uploadPart(array( - 'Bucket' => 'examplebucket-125000000', //格式:BucketName-APPID + 'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket 'Key' => 'exampleobject', 'Body' => 'string', 'UploadId' => 'NWNhNDY0YzFfMmZiNTM1MGFfNTM2YV8xYjliMTg', diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php b/vendor/qcloud/cos-sdk-v5/src/Client.php similarity index 52% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php rename to vendor/qcloud/cos-sdk-v5/src/Client.php index cacbcda..830dfe5 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Client.php +++ b/vendor/qcloud/cos-sdk-v5/src/Client.php @@ -2,7 +2,6 @@ namespace Qcloud\Cos; -use Qcloud\Cos\Signature; use GuzzleHttp\Client as HttpClient; use GuzzleHttp\HandlerStack; use Psr\Http\Message\RequestInterface; @@ -10,87 +9,112 @@ use Psr\Http\Message\ResponseInterface; use GuzzleHttp\Command\Guzzle\Description; use GuzzleHttp\Command\Guzzle\GuzzleClient; use GuzzleHttp\Command\Guzzle\Deserializer; -use GuzzleHttp\Exception\RequestException; use GuzzleHttp\Command\CommandInterface; -use GuzzleHttp\Command\Exception\CommandException; use GuzzleHttp\Exception\ConnectException; use GuzzleHttp\Middleware; use GuzzleHttp\Psr7; /** - * @method object AbortMultipartUpload (array $arg) - * @method object CreateBucket (array $arg) - * @method object CompleteMultipartUpload (array $arg) - * @method object CreateMultipartUpload (array $arg) - * @method object CopyObject (array $arg) - * @method object DeleteBucket (array $arg) - * @method object DeleteBucketCors (array $arg) - * @method object DeleteBucketTagging (array $arg) - * @method object DeleteBucketInventory (array $arg) - * @method object DeleteObject (array $arg) - * @method object DeleteObjects (array $arg) - * @method object DeleteBucketWebsite (array $arg) - * @method object DeleteBucketLifecycle (array $arg) - * @method object DeleteBucketReplication (array $arg) - * @method object GetObject (array $arg) - * @method object GetObjectAcl (array $arg) - * @method object GetBucketAcl (array $arg) - * @method object GetBucketCors (array $arg) - * @method object GetBucketDomain (array $arg) - * @method object GetBucketAccelerate (array $arg) - * @method object GetBucketWebsite (array $arg) - * @method object GetBucketLifecycle (array $arg) - * @method object GetBucketVersioning (array $arg) - * @method object GetBucketReplication (array $arg) - * @method object GetBucketLocation (array $arg) - * @method object GetBucketNotification (array $arg) - * @method object GetBucketLogging (array $arg) - * @method object GetBucketInventory (array $arg) - * @method object GetBucketTagging (array $arg) - * @method object UploadPart (array $arg) - * @method object PutObject (array $arg) - * @method object PutObjectAcl (array $arg) - * @method object PutBucketAcl (array $arg) - * @method object PutBucketCors (array $arg) - * @method object PutBucketDomain (array $arg) - * @method object PutBucketLifecycle (array $arg) - * @method object PutBucketVersioning (array $arg) - * @method object PutBucketAccelerate (array $arg) - * @method object PutBucketWebsite (array $arg) - * @method object PutBucketReplication (array $arg) - * @method object PutBucketNotification (array $arg) - * @method object PutBucketTagging (array $arg) - * @method object PutBucketLogging (array $arg) - * @method object PutBucketInventory (array $arg) - * @method object RestoreObject (array $arg) - * @method object ListParts (array $arg) - * @method object ListObjects (array $arg) - * @method object ListBuckets - * @method object ListObjectVersions (array $arg) - * @method object ListMultipartUploads (array $arg) - * @method object ListBucketInventoryConfigurations (array $arg) - * @method object HeadObject (array $arg) - * @method object HeadBucket (array $arg) - * @method object UploadPartCopy (array $arg) - * @method object SelectObjectContent (array $arg) - * @method object PutBucketIntelligentTiering (array $arg) - * @method object GetBucketIntelligentTiering (array $arg) - * @method object ImageInfo (array $arg) - * @method object ImageExif (array $arg) - * @method object ImageAve (array $arg) - * @method object ImageProcess (array $arg) - * @method object Qrcode (array $arg) - * @method object QrcodeGenerate (array $arg) - * @method object DetectLabel (array $arg) - * @method object PutBucketImageStyle (array $arg) - * @method object GetBucketImageStyle (array $arg) - * @method object DeleteBucketImageStyle (array $arg) - * @method object PutBucketGuetzli (array $arg) - * @method object GetBucketGuetzli (array $arg) - * @method object DeleteBucketGuetzli (array $arg) + * @method object AbortMultipartUpload(array $args) 舍弃一个分块上传且删除已上传的分片块 + * @method object CreateBucket(array $args) 创建存储桶(Bucket) + * @method object CompleteMultipartUpload(array $args) 完成整个分块上传 + * @method object CreateMultipartUpload(array $args) 初始化分块上传 + * @method object CopyObject(array $args) 复制对象 + * @method object DeleteBucket(array $args) 删除存储桶 (Bucket) + * @method object DeleteBucketCors(array $args) 删除跨域访问配置信息 + * @method object DeleteBucketTagging(array $args) 删除存储桶标签信息 + * @method object DeleteBucketInventory(array $args) 删除存储桶标清单任务 + * @method object DeleteObject(array $args) 删除 COS 上单个对象 + * @method object DeleteObjects(array $args) 批量删除 COS 对象 + * @method object DeleteBucketWebsite(array $args) 删除存储桶(Bucket)的website + * @method object DeleteBucketLifecycle(array $args) 删除存储桶(Bucket)的生命周期配置 + * @method object DeleteBucketReplication(array $args) 删除跨区域复制配置 + * @method object PutObjectTagging(array $args) 配置对象标签 + * @method object GetObjectTagging(array $args) 获取对象标签信息 + * @method object DeleteObjectTagging(array $args) 删除对象标签 + * @method object GetObject(array $args) 下载对象 + * @method object GetObjectAcl(array $args) 获取 COS 对象的访问权限信息(Access Control List, ACL) + * @method object GetBucketAcl(array $args) 获取存储桶(Bucket)的访问权限信息(Access Control List, ACL) + * @method object GetBucketCors(array $args) 查询存储桶(Bucket)跨域访问配置信息 + * @method object GetBucketDomain(array $args) 查询存储桶(Bucket)Domain配置信息 + * @method object GetBucketAccelerate(array $args) 查询存储桶(Bucket)Accelerate配置信息 + * @method object GetBucketWebsite(array $args) 查询存储桶(Bucket)Website配置信息 + * @method object GetBucketLifecycle(array $args) 查询存储桶(Bucket)的生命周期配置 + * @method object GetBucketVersioning(array $args) 获取存储桶(Bucket)版本控制信息 + * @method object GetBucketReplication(array $args) 获取存储桶(Bucket)跨区域复制配置信息 + * @method object GetBucketLocation(array $args) 获取存储桶(Bucket)所在的地域信息 + * @method object GetBucketNotification(array $args) 获取存储桶(Bucket)Notification信息 + * @method object GetBucketLogging(array $args) 获取存储桶(Bucket)日志信息 + * @method object GetBucketInventory(array $args) 获取存储桶(Bucket)清单信息 + * @method object GetBucketTagging(array $args) 获取存储桶(Bucket)标签信息 + * @method object UploadPart(array $args) 分块上传 + * @method object PutObject(array $args) 上传对象 + * @method object AppendObject(array $args) 追加对象 + * @method object PutObjectAcl(array $args) 设置 COS 对象的访问权限信息(Access Control List, ACL) + * @method object PutBucketAcl(array $args) 设置存储桶(Bucket)的访问权限(Access Control List, ACL) + * @method object PutBucketCors(array $args) 设置存储桶(Bucket)的跨域配置信息 + * @method object PutBucketDomain(array $args) 设置存储桶(Bucket)的Domain信息 + * @method object PutBucketLifecycle(array $args) 设置存储桶(Bucket)生命周期配置 + * @method object PutBucketVersioning(array $args) 存储桶(Bucket)版本控制 + * @method object PutBucketAccelerate(array $args) 配置存储桶(Bucket)Accelerate + * @method object PutBucketWebsite(array $args) 配置存储桶(Bucket)website + * @method object PutBucketReplication(array $args) 配置存储桶(Bucket)跨区域复制 + * @method object PutBucketNotification(array $args) 设置存储桶(Bucket)的回调设置 + * @method object PutBucketTagging(array $args) 配置存储桶(Bucket)标签 + * @method object PutBucketLogging(array $args) 开启存储桶(Bucket)日志服务 + * @method object PutBucketInventory(array $args) 配置存储桶(Bucket)清单 + * @method object RestoreObject(array $args) 回热归档对象 + * @method object ListParts(array $args) 查询存储桶(Bucket)中正在进行中的分块上传对象 + * @method object ListObjects(array $args) 查询存储桶(Bucket)下的部分或者全部对象 + * @method object ListBuckets 获取所属账户的所有存储空间列表 + * @method object ListObjectVersions(array $args) 获取多版本对象 + * @method object ListMultipartUploads(array $args) 获取已上传分块列表 + * @method object ListBucketInventoryConfigurations(array $args) 获取清单列表 + * @method object HeadObject(array $args) 获取对象的meta信息 + * @method object HeadBucket(array $args) 存储桶(Bucket)是否存在 + * @method object UploadPartCopy(array $args) 分块copy + * @method object SelectObjectContent(array $args) 检索对象内容 + * @method object PutBucketIntelligentTiering(array $args) 存储桶(Bucket)开启智能分层 + * @method object GetBucketIntelligentTiering(array $args) 查询存储桶(Bucket)智能分层 + * @method object ImageInfo(array $args) 万象-获取图片基本信息 + * @method object ImageExif(array $args) 万象-获取图片EXIF信息 + * @method object ImageAve(array $args) 万象-获取图片主色调信息 + * @method object ImageProcess(array $args) 万象-云上数据处理 + * @method object Qrcode(array $args) 万象-二维码下载时识别 + * @method object QrcodeGenerate(array $args) 万象-二维码生成 + * @method object DetectLabel(array $args) 万象-图片标签 + * @method object PutBucketImageStyle(array $args) 万象-增加样式 + * @method object GetBucketImageStyle(array $args) 万象-查询样式 + * @method object DeleteBucketImageStyle(array $args) 万象-删除样式 + * @method object PutBucketGuetzli(array $args) 万象-开通Guetzli压缩 + * @method object GetBucketGuetzli(array $args) 万象-查询Guetzli状态 + * @method object DeleteBucketGuetzli(array $args) 万象-关闭Guetzli压缩 + * @method object GetObjectSensitiveContentRecognition(array $args) 图片审核 + * @method object DetectText(array $args) 文本审核 + * @method object GetSnapshot(array $args) 媒体截图 + * @method object PutBucketReferer(array $args) 添加防盗链 + * @method object GetBucketReferer(array $args) 获取防盗链规则 + * @method object GetMediaInfo(array $args) 获取媒体信息 + * @method object CreateMediaTranscodeJobs(array $args) 媒体转码 + * @method object CreateMediaSnapshotJobs(array $args) 媒体转码 + * @method object CreateMediaConcatJobs(array $args) 媒体截图 + * @method object DetectAudio(array $args) 媒体拼接 + * @method object GetDetectAudioResult(array $args) 音频审核 + * @method object GetDetectTextResult(array $args) 主动获取音频审核结果 + * @method object DetectVideo(array $args) 主动获取文本文件审核结果 + * @method object GetDetectVideoResult(array $args) 视频审核 + * @method object DetectDocument(array $args) 主动获取视频审核结果 + * @method object GetDetectDocumentResult(array $args) 文档审核 + * @method object CreateDocProcessJobs(array $args) 主动获取文档审核结果 + * @method object DescribeDocProcessQueues(array $args) 提交文档转码任务 + * @method object DescribeDocProcessJob(array $args) 查询文档转码队列 + * @method object GetDescribeDocProcessJobs(array $args) 查询文档转码任务 + * @method object DetectImage(array $args) 图片审核 + * @method object DetectImages(array $args) 图片审核-批量 + * @see \Qcloud\Cos\Service::getService() */ class Client extends GuzzleClient { - const VERSION = '2.2.0'; + const VERSION = '2.4.4'; public $httpClient; @@ -102,14 +126,14 @@ class Client extends GuzzleClient { private $signature; private $rawCosConfig; - public function __construct($cosConfig) { + public function __construct(array $cosConfig) { $this->rawCosConfig = $cosConfig; $this->cosConfig['schema'] = isset($cosConfig['schema']) ? $cosConfig['schema'] : 'http'; - $this->cosConfig['region'] = region_map($cosConfig['region']); + $this->cosConfig['region'] = isset($cosConfig['region']) ? region_map($cosConfig['region']) : null; $this->cosConfig['appId'] = isset($cosConfig['credentials']['appId']) ? $cosConfig['credentials']['appId'] : null; - $this->cosConfig['secretId'] = isset($cosConfig['credentials']['secretId']) ? $cosConfig['credentials']['secretId'] : ""; - $this->cosConfig['secretKey'] = isset($cosConfig['credentials']['secretKey']) ? $cosConfig['credentials']['secretKey'] : ""; - $this->cosConfig['anonymous'] = isset($cosConfig['credentials']['anonymous']) ? $cosConfig['anonymous']['anonymous'] : false; + $this->cosConfig['secretId'] = isset($cosConfig['credentials']['secretId']) ? $cosConfig['credentials']['secretId'] : ''; + $this->cosConfig['secretKey'] = isset($cosConfig['credentials']['secretKey']) ? $cosConfig['credentials']['secretKey'] : ''; + $this->cosConfig['anonymous'] = isset($cosConfig['credentials']['anonymous']) ? $cosConfig['credentials']['anonymous'] : false; $this->cosConfig['token'] = isset($cosConfig['credentials']['token']) ? $cosConfig['credentials']['token'] : null; $this->cosConfig['timeout'] = isset($cosConfig['timeout']) ? $cosConfig['timeout'] : 3600; $this->cosConfig['connect_timeout'] = isset($cosConfig['connect_timeout']) ? $cosConfig['connect_timeout'] : 3600; @@ -121,8 +145,13 @@ class Client extends GuzzleClient { $this->cosConfig['retry'] = isset($cosConfig['retry']) ? $cosConfig['retry'] : 1; $this->cosConfig['userAgent'] = isset($cosConfig['userAgent']) ? $cosConfig['userAgent'] : 'cos-php-sdk-v5.'. Client::VERSION; $this->cosConfig['pathStyle'] = isset($cosConfig['pathStyle']) ? $cosConfig['pathStyle'] : false; + $this->cosConfig['signHost'] = isset($cosConfig['signHost']) ? $cosConfig['signHost'] : true; $this->cosConfig['allow_redirects'] = isset($cosConfig['allow_redirects']) ? $cosConfig['allow_redirects'] : false; - + $this->cosConfig['allow_accelerate'] = isset($cosConfig['allow_accelerate']) ? $cosConfig['allow_accelerate'] : false; + + // check config + $this->inputCheck(); + $service = Service::getService(); $handler = HandlerStack::create(); $handler->push(Middleware::retry($this->retryDecide(), $this->retryDelay())); @@ -130,7 +159,7 @@ class Client extends GuzzleClient { return $request->withHeader('User-Agent', $this->cosConfig['userAgent']); })); if ($this->cosConfig['anonymous'] != true) { - $handler->push($this::handleSignature($this->cosConfig['secretId'], $this->cosConfig['secretKey'])); + $handler->push($this::handleSignature($this->cosConfig['secretId'], $this->cosConfig['secretKey'], $this->cosConfig['signHost'])); } if ($this->cosConfig['token'] != null) { $handler->push(Middleware::mapRequest(function (RequestInterface $request) { @@ -138,9 +167,10 @@ class Client extends GuzzleClient { })); } $handler->push($this::handleErrors()); - $this->signature = new Signature($this->cosConfig['secretId'], $this->cosConfig['secretKey'], $this->cosConfig['token']); + $this->signature = new Signature(trim($this->cosConfig['secretId']), trim($this->cosConfig['secretKey']), $this->cosConfig, trim($this->cosConfig['token'] )); + $area = $this->cosConfig['allow_accelerate'] ? 'accelerate' : $this->cosConfig['region']; $this->httpClient = new HttpClient([ - 'base_uri' => $this->cosConfig['schema'].'://cos.' . $this->cosConfig['region'] . '.myqcloud.com/', + 'base_uri' => $this->cosConfig['schema'].'://cos.' . $area . '.myqcloud.com/', 'timeout' => $this->cosConfig['timeout'], 'handler' => $handler, 'proxy' => $this->cosConfig['proxy'], @@ -152,6 +182,20 @@ class Client extends GuzzleClient { 'commandToRequestTransformer'], [$this, 'responseToResultTransformer'], null); } + + public function inputCheck() { + //检查Region + if (empty($this->cosConfig['region']) && + empty($this->cosConfig['domain']) && + empty($this->cosConfig['endpoint']) && + empty($this->cosConfig['ip'])) { + $e = new Exception\CosException('Region is empty'); + $e->setExceptionCode('Invalid Argument'); + throw $e; + } + } + + public function retryDecide() { return function ( $retries, @@ -165,7 +209,7 @@ class Client extends GuzzleClient { if ($response != null && $response->getStatusCode() >= 400 ) { return true; } - if ($exception instanceof \Qcloud\Cos\Exception\ServiceResponseException) { + if ($exception instanceof Exception\ServiceResponseException) { if ($exception->getStatusCode() >= 400) { return true; } @@ -181,9 +225,10 @@ class Client extends GuzzleClient { public function retryDelay() { return function ($numberOfRetries) { - return 1000 * $numberOfRetries; + return 1000 * $numberOfRetries; }; } + public function commandToRequestTransformer(CommandInterface $command) { $this->action = $command->GetName(); @@ -198,6 +243,7 @@ class Client extends GuzzleClient { $request = $transformer->md5Transformer($command, $request); $request = $transformer->specialParamTransformer($command, $request); $request = $transformer->ciParamTransformer($command, $request); + $request = $transformer->cosDomain2CiTransformer($command, $request); return $request; } @@ -244,10 +290,6 @@ class Client extends GuzzleClient { return $this->signature->createPresignedUrl($request, $expires); } - public function getPresignetUrl($method, $args, $expires = "+30 minutes") { - return $this->getPresignedUrl($method, $args, $expires); - } - public function getPresignedUrl($method, $args, $expires = "+30 minutes") { $command = $this->getCommand($method, $args); $request = $this->commandToRequestTransformer($command); @@ -261,8 +303,14 @@ class Client extends GuzzleClient { return $this->createPresignedUrl($request, $expires)->__toString(); } + public function getObjectUrlWithoutSign($bucket, $key, array $args = array()) { + $command = $this->getCommand('GetObject', $args + array('Bucket' => $bucket, 'Key' => $key)); + $request = $this->commandToRequestTransformer($command); + return $request->getUri()-> __toString(); + } + public function upload($bucket, $key, $body, $options = array()) { - $body = Psr7\stream_for($body); + $body = Psr7\Utils::streamFor($body); $options['Retry'] = $this->cosConfig['retry']; $options['PartSize'] = isset($options['PartSize']) ? $options['PartSize'] : MultipartUpload::DEFAULT_PART_SIZE; if ($body->getSize() < $options['PartSize']) { @@ -286,25 +334,23 @@ class Client extends GuzzleClient { public function download($bucket, $key, $saveAs, $options = array()) { $options['PartSize'] = isset($options['PartSize']) ? $options['PartSize'] : RangeDownload::DEFAULT_PART_SIZE; $contentLength = 0; - $versionId = isset($options['VersionId']) ? $options['VersionId'] : ""; - try { - $rt = $this->headObject(array( - 'Bucket'=>$bucket, - 'Key'=>$key, - 'VersionId'=>$versionId, - ) - ); - $contentLength = $rt['ContentLength']; - $resumableJson = [ - 'LastModified' => $rt['LastModified'], - 'ContentLength' => $rt['ContentLength'], - 'ETag' => $rt['ETag'], - 'Crc64ecma' => $rt['Crc64ecma'] - ]; - $options['ResumableJson'] = $resumableJson; - } catch (\Exception $e) { - throw ($e); - } + $versionId = isset($options['VersionId']) ? $options['VersionId'] : ''; + + $rt = $this->headObject(array( + 'Bucket'=>$bucket, + 'Key'=>$key, + 'VersionId'=>$versionId, + ) + ); + $contentLength = $rt['ContentLength']; + $resumableJson = [ + 'LastModified' => $rt['LastModified'], + 'ContentLength' => $rt['ContentLength'], + 'ETag' => $rt['ETag'], + 'Crc64ecma' => $rt['Crc64ecma'] + ]; + $options['ResumableJson'] = $resumableJson; + if ($contentLength < $options['PartSize']) { $rt = $this->getObject(array( 'Bucket' => $bucket, @@ -323,7 +369,7 @@ class Client extends GuzzleClient { } public function resumeUpload($bucket, $key, $body, $uploadId, $options = array()) { - $body = Psr7\stream_for($body); + $body = Psr7\Utils::streamFor($body); $options['PartSize'] = isset($options['PartSize']) ? $options['PartSize'] : MultipartUpload::DEFAULT_PART_SIZE; $multipartUpload = new MultipartUpload($this, $body, array( 'Bucket' => $bucket, @@ -343,26 +389,22 @@ class Client extends GuzzleClient { $sourceConfig = $this->rawCosConfig; $sourceConfig['region'] = $copySource['Region']; $cosSourceClient = new Client($sourceConfig); - $copySource['VersionId'] = isset($copySource['VersionId']) ? $copySource['VersionId'] : ""; - try { - $rt = $cosSourceClient->headObject( - array('Bucket'=>$copySource['Bucket'], - 'Key'=>$copySource['Key'], - 'VersionId'=>$copySource['VersionId'], - ) - ); - } catch (\Exception $e) { - throw $e; - } + $copySource['VersionId'] = isset($copySource['VersionId']) ? $copySource['VersionId'] : ''; - $contentLength =$rt['ContentLength']; + $rt = $cosSourceClient->headObject( + array('Bucket'=>$copySource['Bucket'], + 'Key'=>$copySource['Key'], + 'VersionId'=>$copySource['VersionId'], + ) + ); + + $contentLength = $rt['ContentLength']; // sample copy if ($contentLength < $options['PartSize']) { $rt = $this->copyObject(array( 'Bucket' => $bucket, 'Key' => $key, - 'CopySource' => $copySource['Bucket']. '.cos.'. $copySource['Region']. - ".myqcloud.com/". $copySource['Key']. "?versionId=". $copySource['VersionId'], + 'CopySource' => "{$copySource['Bucket']}.cos.{$copySource['Region']}.myqcloud.com/{$copySource['Key']}?versionId={$copySource['VersionId']}", ) + $options ); return $rt; @@ -382,9 +424,9 @@ class Client extends GuzzleClient { try { $this->HeadBucket(array( 'Bucket' => $bucket)); - return True; + return true; } catch (\Exception $e){ - return False; + return false; } } @@ -394,9 +436,9 @@ class Client extends GuzzleClient { $this->HeadObject(array( 'Bucket' => $bucket, 'Key' => $key)); - return True; + return true; } catch (\Exception $e){ - return False; + return false; } } @@ -415,9 +457,9 @@ class Client extends GuzzleClient { } - public static function handleSignature($secretId, $secretKey) { - return function (callable $handler) use ($secretId, $secretKey) { - return new SignatureMiddleware($handler, $secretId, $secretKey); + public static function handleSignature($secretId, $secretKey, $signHost) { + return function (callable $handler) use ($secretId, $secretKey, $signHost) { + return new SignatureMiddleware($handler, $secretId, $secretKey, $signHost); }; } diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/CommandToRequestTransformer.php b/vendor/qcloud/cos-sdk-v5/src/CommandToRequestTransformer.php similarity index 74% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/CommandToRequestTransformer.php rename to vendor/qcloud/cos-sdk-v5/src/CommandToRequestTransformer.php index debe4a6..c16d9ee 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/CommandToRequestTransformer.php +++ b/vendor/qcloud/cos-sdk-v5/src/CommandToRequestTransformer.php @@ -6,6 +6,7 @@ use Psr\Http\Message\RequestInterface; use GuzzleHttp\Command\CommandInterface; use GuzzleHttp\Psr7\Uri; use InvalidArgumentException; +use Psr\Http\Message\UriInterface; class CommandToRequestTransformer { private $config; @@ -72,7 +73,10 @@ class CommandToRequestTransformer { $domain_type = '.pic.'; } - $origin_host = $bucketname . $domain_type . $this->config['region'] . '.' . $this->config['endpoint']; + $origin_host = $this->config['allow_accelerate'] ? + $bucketname . $domain_type . 'accelerate' . '.' . $this->config['endpoint'] : + $bucketname . $domain_type . $this->config['region'] . '.' . $this->config['endpoint']; + // domain if ( $this->config['domain'] != null ) { $origin_host = $this->config['domain']; @@ -198,6 +202,10 @@ class CommandToRequestTransformer { public function ciParamTransformer( CommandInterface $command, $request ) { $action = $command->getName(); if ( $action == 'GetObject' ) { + if(str_contains($uri = $request->getUri(), '%21') ) { + $uri = new Uri( str_replace('%21', '!', $uri) ); + $request = $request->withUri( $uri ); + } if(isset($command['ImageHandleParam']) && $command['ImageHandleParam']){ $uri = $request->getUri(); $query = $uri->getQuery(); @@ -213,6 +221,52 @@ class CommandToRequestTransformer { return $request; } + public function cosDomain2CiTransformer(CommandInterface $command, $request) { + $action = $command->getName(); + $ciActions = array( + 'DetectText' => 1, + 'CreateMediaTranscodeJobs' => 1, + 'CreateMediaSnapshotJobs' => 1, + 'CreateMediaConcatJobs' => 1, + 'DetectAudio' => 1, + 'GetDetectAudioResult' => 1, + 'GetDetectTextResult' => 1, + 'DetectVideo' => 1, + 'GetDetectVideoResult' => 1, + 'DetectDocument' => 1, + 'GetDetectDocumentResult' => 1, + 'CreateDocProcessJobs' => 1, + 'DescribeDocProcessQueues' => 1, + 'DescribeDocProcessJob' => 1, + 'GetDescribeDocProcessJobs' => 1, + 'DetectImages' => 1, + ); + if (key_exists($action, $ciActions)) { + $bucketname = $command['Bucket']; + $appId = $this->config['appId']; + if ( $appId != null && endWith( $bucketname, '-'.$appId ) == False ) { + $bucketname = $bucketname.'-'.$appId; + } + $command['Bucket'] = $bucketname; + $domain_type = '.ci.'; + $origin_host = $bucketname . $domain_type . $this->config['region'] . '.' . $this->config['endpoint']; + $host = $origin_host; + if ( $this->config['ip'] != null ) { + $host = $this->config['ip']; + if ( $this->config['port'] != null ) { + $host = $this->config['ip'] . ':' . $this->config['port']; + } + } + $path = $this->config['schema'].'://'. $host . $request->getUri()->getPath(); + $uri = new Uri( $path ); + $query = $request->getUri()->getQuery(); + $uri = $uri->withQuery( $query ); + $request = $request->withUri( $uri ); + $request = $request->withHeader( 'Host', $origin_host ); + } + return $request; + } + public function __destruct() { } diff --git a/vendor/qcloud/cos-sdk-v5/src/Common.php b/vendor/qcloud/cos-sdk-v5/src/Common.php new file mode 100644 index 0000000..1cc3246 --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/src/Common.php @@ -0,0 +1,69 @@ + 'ap-shanghai', + 'cn-south' => 'ap-guangzhou', + 'cn-north' => 'ap-beijing-1', + 'cn-south-2' => 'ap-guangzhou-2', + 'cn-southwest' => 'ap-chengdu', + 'sg' => 'ap-singapore', + 'tj' => 'ap-beijing-1', + 'bj' => 'ap-beijing', + 'sh' => 'ap-shanghai', + 'gz' => 'ap-guangzhou', + 'cd' => 'ap-chengdu', + 'sgp' => 'ap-singapore' + ); + if (isset($regionmap[$region])) { + return $regionmap[$region]; + } + return $region; +} + +function encodeKey($key) +{ + return str_replace('%2F', '/', rawurlencode($key)); +} + +function endWith($haystack, $needle) +{ + $length = strlen($needle); + if ($length == 0) { + return true; + } + return (substr($haystack, -$length) === $needle); +} + +function startWith($haystack, $needle) +{ + $length = strlen($needle); + if ($length == 0) { + return true; + } + return (substr($haystack, 0, $length) === $needle); +} + +function headersMap($command, $request) +{ + $headermap = array( + 'TransferEncoding' => 'Transfer-Encoding', + 'ChannelId' => 'x-cos-channel-id' + ); + foreach ($headermap as $key => $value) { + if (isset($command[$key])) { + $request = $request->withHeader($value, $command[$key]); + } + } + return $request; +} + +if (!function_exists('str_contains')) { + function str_contains($haystack, $needle) + { + return strpos($haystack, $needle) !== false; + } +} diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Copy.php b/vendor/qcloud/cos-sdk-v5/src/Copy.php similarity index 99% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Copy.php rename to vendor/qcloud/cos-sdk-v5/src/Copy.php index 661df59..18b3d03 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Copy.php +++ b/vendor/qcloud/cos-sdk-v5/src/Copy.php @@ -2,7 +2,6 @@ namespace Qcloud\Cos; -use GuzzleHttp\Psr7\Request; use GuzzleHttp\Pool; class Copy { diff --git a/vendor/qcloud/cos-sdk-v5/src/Descriptions.php b/vendor/qcloud/cos-sdk-v5/src/Descriptions.php new file mode 100644 index 0000000..6def7ed --- /dev/null +++ b/vendor/qcloud/cos-sdk-v5/src/Descriptions.php @@ -0,0 +1,3025 @@ + 'POST', + 'uri' => '/{Bucket}jobs', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'CreateMediaTranscodeJobsOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( 'required' => true, 'type' => 'string', 'location' => 'uri', ), + 'Tag' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'QueueId' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'CallBack' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'Input' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Object' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Operation' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'TemplateId' => array( 'type' => 'string', 'location' => 'xml', ), + 'WatermarkTemplateId' => array( 'type' => 'string', 'location' => 'xml', ), + 'Transcode' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Container' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Format' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Video' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Codec' => array( 'type' => 'string', 'location' => 'xml', ), + 'Width' => array( 'type' => 'string', 'location' => 'xml', ), + 'Height' => array( 'type' => 'string', 'location' => 'xml', ), + 'Fps' => array( 'type' => 'string', 'location' => 'xml', ), + 'Remove' => array( 'type' => 'string', 'location' => 'xml', ), + 'Profile' => array( 'type' => 'string', 'location' => 'xml', ), + 'Bitrate' => array( 'type' => 'string', 'location' => 'xml', ), + 'Crf' => array( 'type' => 'string', 'location' => 'xml', ), + 'Gop' => array( 'type' => 'string', 'location' => 'xml', ), + 'Preset' => array( 'type' => 'string', 'location' => 'xml', ), + 'Bufsize' => array( 'type' => 'string', 'location' => 'xml', ), + 'Maxrate' => array( 'type' => 'string', 'location' => 'xml', ), + 'HlsTsTime' => array( 'type' => 'string', 'location' => 'xml', ), + 'Pixfmt' => array( 'type' => 'string', 'location' => 'xml', ), + 'LongShortMode' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'TimeInterval' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Start' => array( 'type' => 'string', 'location' => 'xml', ), + 'Duration' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Audio' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Codec' => array( 'type' => 'string', 'location' => 'xml', ), + 'Samplerate' => array( 'type' => 'string', 'location' => 'xml', ), + 'Bitrate' => array( 'type' => 'string', 'location' => 'xml', ), + 'Channels' => array( 'type' => 'string', 'location' => 'xml', ), + 'Remove' => array( 'type' => 'string', 'location' => 'xml', ), + 'KeepTwoTracks' => array( 'type' => 'string', 'location' => 'xml', ), + 'SwitchTrack' => array( 'type' => 'string', 'location' => 'xml', ), + 'SampleFormat' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'TransConfig' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'AdjDarMethod' => array( 'type' => 'string', 'location' => 'xml', ), + 'IsCheckReso' => array( 'type' => 'string', 'location' => 'xml', ), + 'ResoAdjMethod' => array( 'type' => 'string', 'location' => 'xml', ), + 'IsCheckVideoBitrate' => array( 'type' => 'string', 'location' => 'xml', ), + 'VideoBitrateAdjMethod' => array( 'type' => 'string', 'location' => 'xml', ), + 'IsCheckAudioBitrate' => array( 'type' => 'string', 'location' => 'xml', ), + 'AudioBitrateAdjMethod' => array( 'type' => 'string', 'location' => 'xml', ), + 'DeleteMetadata' => array( 'type' => 'string', 'location' => 'xml', ), + 'IsHdr2Sdr' => array( 'type' => 'string', 'location' => 'xml', ), + 'HlsEncrypt' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'IsHlsEncrypt' => array( 'type' => 'string', 'location' => 'xml', ), + 'UriKey' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ), + ), + ), + 'Watermark' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Type' => array( 'type' => 'string', 'location' => 'xml', ), + 'Pos' => array( 'type' => 'string', 'location' => 'xml', ), + 'LocMode' => array( 'type' => 'string', 'location' => 'xml', ), + 'Dx' => array( 'type' => 'string', 'location' => 'xml', ), + 'Dy' => array( 'type' => 'string', 'location' => 'xml', ), + 'StartTime' => array( 'type' => 'string', 'location' => 'xml', ), + 'EndTime' => array( 'type' => 'string', 'location' => 'xml', ), + 'Image' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Url' => array( 'type' => 'string', 'location' => 'xml', ), + 'Mode' => array( 'type' => 'string', 'location' => 'xml', ), + 'Width' => array( 'type' => 'string', 'location' => 'xml', ), + 'Height' => array( 'type' => 'string', 'location' => 'xml', ), + 'Transparency' => array( 'type' => 'string', 'location' => 'xml', ), + 'Background' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Text' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'FontSize' => array( 'type' => 'string', 'location' => 'xml', ), + 'FontType' => array( 'type' => 'string', 'location' => 'xml', ), + 'FontColor' => array( 'type' => 'string', 'location' => 'xml', ), + 'Transparency' => array( 'type' => 'string', 'location' => 'xml', ), + 'Text' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ), + 'RemoveWatermark' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Dx' => array( 'type' => 'string', 'location' => 'xml', ), + 'Dy' => array( 'type' => 'string', 'location' => 'xml', ), + 'Width' => array( 'type' => 'string', 'location' => 'xml', ), + 'Height' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Output' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Region' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + 'Bucket' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + 'Object' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ), + ), + ); + } + + public static function CreateMediaTranscodeJobsOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Body' => array( + 'type' => 'string', + 'instanceOf' => 'GuzzleHttp\\Psr7\\Stream', + 'location' => 'body', + ), + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + ), + ); + } + + public static function CreateMediaSnapshotJobs() { + return array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}jobs', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'CreateMediaSnapshotJobsOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( 'required' => true, 'type' => 'string', 'location' => 'uri', ), + 'Tag' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'QueueId' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'CallBack' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'Input' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Object' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Operation' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'TemplateId' => array( 'type' => 'string', 'location' => 'xml', ), + 'Output' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Region' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + 'Bucket' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + 'Object' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Snapshot' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Mode' => array( 'type' => 'string', 'location' => 'xml', ), + 'Start' => array( 'type' => 'string', 'location' => 'xml', ), + 'TimeInterval' => array( 'type' => 'string', 'location' => 'xml', ), + 'Count' => array( 'type' => 'string', 'location' => 'xml', ), + 'Width' => array( 'type' => 'string', 'location' => 'xml', ), + 'Height' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ), + ), + ); + } + + public static function CreateMediaSnapshotJobsOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Body' => array( + 'type' => 'string', + 'instanceOf' => 'GuzzleHttp\\Psr7\\Stream', + 'location' => 'body', + ), + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + ), + ); + } + + public static function CreateMediaConcatJobs() { + return array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}jobs', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'CreateMediaConcatJobsOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( 'required' => true, 'type' => 'string', 'location' => 'uri', ), + 'Tag' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'QueueId' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'CallBack' => array( 'required' => true, 'location' => 'xml', 'type' => 'string', ), + 'Input' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Object' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Operation' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'TemplateId' => array( 'type' => 'string', 'location' => 'xml', ), + 'Output' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Region' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + 'Bucket' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + 'Object' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'ConcatTemplate' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Audio' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Codec' => array( 'type' => 'string', 'location' => 'xml', ), + 'Samplerate' => array( 'type' => 'string', 'location' => 'xml', ), + 'Bitrate' => array( 'type' => 'string', 'location' => 'xml', ), + 'Channels' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Index' => array( 'type' => 'string', 'location' => 'xml', ), + 'ConcatFragments' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ConcatFragment', + 'type' => 'object', + 'sentAs' => 'ConcatFragment', + 'properties' => array( + 'Url' => array( 'type' => 'string', 'location' => 'xml', ), + 'StartTime' => array( 'type' => 'string', 'location' => 'xml', ), + 'EndTime' => array( 'type' => 'string', 'location' => 'xml', ), + 'Mode' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + 'Video' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Codec' => array( 'type' => 'string', 'location' => 'xml', ), + 'Width' => array( 'type' => 'string', 'location' => 'xml', ), + 'Height' => array( 'type' => 'string', 'location' => 'xml', ), + 'Fps' => array( 'type' => 'string', 'location' => 'xml', ), + 'Bitrate' => array( 'type' => 'string', 'location' => 'xml', ), + 'Remove' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Container' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Format' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ), + ), + ), + ), + ); + } + + public static function CreateMediaConcatJobsOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Body' => array( + 'type' => 'string', + 'instanceOf' => 'GuzzleHttp\\Psr7\\Stream', + 'location' => 'body', + ), + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + ), + ); + } + + public static function DetectAudio() { + return array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}audio/auditing', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DetectAudioOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Input' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'Url' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Object' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'Conf' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'DetectType' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Callback' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'BizType' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'CallbackVersion' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + ), + ); + } + public static function DetectAudioOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( 'type' => 'string', 'location' => 'header', 'sentAs' => 'x-ci-request-id', ), + 'ContentType' => array( 'type' => 'string', 'location' => 'header', 'sentAs' => 'Content-Type', ), + 'ContentLength' => array( 'type' => 'numeric', 'minimum'=> 0, 'location' => 'header', 'sentAs' => 'Content-Length', ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'JobId' => array( 'type' => 'string', 'location' => 'xml', ), + 'State' => array( 'type' => 'string', 'location' => 'xml', ), + 'CreationTime' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ); + } + + public static function GetDetectAudioResult() { + return array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}audio/auditing/{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetDetectAudioResultOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ); + } + + public static function GetDetectAudioResultOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'string', 'location' => 'xml', ), + 'Message' => array( 'type' => 'string', 'location' => 'xml', ), + 'JobId' => array( 'type' => 'string', 'location' => 'xml', ), + 'State' => array( 'type' => 'string', 'location' => 'xml', ), + 'CreationTime' => array( 'type' => 'string', 'location' => 'xml', ), + 'Object' => array( 'type' => 'string', 'location' => 'xml', ), + 'Url' => array( 'type' => 'string', 'location' => 'xml', ), + 'Label' => array( 'type' => 'string', 'location' => 'xml', ), + 'Result' => array( 'type' => 'integer', 'location' => 'xml', ), + 'AudioText' => array( 'type' => 'string', 'location' => 'xml', ), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Label' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Label' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Label' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Label' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Section' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'Url' => array( 'type' => 'string', 'location' => 'xml', ), + 'Text' => array( 'type' => 'string', 'location' => 'xml', ), + 'OffsetTime' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Duration' => array( 'type' => 'integer', 'location' => 'xml', ), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ); + } + + public static function GetDetectTextResult() { + return array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}text/auditing/{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetDetectTextResultOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ); + } + public static function GetDetectTextResultOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'string', 'location' => 'xml', ), + 'Message' => array( 'type' => 'string', 'location' => 'xml', ), + 'JobId' => array( 'type' => 'string', 'location' => 'xml', ), + 'State' => array( 'type' => 'string', 'location' => 'xml', ), + 'CreationTime' => array( 'type' => 'string', 'location' => 'xml', ), + 'Object' => array( 'type' => 'string', 'location' => 'xml', ), + 'Content' => array( 'type' => 'string', 'location' => 'xml', ), + 'SectionCount' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Label' => array( 'type' => 'string', 'location' => 'xml', ), + 'Result' => array( 'type' => 'integer', 'location' => 'xml', ), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Count' => array( 'type' => 'integer', 'location' => 'xml', ), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Count' => array( 'type' => 'integer', 'location' => 'xml', ), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Count' => array( 'type' => 'integer', 'location' => 'xml', ), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Count' => array( 'type' => 'integer', 'location' => 'xml', ), + ), + ), + 'IllegalInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Count' => array( 'type' => 'integer', 'location' => 'xml', ), + ), + ), + 'AbuseInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Count' => array( 'type' => 'integer', 'location' => 'xml', ), + ), + ), + 'Section' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'StartByte' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Label' => array( 'type' => 'string', 'location' => 'xml', ), + 'Result' => array( 'type' => 'integer', 'location' => 'xml', ), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'IllegalInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'AbuseInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Score' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ), + ), + ), + ), + ), + ); + } + + public static function DetectVideo() { + return array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}video/auditing', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DetectVideoOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Input' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'Object' => array( 'type' => 'string', 'location' => 'xml', ), + 'Url' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Conf' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'DetectType' => array( 'type' => 'string', 'location' => 'xml', ), + 'Callback' => array( 'type' => 'string', 'location' => 'xml', ), + 'BizType' => array( 'type' => 'string', 'location' => 'xml', ), + 'CallbackVersion' => array( 'type' => 'string', 'location' => 'xml', ), + 'DetectContent' => array( 'type' => 'integer', 'location' => 'xml', ), + 'Snapshot' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'Mode' => array( 'type' => 'string', 'location' => 'xml', ), + 'Count' => array( 'type' => 'string', 'location' => 'xml', ), + 'TimeInterval' => array( 'type' => 'numeric', 'location' => 'xml', ), + ), + ), + ), + ), + ), + ); + } + public static function DetectVideoOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( 'type' => 'string', 'location' => 'header', 'sentAs' => 'x-ci-request-id', ), + 'ContentType' => array( 'type' => 'string', 'location' => 'header', 'sentAs' => 'Content-Type', ), + 'ContentLength' => array( 'type' => 'numeric', 'minimum'=> 0, 'location' => 'header', 'sentAs' => 'Content-Length', ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'JobId' => array( 'type' => 'string', 'location' => 'xml', ), + 'State' => array( 'type' => 'string', 'location' => 'xml', ), + 'CreationTime' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ); + } + + public static function GetDetectVideoResult() { + return array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}video/auditing/{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetDetectVideoResultOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ); + } + public static function GetDetectVideoResultOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array('type' => 'string', 'location' => 'xml',), + 'Message' => array('type' => 'string', 'location' => 'xml',), + 'JobId' => array('type' => 'string', 'location' => 'xml',), + 'State' => array('type' => 'string', 'location' => 'xml',), + 'CreationTime' => array('type' => 'string', 'location' => 'xml',), + 'Object' => array('type' => 'string', 'location' => 'xml',), + 'Url' => array('type' => 'string', 'location' => 'xml',), + 'SnapshotCount' => array('type' => 'string', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'Result' => array('type' => 'integer', 'location' => 'xml',), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Count' => array('type' => 'integer', 'location' => 'xml',), + ) + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Count' => array('type' => 'integer', 'location' => 'xml',), + ) + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Count' => array('type' => 'integer', 'location' => 'xml',), + ) + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Count' => array('type' => 'integer', 'location' => 'xml',), + ) + ), + 'Snapshot' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'Url' => array('type' => 'string', 'location' => 'xml',), + 'SnapshotTime' => array('type' => 'integer', 'location' => 'xml',), + 'Text' => array('type' => 'string', 'location' => 'xml',), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array('type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ) + ), + ) + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ) + ), + ) + ), + ), + ) + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array('type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ) + ), + ) + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ) + ), + ) + ), + ), + ) + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array('type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ) + ), + ) + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ) + ), + ) + ), + ), + ) + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array('type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ) + ), + ) + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ) + ), + ) + ), + ), + ) + ), + ) + ), + ), + 'AudioSection' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'Url' => array('type' => 'string', 'location' => 'xml',), + 'Text' => array('type' => 'string', 'location' => 'xml',), + 'OffsetTime' => array('type' => 'integer', 'location' => 'xml',), + 'Duration' => array('type' => 'integer', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'Result' => array('type' => 'integer', 'location' => 'xml',), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',), + ), + ) + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',), + ), + ) + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',), + ), + ) + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',), + ), + ) + ), + ), + ), + ), + ) + ), + 'NonExistJobIds' => array('type' => 'string', 'location' => 'xml',) + ), + ); + } + + public static function DetectDocument() { + return array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}document/auditing', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DetectDocumentOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Input' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'Object' => array( 'type' => 'string', 'location' => 'xml', ), + 'Url' => array( 'type' => 'string', 'location' => 'xml', ), + 'Type' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Conf' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'DetectType' => array( 'type' => 'string', 'location' => 'xml', ), + 'Callback' => array( 'type' => 'string', 'location' => 'xml', ), + 'BizType' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ); + } + public static function DetectDocumentOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( 'type' => 'string', 'location' => 'header', 'sentAs' => 'x-ci-request-id', ), + 'ContentType' => array( 'type' => 'string', 'location' => 'header', 'sentAs' => 'Content-Type', ), + 'ContentLength' => array( 'type' => 'numeric', 'minimum'=> 0, 'location' => 'header', 'sentAs' => 'Content-Length', ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'JobId' => array( 'type' => 'string', 'location' => 'xml', ), + 'State' => array( 'type' => 'string', 'location' => 'xml', ), + 'CreationTime' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ); + } + + public static function GetDetectDocumentResult() { + return array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}document/auditing/{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetDetectDocumentResultOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ); + } + public static function GetDetectDocumentResultOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array('type' => 'string', 'location' => 'xml',), + 'Message' => array('type' => 'string', 'location' => 'xml',), + 'JobId' => array('type' => 'string', 'location' => 'xml',), + 'State' => array('type' => 'string', 'location' => 'xml',), + 'Suggestion' => array('type' => 'integer', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'CreationTime' => array('type' => 'string', 'location' => 'xml',), + 'Object' => array('type' => 'string', 'location' => 'xml',), + 'Url' => array('type' => 'string', 'location' => 'xml',), + 'PageCount' => array('type' => 'integer', 'location' => 'xml',), + 'Labels' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + ), + ), + ), + ), + 'PageSegment' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Results' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Url' => array('type' => 'string', 'location' => 'xml',), + 'Text' => array('type' => 'string', 'location' => 'xml',), + 'PageNumber' => array('type' => 'integer', 'location' => 'xml',), + 'SheetNumber' => array('type' => 'integer', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'Suggestion' => array('type' => 'integer', 'location' => 'xml',), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array('type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',) + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array('type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',) + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array('type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',) + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array('type' => 'integer', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array('type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array('type' => 'string', 'location' => 'xml',) + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array('type' => 'numeric', 'location' => 'xml',), + 'Y' => array('type' => 'numeric', 'location' => 'xml',), + 'Height' => array('type' => 'numeric', 'location' => 'xml',), + 'Width' => array('type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array('type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ); + } + public static function CreateDocProcessJobs() { + return array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}doc_jobs', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'CreateDocProcessJobsOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Tag' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'xml', + ), + 'QueueId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'xml', + ), + 'Input' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Object' => array( 'required' => true, 'type' => 'string', 'location' => 'xml', ), + ), + ), + 'Operation' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Output' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Region' => array( + 'type' => 'string','required' => true,'location' => 'xml', + ), + 'Bucket' => array( + 'type' => 'string','required' => true,'location' => 'xml', + ), + 'Object' => array( + 'type' => 'string','required' => true,'location' => 'xml', + ), + ), + ), + 'DocProcess' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'SrcType' => array( + 'type' => 'string', + ), + 'TgtType' => array( + 'type' => 'string', + ), + 'SheetId' => array( + 'type' => 'integer', + ), + 'StartPage' => array( + 'type' => 'integer', + ), + 'EndPage' => array( + 'type' => 'integer', + ), + 'ImageParams' => array( + 'type' => 'string', + ), + 'DocPassword' => array( + 'type' => 'string', + ), + 'Comments' => array( + 'type' => 'integer', + ), + 'PaperDirection' => array( + 'type' => 'integer', + ), + 'Quality' => array( + 'type' => 'integer', + ), + 'Zoom' => array( + 'type' => 'integer', + ), + ), + ), + ), + ), + ), + ); + } + public static function CreateDocProcessJobsOutput() + { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array('type' => 'string', 'location' => 'header', 'sentAs' => 'x-ci-request-id',), + 'ContentType' => array('type' => 'string', 'location' => 'header', 'sentAs' => 'Content-Type',), + 'ContentLength' => array('type' => 'numeric', 'minimum' => 0, 'location' => 'header', 'sentAs' => 'Content-Length',), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'EndTime' => array('type' => 'string', 'location' => 'xml',), + 'StartTime' => array('type' => 'string', 'location' => 'xml',), + 'Code' => array('type' => 'string', 'location' => 'xml',), + 'Message' => array('type' => 'string', 'location' => 'xml',), + 'JobId' => array('type' => 'string', 'location' => 'xml',), + 'Tag' => array('type' => 'string', 'location' => 'xml',), + 'State' => array('type' => 'string', 'location' => 'xml',), + 'CreationTime' => array('type' => 'string', 'location' => 'xml',), + 'QueueId' => array('type' => 'string', 'location' => 'xml',), + 'Input' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Object' => array('type' => 'string', 'location' => 'xml',), + ), + ), + 'Operation' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Output' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Region' => array( + 'type' => 'string','location' => 'xml', + ), + 'Bucket' => array( + 'type' => 'string','location' => 'xml', + ), + 'Object' => array( + 'type' => 'string','location' => 'xml', + ), + ), + ), + 'DocProcess' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'SrcType' => array( + 'type' => 'string', + ), + 'TgtType' => array( + 'type' => 'string', + ), + 'SheetId' => array( + 'type' => 'integer', + ), + 'StartPage' => array( + 'type' => 'integer', + ), + 'EndPage' => array( + 'type' => 'integer', + ), + 'ImageParams' => array( + 'type' => 'string', + ), + 'DocPassword' => array( + 'type' => 'string', + ), + 'Comments' => array( + 'type' => 'integer', + ), + 'PaperDirection' => array( + 'type' => 'integer', + ), + 'Quality' => array( + 'type' => 'integer', + ), + 'Zoom' => array( + 'type' => 'integer', + ), + ), + ), + ), + ), + ), + ), + ), + ); + } + public static function DescribeDocProcessQueues() { + return array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}docqueue', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DescribeDocProcessQueuesOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'queueIds' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'state' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'pageNumber' => array( + 'type' => 'string', + 'location' => 'query', + ), + 'pageSize' => array( + 'type' => 'string', + 'location' => 'query', + ), + ), + ); + } + public static function DescribeDocProcessQueuesOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array('type' => 'string', 'location' => 'xml',), + 'TotalCount' => array('type' => 'integer', 'location' => 'xml',), + 'PageNumber' => array('type' => 'integer', 'location' => 'xml',), + 'PageSize' => array('type' => 'integer', 'location' => 'xml',), + 'QueueList' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'State' => array('type' => 'string', 'location' => 'xml',), + 'Name' => array('type' => 'string', 'location' => 'xml',), + 'MaxSize' => array('type' => 'integer', 'location' => 'xml',), + 'MaxConcurrent' => array('type' => 'integer', 'location' => 'xml',), + 'CreateTime' => array('type' => 'string', 'location' => 'xml',), + 'UpdateTime' => array('type' => 'string', 'location' => 'xml',), + 'BucketId' => array('type' => 'string', 'location' => 'xml',), + 'Category' => array('type' => 'string', 'location' => 'xml',), + 'QueueId' => array('type' => 'string', 'location' => 'xml',), + 'NotifyConfig' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Url' => array('type' => 'string', 'location' => 'xml',), + 'Event' => array('type' => 'string', 'location' => 'xml',), + 'Type' => array('type' => 'string', 'location' => 'xml',), + 'State' => array('type' => 'string', 'location' => 'xml',), + ), + ), + ), + ), + ), + ); + } + + public static function DescribeDocProcessJob() { + return array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}doc_jobs/{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DescribeDocProcessJobOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ); + } + + public static function DescribeDocProcessJobOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Body' => array( + 'type' => 'string', + 'instanceOf' => 'GuzzleHttp\\Psr7\\Stream', + 'location' => 'body', + ), + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( + 'type' => 'string', + ), + 'Message' => array( + 'type' => 'string', + ), + 'JobId' => array( + 'type' => 'string', + ), + 'State' => array( + 'type' => 'string', + ), + 'CreationTime' => array( + 'type' => 'string', + ), + 'QueueId' => array( + 'type' => 'string', + ), + 'Tag' => array( + 'type' => 'string', + ), + 'EndTime' => array( + 'type' => 'string', + ), + 'Input' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Object' => array( + 'type' => 'string', + ), + ), + ), + 'Operation' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'DocProcess' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'SrcType' => array( + 'type' => 'string', + ), + 'TgtType' => array( + 'type' => 'string', + ), + 'SheetId' => array( + 'type' => 'integer', + ), + 'StartPage' => array( + 'type' => 'integer', + ), + 'EndPage' => array( + 'type' => 'integer', + ), + 'ImageParams' => array( + 'type' => 'string', + ), + 'DocPassword' => array( + 'type' => 'string', + ), + 'Comments' => array( + 'type' => 'integer', + ), + 'PaperDirection' => array( + 'type' => 'integer', + ), + 'Quality' => array( + 'type' => 'integer', + ), + 'Zoom' => array( + 'type' => 'integer', + ), + ), + ), + 'DocProcessResult' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'PageInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'PageNo' => array( + 'type' => 'integer', + ), + 'TgtUri' => array( + 'type' => 'string', + ), + 'PicIndex' => array( + 'type' => 'integer', + ), + 'PicNum' => array( + 'type' => 'integer', + ), + 'X-SheetPics' => array( + 'type' => 'integer', + ), + ), + ), + 'SuccPageCount' => array( + 'type' => 'integer', + ), + 'FailPageCount' => array( + 'type' => 'integer', + ), + 'TaskId' => array( + 'type' => 'string', + ), + 'TgtType' => array( + 'type' => 'string', + ), + 'TotalPageCount' => array( + 'type' => 'integer', + ), + 'TotalSheetCount' => array( + 'type' => 'integer', + ), + ), + ), + 'Output' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + ), + 'Object' => array( + 'type' => 'string', + ), + 'Region' => array( + 'type' => 'string', + ), + ), + ), + ), + ), + ), + ), + ), + ), + ); + } + + public static function GetDescribeDocProcessJobs() { + return array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}doc_jobs', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetDescribeDocProcessJobsOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Tag' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'tag', + ), + 'QueueId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'queueId', + ), + 'OrderByTime' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'orderByTime', + ), + 'NextToken' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'nextToken', + ), + 'Size' => array( + 'type' => 'integer', + 'location' => 'query', + 'sentAs' => 'size', + ), + 'States' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'states', + ), + 'StartCreationTime' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'startCreationTime', + ), + 'EndCreationTime' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'endCreationTime', + ), + ), + ); + } + + public static function GetDescribeDocProcessJobsOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array('type' => 'string', 'location' => 'header', 'sentAs' => 'x-ci-request-id',), + 'ContentType' => array('type' => 'string', 'location' => 'header', 'sentAs' => 'Content-Type',), + 'ContentLength' => array('type' => 'numeric', 'minimum' => 0, 'location' => 'header', 'sentAs' => 'Content-Length',), + 'NextToken' => array('type' => 'string','location' => 'xml',), + 'JobsDetail' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'Code' => array('type' => 'string', 'location' => 'xml',), + 'Message' => array('type' => 'string', 'location' => 'xml',), + 'JobId' => array('type' => 'string', 'location' => 'xml',), + 'Tag' => array('type' => 'string', 'location' => 'xml',), + 'State' => array('type' => 'string', 'location' => 'xml',), + 'CreationTime' => array('type' => 'string', 'location' => 'xml',), + 'QueueId' => array('type' => 'string', 'location' => 'xml',), + 'Input' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Object' => array('type' => 'string', 'location' => 'xml',), + ), + ), + 'Operation' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Output' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Region' => array( + 'type' => 'string','location' => 'xml', + ), + 'Bucket' => array( + 'type' => 'string','location' => 'xml', + ), + 'Object' => array( + 'type' => 'string','location' => 'xml', + ), + ), + ), + 'DocProcess' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'SrcType' => array( + 'type' => 'string', + ), + 'TgtType' => array( + 'type' => 'string', + ), + 'SheetId' => array( + 'type' => 'integer', + ), + 'StartPage' => array( + 'type' => 'integer', + ), + 'EndPage' => array( + 'type' => 'integer', + ), + 'ImageParams' => array( + 'type' => 'string', + ), + 'DocPassword' => array( + 'type' => 'string', + ), + 'Comments' => array( + 'type' => 'integer', + ), + 'PaperDirection' => array( + 'type' => 'integer', + ), + 'Quality' => array( + 'type' => 'integer', + ), + 'Zoom' => array( + 'type' => 'integer', + ), + ), + ), + ), + ), + ), + ), + ), + ), + ); + } + + public static function DetectImage() { + return array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DetectImageOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Qcloud\\Cos\\Client::explodeKey' + ) + ), + 'ci-process' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query' + ), + 'DetectType' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'detect-type' + ), + 'DetectUrl' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'detect-url' + ), + 'Interval' => array( + 'type' => 'integer', + 'location' => 'query', + 'sentAs' => 'interval' + ), + 'MaxFrames' => array( + 'type' => 'integer', + 'location' => 'query', + 'sentAs' => 'max-frames' + ), + 'BizType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'biz-type' + ) + ), + ); + } + + public static function DetectImageOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( 'location' => 'header', 'sentAs' => 'x-cos-request-id', ), + 'ContentType' => array('type' => 'string', 'location' => 'header', 'sentAs' => 'Content-Type',), + 'ContentLength' => array('type' => 'numeric', 'minimum' => 0, 'location' => 'header', 'sentAs' => 'Content-Length',), + 'Result' => array('type' => 'integer', 'location' => 'xml',), + 'Label' => array('type' => 'string', 'location' => 'xml',), + 'SubLabel' => array('type' => 'string', 'location' => 'xml',), + 'Score' => array('type' => 'integer', 'location' => 'xml',), + 'Text' => array('type' => 'string', 'location' => 'xml',), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'integer', 'location' => 'xml',), + 'Msg' => array( 'type' => 'string', 'location' => 'xml',), + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array( 'type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array( 'type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'TerroristInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'integer', 'location' => 'xml',), + 'Msg' => array( 'type' => 'string', 'location' => 'xml',), + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array( 'type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array( 'type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'integer', 'location' => 'xml',), + 'Msg' => array( 'type' => 'string', 'location' => 'xml',), + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array( 'type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array( 'type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'integer', 'location' => 'xml',), + 'Msg' => array( 'type' => 'string', 'location' => 'xml',), + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array( 'type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array( 'type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + ) + ); + } + + public static function DetectImages() { + return array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}image/auditing', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DetectImagesOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Inputs' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Input', + 'type' => 'object', + 'location' => 'xml', + 'sentAs' => 'Input', + 'properties' => array( + 'Object' => array( 'type' => 'string', 'location' => 'xml', ), + 'Url' => array( 'type' => 'string', 'location' => 'xml', ), + 'Interval' => array( 'type' => 'integer', 'location' => 'xml', ), + 'MaxFrames' => array( 'type' => 'integer', 'location' => 'xml', ), + 'DataId' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + 'Conf' => array( + 'required' => true, + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DetectType' => array( 'type' => 'string', 'location' => 'xml', 'required' => true,), + 'BizType' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ); + } + + public static function DetectImagesOutput() { + return array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( 'location' => 'header', 'sentAs' => 'x-ci-request-id', ), + 'ContentType' => array('type' => 'string', 'location' => 'header', 'sentAs' => 'Content-Type',), + 'ContentLength' => array('type' => 'numeric', 'minimum' => 0, 'location' => 'header', 'sentAs' => 'Content-Length',), + 'JobsDetail' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'string', 'location' => 'xml',), + 'Message' => array( 'type' => 'string', 'location' => 'xml',), + 'DataId' => array( 'type' => 'string', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'Result' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'integer', 'location' => 'xml',), + 'Text' => array( 'type' => 'integer', 'location' => 'xml',), + 'Object' => array( 'type' => 'integer', 'location' => 'xml',), + 'Url' => array( 'type' => 'integer', 'location' => 'xml',), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'integer', 'location' => 'xml',), + 'Msg' => array( 'type' => 'string', 'location' => 'xml',), + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array( 'type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array( 'type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'integer', 'location' => 'xml',), + 'Msg' => array( 'type' => 'string', 'location' => 'xml',), + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array( 'type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array( 'type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'integer', 'location' => 'xml',), + 'Msg' => array( 'type' => 'string', 'location' => 'xml',), + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array( 'type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array( 'type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'integer', 'location' => 'xml',), + 'Msg' => array( 'type' => 'string', 'location' => 'xml',), + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'SubLabel' => array( 'type' => 'string', 'location' => 'xml',), + 'OcrResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Text' => array( 'type' => 'string', 'location' => 'xml',), + 'Keywords' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( 'type' => 'string', 'location' => 'xml',), + ), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + 'ObjectResults' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Name' => array( 'type' => 'string', 'location' => 'xml',), + 'Location' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'X' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Y' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Width' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Height' => array( 'type' => 'numeric', 'location' => 'xml',), + 'Rotate' => array( 'type' => 'numeric', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ), + ) + ); + } + +} \ No newline at end of file diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/CosException.php b/vendor/qcloud/cos-sdk-v5/src/Exception/CosException.php similarity index 64% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/CosException.php rename to vendor/qcloud/cos-sdk-v5/src/Exception/CosException.php index bcf0628..8e482c6 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/CosException.php +++ b/vendor/qcloud/cos-sdk-v5/src/Exception/CosException.php @@ -2,6 +2,4 @@ namespace Qcloud\Cos\Exception; -use Qcloud\Cos\Exception\ServiceResponseException; - class CosException extends ServiceResponseException {} diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/ServiceResponseException.php b/vendor/qcloud/cos-sdk-v5/src/Exception/ServiceResponseException.php similarity index 99% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/ServiceResponseException.php rename to vendor/qcloud/cos-sdk-v5/src/Exception/ServiceResponseException.php index 7c958a2..ba95f0f 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Exception/ServiceResponseException.php +++ b/vendor/qcloud/cos-sdk-v5/src/Exception/ServiceResponseException.php @@ -89,7 +89,7 @@ class ServiceResponseException extends \RuntimeException { /** * Set the associated response * - * @param Response $response Response + * @param Response $response */ public function setResponse(ResponseInterface $response) { $this->response = $response; diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionMiddleware.php b/vendor/qcloud/cos-sdk-v5/src/ExceptionMiddleware.php similarity index 99% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionMiddleware.php rename to vendor/qcloud/cos-sdk-v5/src/ExceptionMiddleware.php index 66639a6..3bc980a 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionMiddleware.php +++ b/vendor/qcloud/cos-sdk-v5/src/ExceptionMiddleware.php @@ -4,7 +4,6 @@ namespace Qcloud\Cos; use Qcloud\Cos\Exception\ServiceResponseException; use GuzzleHttp\Promise\PromiseInterface; -use GuzzleHttp\Psr7; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use GuzzleHttp\Exception\RequestException; diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionParser.php b/vendor/qcloud/cos-sdk-v5/src/ExceptionParser.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ExceptionParser.php rename to vendor/qcloud/cos-sdk-v5/src/ExceptionParser.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/BlindWatermarkTemplate.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/BlindWatermarkTemplate.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/BlindWatermarkTemplate.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/BlindWatermarkTemplate.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/CIParamTransformation.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/CIParamTransformation.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/CIParamTransformation.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/CIParamTransformation.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageMogrTemplate.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageMogrTemplate.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageMogrTemplate.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageMogrTemplate.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageQrcodeTemplate.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageQrcodeTemplate.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageQrcodeTemplate.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageQrcodeTemplate.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageStyleTemplate.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageStyleTemplate.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageStyleTemplate.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageStyleTemplate.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageTemplate.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageTemplate.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageTemplate.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageTemplate.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageViewTemplate.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageViewTemplate.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageViewTemplate.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageViewTemplate.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageWatermarkTemplate.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageWatermarkTemplate.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/ImageWatermarkTemplate.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/ImageWatermarkTemplate.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/PicOperationsTransformation.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/PicOperationsTransformation.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/PicOperationsTransformation.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/PicOperationsTransformation.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/TextWatermarkTemplate.php b/vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/TextWatermarkTemplate.php similarity index 100% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ImageParamTemplate/TextWatermarkTemplate.php rename to vendor/qcloud/cos-sdk-v5/src/ImageParamTemplate/TextWatermarkTemplate.php diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/MultipartUpload.php b/vendor/qcloud/cos-sdk-v5/src/MultipartUpload.php similarity index 93% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/MultipartUpload.php rename to vendor/qcloud/cos-sdk-v5/src/MultipartUpload.php index e38ddd4..5c342e4 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/MultipartUpload.php +++ b/vendor/qcloud/cos-sdk-v5/src/MultipartUpload.php @@ -2,15 +2,12 @@ namespace Qcloud\Cos; -use Qcloud\Cos\Exception\CosException; use GuzzleHttp\Pool; -use function GuzzleHttp\Promise\rejection_for; - class MultipartUpload { const MIN_PART_SIZE = 1048576; const MAX_PART_SIZE = 5368709120; - const DEFAULT_PART_SIZE = 52428800; + const DEFAULT_PART_SIZE = 5242880; const MAX_PARTS = 10000; private $client; @@ -19,7 +16,7 @@ class MultipartUpload { private $parts; private $body; private $progress; - private $totolSize; + private $totalSize; private $uploadedSize; public function __construct($client, $body, $options = array()) { @@ -30,11 +27,11 @@ class MultipartUpload { $this->options = $options; $this->partSize = $this->calculatePartSize($minPartSize); $this->concurrency = isset($options['Concurrency']) ? $options['Concurrency'] : 10; - $this->progress = isset($options['Progress']) ? $options['Progress'] : function($totolSize, $uploadedSize) {}; + $this->progress = isset($options['Progress']) ? $options['Progress'] : function($totalSize, $uploadedSize) {}; $this->parts = []; $this->partNumberList = []; $this->uploadedSize = 0; - $this->totolSize = $this->body->getSize(); + $this->totalSize = $this->body->getSize(); $this->needMd5 = isset($options['ContentMD5']) ? $options['ContentMD5'] : true; $this->retry = isset($options['Retry']) ? $options['Retry'] : 3; } @@ -66,8 +63,8 @@ class MultipartUpload { } $body = $this->body->read($this->partSize); $partSize = $this->partSize; - if ($offset + $this->partSize >= $this->totolSize) { - $partSize = $this->totolSize - $offset; + if ($offset + $this->partSize >= $this->totalSize) { + $partSize = $this->totalSize - $offset; } $offset += $partSize; if (empty($body)) { @@ -107,7 +104,7 @@ class MultipartUpload { $part = array('PartNumber' => $partNumber, 'ETag' => $etag); $this->parts[$partNumber] = $part; $this->uploadedSize += $partSize; - call_user_func_array($this->progress, [$this->totolSize, $this->uploadedSize]); + call_user_func_array($this->progress, [$this->totalSize, $this->uploadedSize]); }, 'rejected' => function ($reason, $index) { diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Common.php b/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Common.php deleted file mode 100644 index dc8fd3a..0000000 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Common.php +++ /dev/null @@ -1,55 +0,0 @@ -'ap-shanghai', - 'cn-south'=>'ap-guangzhou', - 'cn-north'=>'ap-beijing-1', - 'cn-south-2'=>'ap-guangzhou-2', - 'cn-southwest'=>'ap-chengdu', - 'sg'=>'ap-singapore', - 'tj'=>'ap-beijing-1', - 'bj'=>'ap-beijing', - 'sh'=>'ap-shanghai', - 'gz'=>'ap-guangzhou', - 'cd'=>'ap-chengdu', - 'sgp'=>'ap-singapore' ); - if ( isset($regionmap[ $region]) ) { - return $regionmap[$region]; - } - return $region; -} - -function encodeKey( $key ) { - return str_replace( '%2F', '/', rawurlencode( $key ) ); -} - -function endWith( $haystack, $needle ) { - $length = strlen( $needle ); - if ( $length == 0 ) { - return true; - } - return ( substr( $haystack, -$length ) === $needle ); -} - -function startWith( $haystack, $needle ) { - $length = strlen( $needle ); - if ( $length == 0 ) { - return true; - } - return ( substr( $haystack, $length ) === $needle ); -} - -function headersMap( $command, $request ) { - $headermap = array( - 'TransferEncoding'=>'Transfer-Encoding', - 'ChannelId'=>'x-cos-channel-id' - ); - foreach ( $headermap as $key => $value ) { - if ( isset( $command[$key] ) ) { - $request = $request->withHeader( $value, $command[$key] ); - } - } - return $request; -} diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/RangeDownload.php b/vendor/qcloud/cos-sdk-v5/src/RangeDownload.php similarity index 92% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/RangeDownload.php rename to vendor/qcloud/cos-sdk-v5/src/RangeDownload.php index e521ac0..77f50f7 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/RangeDownload.php +++ b/vendor/qcloud/cos-sdk-v5/src/RangeDownload.php @@ -2,8 +2,6 @@ namespace Qcloud\Cos; -use Exception; -use Qcloud\Cos\Exception\CosException; use GuzzleHttp\Pool; class RangeDownload { @@ -14,7 +12,7 @@ class RangeDownload { private $partSize; private $parts; private $progress; - private $totolSize; + private $totalSize; private $resumableJson; public function __construct( $client, $contentLength, $saveAs, $options = array() ) { @@ -22,13 +20,13 @@ class RangeDownload { $this->options = $options; $this->partSize = isset( $options['PartSize'] ) ? $options['PartSize'] : self::DEFAULT_PART_SIZE; $this->concurrency = isset( $options['Concurrency'] ) ? $options['Concurrency'] : 10; - $this->progress = isset( $options['Progress'] ) ? $options['Progress'] : function( $totolSize, $downloadedSize ) { + $this->progress = isset( $options['Progress'] ) ? $options['Progress'] : function( $totalSize, $downloadedSize ) { } ; $this->parts = []; $this->partNumberList = []; $this->downloadedSize = 0; - $this->totolSize = $contentLength; + $this->totalSize = $contentLength; $this->saveAs = $saveAs; $this->resumableJson = []; $this->resumableJson = isset( $options['ResumableJson'] ) ? $options['ResumableJson'] : []; @@ -83,10 +81,10 @@ class RangeDownload { $uploadRequests = function () { $index = 1; $partSize = 0; - for ( $offset = 0; $offset < $this->totolSize; ) { + for ( $offset = 0; $offset < $this->totalSize; ) { $partSize = $this->partSize; - if ( $offset + $this->partSize >= $this->totolSize ) { - $partSize = $this->totolSize - $offset; + if ( $offset + $this->partSize >= $this->totalSize ) { + $partSize = $this->totalSize - $offset; } $this->parts[$index]['PartSize'] = $partSize; $this->parts[$index]['Offset'] = $offset; @@ -107,7 +105,7 @@ class RangeDownload { } else { $this->resumableJson['DownloadedBlocks'][] = ['from' => $begin, 'to' => $end]; $this->downloadedSize += $partSize; - call_user_func_array( $this->progress, [$this->totolSize, $this->downloadedSize] ); + call_user_func_array( $this->progress, [$this->totalSize, $this->downloadedSize] ); } $offset += $partSize; } @@ -133,7 +131,7 @@ class RangeDownload { $this->resumableJson['DownloadedBlocks'][] = ['from' => $begin, 'to' => $end]; $partSize = $this->parts[$index]['PartSize']; $this->downloadedSize += $partSize; - call_user_func_array( $this->progress, [$this->totolSize, $this->downloadedSize] ); + call_user_func_array( $this->progress, [$this->totalSize, $this->downloadedSize] ); } , 'rejected' => function ( $reason, $index ) { diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Request/BodyLocation.php b/vendor/qcloud/cos-sdk-v5/src/Request/BodyLocation.php similarity index 95% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Request/BodyLocation.php rename to vendor/qcloud/cos-sdk-v5/src/Request/BodyLocation.php index 90f97a5..73787fd 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Request/BodyLocation.php +++ b/vendor/qcloud/cos-sdk-v5/src/Request/BodyLocation.php @@ -44,6 +44,6 @@ class BodyLocation extends AbstractLocation } // binary string data from bound parameter $value = $command[$param->getName()]; - return $request->withBody(Psr7\stream_for($value)); + return $request->withBody(Psr7\Utils::streamFor($value)); } } diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ResultTransformer.php b/vendor/qcloud/cos-sdk-v5/src/ResultTransformer.php similarity index 88% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ResultTransformer.php rename to vendor/qcloud/cos-sdk-v5/src/ResultTransformer.php index bb7e076..be830a9 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/ResultTransformer.php +++ b/vendor/qcloud/cos-sdk-v5/src/ResultTransformer.php @@ -2,22 +2,10 @@ namespace Qcloud\Cos; -use Guzzle\Service\Description\Parameter; -use Guzzle\Service\Description\ServiceDescription; -use GuzzleHttp\HandlerStack; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; -use Qcloud\Cos\Signature; -use GuzzleHttp\Command\Guzzle\Description; -use GuzzleHttp\Command\Guzzle\GuzzleClient; use GuzzleHttp\Command\CommandInterface; -use GuzzleHttp\Exception\RequestException; -use GuzzleHttp\Middleware; -use GuzzleHttp\Psr7; -use GuzzleHttp\Psr7\Uri; use GuzzleHttp\Command\Result; -use InvalidArgumentException; - class ResultTransformer { private $config; @@ -30,7 +18,7 @@ class ResultTransformer { public function writeDataToLocal(CommandInterface $command, RequestInterface $request, ResponseInterface $response) { $action = $command->getName(); - if ($action == "GetObject") { + if ($action == "GetObject" || $action == "GetSnapshot") { if (isset($command['SaveAs'])) { $fp = fopen($command['SaveAs'], "wb"); $stream = $response->getBody(); @@ -116,6 +104,21 @@ class ResultTransformer { } } + $xml2JsonActions = array( + 'CreateMediaTranscodeJobs' => 1, + 'CreateMediaSnapshotJobs' => 1, + 'CreateMediaConcatJobs' => 1, + ); + if (key_exists($action, $xml2JsonActions)) { + $length = intval($result['ContentLength']); + if($length > 0){ + $content = $this->geCiContentInfo($result, $length); + $obj = simplexml_load_string($content, "SimpleXMLElement", LIBXML_NOCDATA); + $xmlData = json_decode(json_encode($obj),true); + $result['Response'] = $xmlData; + } + } + return $result; } @@ -140,9 +143,9 @@ class ResultTransformer { if (empty($tmp)) { break; } - $totol_length = (int)(unpack("N", $tmp)[1]); + $total_length = (int)(unpack("N", $tmp)[1]); $headers_length = (int)(unpack("N", $f->read(4))[1]); - $body_length = $totol_length - $headers_length - 16; + $body_length = $total_length - $headers_length - 16; $predule_crc = (int)(unpack("N", $f->read(4))[1]); $headers = array(); for ($offset = 0; $offset < $headers_length;) { diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Serializer.php b/vendor/qcloud/cos-sdk-v5/src/Serializer.php similarity index 98% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Serializer.php rename to vendor/qcloud/cos-sdk-v5/src/Serializer.php index a93778a..1999e1b 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Serializer.php +++ b/vendor/qcloud/cos-sdk-v5/src/Serializer.php @@ -1,10 +1,12 @@ 'V5', 'description' => 'Cos V5 API Service', 'operations' => array( - // 舍弃一个分块上传且删除已上传的分片块的方法. + // 舍弃一个分块上传且删除已上传的分片块 'AbortMultipartUpload' => array( 'httpMethod' => 'DELETE', 'uri' => '/{Bucket}{/Key*}', @@ -35,7 +39,7 @@ class Service { ) ) ), - // 创建存储桶(Bucket)的方法. + // 创建存储桶(Bucket) 'CreateBucket' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}', @@ -57,7 +61,7 @@ class Service { ) ) ), - // 完成整个分块上传的方法. + // 完成整个分块上传 'CompleteMultipartUpload' => array( 'httpMethod' => 'POST', 'uri' => '/{Bucket}{/Key*}', @@ -115,7 +119,7 @@ class Service { ) ) ), - // 初始化分块上传的方法. + // 初始化分块上传 'CreateMultipartUpload' => array( 'httpMethod' => 'POST', 'uri' => '/{Bucket}{/Key*}?uploads', @@ -252,7 +256,7 @@ class Service { ) ) ), - // 复制对象的方法. + // 复制对象 'CopyObject' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}{/Key*}', @@ -429,7 +433,7 @@ class Service { ) ), ), - // 删除存储桶 (Bucket)的方法. + // 删除存储桶 (Bucket) 'DeleteBucket' => array( 'httpMethod' => 'DELETE', 'uri' => '/{Bucket}', @@ -444,7 +448,7 @@ class Service { ) ) ), - // 删除跨域访问配置信息的方法 + // 删除跨域访问配置信息 'DeleteBucketCors' => array( 'httpMethod' => 'DELETE', 'uri' => '/{Bucket}?cors', @@ -459,7 +463,7 @@ class Service { ), ), ), - // 删除存储桶标签信息的方法 + // 删除存储桶标签信息 'DeleteBucketTagging' => array( 'httpMethod' => 'DELETE', 'uri' => '/{Bucket}?tagging', @@ -474,7 +478,7 @@ class Service { ), ), ), - // 删除存储桶标清单任务的方法 + // 删除存储桶标清单任务 'DeleteBucketInventory' => array( 'httpMethod' => 'Delete', 'uri' => '/{Bucket}?inventory', @@ -495,7 +499,7 @@ class Service { ) ), ), - // 删除 COS 上单个对象的方法. + // 删除 COS 上单个对象 'DeleteObject' => array( 'httpMethod' => 'DELETE', 'uri' => '/{Bucket}{/Key*}', @@ -534,7 +538,7 @@ class Service { ) ) ), - // 批量删除 COS 对象的方法. + // 批量删除 COS 对象 'DeleteObjects' => array( 'httpMethod' => 'POST', 'uri' => '/{Bucket}?delete', @@ -592,7 +596,7 @@ class Service { ) ), ), - // 删除存储桶(Bucket) 的website的方法. + // 删除存储桶(Bucket)的website 'DeleteBucketWebsite' => array( 'httpMethod' => 'DELETE', 'uri' => '/{Bucket}?website', @@ -607,7 +611,7 @@ class Service { ), ), ), - // 删除存储桶(Bucket) 的生命周期配置的方法. + // 删除存储桶(Bucket)的生命周期配置 'DeleteBucketLifecycle' => array( 'httpMethod' => 'DELETE', 'uri' => '/{Bucket}?lifecycle', @@ -622,7 +626,7 @@ class Service { ), ), ), - // 删除跨区域复制配置的方法. + // 删除跨区域复制配置 'DeleteBucketReplication' => array( 'httpMethod' => 'DELETE', 'uri' => '/{Bucket}?replication', @@ -637,7 +641,105 @@ class Service { ), ), ), - // 下载对象的方法. + // 配置对象标签 + 'PutObjectTagging' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}?tagging', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutObjectTaggingOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Tagging', + ), + 'contentMd5' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Qcloud\\Cos\\Client::explodeKey' + ) + ), + 'TagSet' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'TagRule', + 'type' => 'object', + 'sentAs' => 'Tag', + 'properties' => array( + 'Key' => array( + 'required' => true, + 'type' => 'string', + ), + 'Value' => array( + 'required' => true, + 'type' => 'string', + ), + ), + ), + ), + ), + ), + // 获取对象标签信息 + 'GetObjectTagging' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}?tagging', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetObjectTaggingOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Qcloud\\Cos\\Client::explodeKey' + ) + ) + ), + ), + // 删除对象标签 + 'DeleteObjectTagging' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}{/Key*}?tagging', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DeleteObjectTaggingOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri' + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Qcloud\\Cos\\Client::explodeKey' + ) + ) + ) + ), + // 下载对象 'GetObject' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}{/Key*}', @@ -754,7 +856,7 @@ class Service { ) ) ), - // 获取 COS 对象的访问权限信息(Access Control List, ACL)的方法. + // 获取 COS 对象的访问权限信息(Access Control List, ACL) 'GetObjectAcl' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}{/Key*}?acl', @@ -787,7 +889,7 @@ class Service { ) ) ), - // 获取存储桶(Bucket) 的访问权限信息(Access Control List, ACL)的方法. + // 获取存储桶(Bucket)的访问权限信息(Access Control List, ACL) 'GetBucketAcl' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?acl', @@ -802,7 +904,7 @@ class Service { ) ) ), - // 查询存储桶(Bucket) 跨域访问配置信息的方法. + // 查询存储桶(Bucket)跨域访问配置信息 'GetBucketCors' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?cors', @@ -817,7 +919,7 @@ class Service { ) ), ), - // 查询存储桶(Bucket) Domain配置信息的方法. + // 查询存储桶(Bucket)Domain配置信息 'GetBucketDomain' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?domain', @@ -832,7 +934,7 @@ class Service { ) ), ), - // 查询存储桶(Bucket) Accelerate配置信息的方法. + // 查询存储桶(Bucket)Accelerate配置信息 'GetBucketAccelerate' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?accelerate', @@ -847,7 +949,7 @@ class Service { ) ), ), - // 查询存储桶(Bucket) Website配置信息的方法. + // 查询存储桶(Bucket)Website配置信息 'GetBucketWebsite' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?website', @@ -862,7 +964,7 @@ class Service { ) ), ), - // 查询存储桶(Bucket) 的生命周期配置的方法. + // 查询存储桶(Bucket)的生命周期配置 'GetBucketLifecycle' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?lifecycle', @@ -877,7 +979,7 @@ class Service { ) ), ), - // 获取存储桶(Bucket)版本控制信息的方法. + // 获取存储桶(Bucket)版本控制信息 'GetBucketVersioning' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?versioning', @@ -892,7 +994,7 @@ class Service { ) ), ), - // 获取存储桶(Bucket) 跨区域复制配置信息的方法. + // 获取存储桶(Bucket)跨区域复制配置信息 'GetBucketReplication' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?replication', @@ -907,7 +1009,7 @@ class Service { ) ), ), - // 获取存储桶(Bucket) 所在的地域信息的方法. + // 获取存储桶(Bucket)所在的地域信息 'GetBucketLocation' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?location', @@ -922,7 +1024,7 @@ class Service { ), ), ), - // 获取存储桶(Bucket) Notification信息的方法. + // 获取存储桶(Bucket)Notification信息 'GetBucketNotification' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?notification', @@ -937,7 +1039,7 @@ class Service { ) ), ), - // 获取存储桶(Bucket) 日志信息的方法. + // 获取存储桶(Bucket)日志信息 'GetBucketLogging' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?logging', @@ -952,7 +1054,7 @@ class Service { ) ), ), - // 获取存储桶(Bucket) 清单信息的方法. + // 获取存储桶(Bucket)清单信息 'GetBucketInventory' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?inventory', @@ -973,7 +1075,7 @@ class Service { ) ), ), - // 获取存储桶(Bucket) 标签信息的方法. + // 获取存储桶(Bucket)标签信息 'GetBucketTagging' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?tagging', @@ -988,7 +1090,7 @@ class Service { ) ), ), - // 分块上传的方法. + // 分块上传 'UploadPart' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}{/Key*}', @@ -1019,7 +1121,6 @@ class Service { ), 'ContentMD5' => array( 'type' => array( - 'string', 'boolean' ), 'location' => 'header', @@ -1076,7 +1177,7 @@ class Service { ) ) ), - // 上传对象的方法. + // 上传对象 'PutObject' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}{/Key*}', @@ -1134,7 +1235,150 @@ class Service { ), 'ContentMD5' => array( 'type' => array( - 'string', + 'boolean' + ), + 'location' => 'header', + 'sentAs' => 'Content-MD5' + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type' + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Qcloud\\Cos\\Client::explodeKey' + ) + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-storage-class', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-website-redirect-location', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-cos-kms-key-id', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + 'PicOperations' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Pic-Operations', + ), + 'TrafficLimit' => array( + 'type' => 'integer', + 'location' => 'header', + 'sentAs' => 'x-cos-traffic-limit', + ), + 'Tagging' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-tagging', + ), + ) + ), + // 追加对象 + 'AppendObject' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}{/Key*}?append', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'AppendObjectOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'AppendObjectRequest' + ) + ), + 'parameters' => array( + 'Position' => array( + 'type' => 'integer', + 'required' => true, + 'location' => 'query', + 'sentAs' => 'position' + ), + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-acl' + ), + 'Body' => array( + 'required' => true, + 'type' => array( + 'any' + ), + 'location' => 'body' + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri' + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control' + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition' + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding' + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language' + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length' + ), + 'ContentMD5' => array( + 'type' => array( 'boolean' ), 'location' => 'header', @@ -1210,7 +1454,7 @@ class Service { ) ) ), - // 设置 COS 对象的访问权限信息(Access Control List, ACL)的方法. + // 设置 COS 对象的访问权限信息(Access Control List, ACL) 'PutObjectAcl' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}{/Key*}?acl', @@ -1318,7 +1562,7 @@ class Service { ), ) ), - // 设置存储桶(Bucket) 的访问权限(Access Control List, ACL)的方法. + // 设置存储桶(Bucket)的访问权限(Access Control List, ACL) 'PutBucketAcl' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?acl', @@ -1424,7 +1668,7 @@ class Service { ), ), ), - // 设置存储桶(Bucket) 的跨域配置信息的方法. + // 设置存储桶(Bucket)的跨域配置信息 'PutBucketCors' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?cors', @@ -1512,7 +1756,7 @@ class Service { ), ), ), - // 设置存储桶(Bucket) 的Domain信息的方法. + // 设置存储桶(Bucket)的Domain信息 'PutBucketDomain' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?domain', @@ -1563,7 +1807,7 @@ class Service { ), ), ), - // 设置存储桶(Bucket) 生命周期配置的方法. + // 设置存储桶(Bucket)生命周期配置 'PutBucketLifecycle' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?lifecycle', @@ -1690,7 +1934,7 @@ class Service { ), ), ), - // 存储桶(Bucket)版本控制的方法. + // 存储桶(Bucket)版本控制 'PutBucketVersioning' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?versioning', @@ -1724,7 +1968,7 @@ class Service { ), ), ), - // 配置存储桶(Bucket) Accelerate的方法. + // 配置存储桶(Bucket)Accelerate 'PutBucketAccelerate' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?accelerate', @@ -1747,15 +1991,10 @@ class Service { 'required' => true, 'type' => 'string', 'location' => 'xml', - ), - 'Type' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'xml', - ), + ) ), ), - // 配置存储桶(Bucket) website的方法. + // 配置存储桶(Bucket)website 'PutBucketWebsite' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?website', @@ -1850,7 +2089,7 @@ class Service { ), ), ), - // 配置存储桶(Bucket) 跨区域复制的方法. + // 配置存储桶(Bucket)跨区域复制 'PutBucketReplication' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?replication', @@ -1915,7 +2154,7 @@ class Service { ), ), ), - // 设置存储桶(Bucket) 的回调设置的方法. + // 设置存储桶(Bucket)的回调设置 'PutBucketNotification' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?notification', @@ -2001,7 +2240,7 @@ class Service { ), ), ), - // 配置存储桶(Bucket) 标签的方法. + // 配置存储桶(Bucket)标签 'PutBucketTagging' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?tagging', @@ -2042,7 +2281,7 @@ class Service { ), ), ), - //开启存储桶(Bucket) 日志服务的方法. + //开启存储桶(Bucket)日志服务 'PutBucketLogging' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?logging', @@ -2077,7 +2316,7 @@ class Service { ), ), ), - // 配置存储桶(Bucket) 清单的方法. + // 配置存储桶(Bucket)清单 'PutBucketInventory' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}?inventory', @@ -2176,7 +2415,7 @@ class Service { ), ), ), - // 回热归档对象的方法. + // 回热归档对象 'RestoreObject' => array( 'httpMethod' => 'POST', 'uri' => '/{Bucket}{/Key*}?restore', @@ -2229,7 +2468,7 @@ class Service { ), ), ), - // 查询存储桶(Bucket)中正在进行中的分块上传对象的方法. + // 查询存储桶(Bucket)中正在进行中的分块上传对象 'ListParts' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}{/Key*}', @@ -2268,7 +2507,7 @@ class Service { ) ) ), - // 查询存储桶(Bucket) 下的部分或者全部对象的方法. + // 查询存储桶(Bucket)下的部分或者全部对象 'ListObjects' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}', @@ -2308,7 +2547,7 @@ class Service { ) ) ), - // 获取所属账户的所有存储空间列表的方法. + // 获取所属账户的所有存储空间列表 'ListBuckets' => array( 'httpMethod' => 'GET', 'uri' => '/', @@ -2318,7 +2557,7 @@ class Service { 'parameters' => array( ), ), - // 获取多版本对象的方法. + // 获取多版本对象 'ListObjectVersions' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?versions', @@ -2363,7 +2602,7 @@ class Service { ) ), ), - // 获取已上传分块列表的方法 + // 获取已上传分块列表 'ListMultipartUploads' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?uploads', @@ -2408,7 +2647,7 @@ class Service { ) ), ), - // 获取清单列表的方法. + // 获取清单列表 'ListBucketInventoryConfigurations' => array( 'httpMethod' => 'GET', 'uri' => '/{Bucket}?inventory', @@ -2428,7 +2667,7 @@ class Service { ), ), ), - // 获取对象的meta信息的方法 + // 获取对象的meta信息 'HeadObject' => array( 'httpMethod' => 'HEAD', 'uri' => '/{Bucket}{/Key*}', @@ -2510,7 +2749,7 @@ class Service { ), ) ), - // 存储桶(Bucket) 是否存在的方法. + // 存储桶(Bucket)是否存在 'HeadBucket' => array( 'httpMethod' => 'HEAD', 'uri' => '/{Bucket}', @@ -2525,7 +2764,7 @@ class Service { ), ) ), - // 分块copy的方法. + // 分块copy 'UploadPartCopy' => array( 'httpMethod' => 'PUT', 'uri' => '/{Bucket}{/Key*}', @@ -2641,6 +2880,7 @@ class Service { ) ), ), + // 检索对象内容 'SelectObjectContent' => array( 'httpMethod' => 'Post', 'uri' => '/{/Key*}?select&select-type=2', @@ -3152,25 +3392,303 @@ class Service { ), ), ), - ), - 'models' => array( - 'AbortMultipartUploadOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id' - ) - ) - ), - 'CreateBucketOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Location' => array( + //图片审核 + 'GetObjectSensitiveContentRecognition' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetObjectSensitiveContentRecognitionOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, 'type' => 'string', - 'location' => 'header' + 'location' => 'uri', + ), + 'ci-process' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query' + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Qcloud\\Cos\\Client::explodeKey' + ) + ), + 'DetectType' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'detect-type' + ), + 'DetectUrl' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'detect-url' + ), + 'Interval' => array( + 'type' => 'integer', + 'location' => 'query', + 'sentAs' => 'interval' + ), + 'MaxFrames' => array( + 'type' => 'integer', + 'location' => 'query', + 'sentAs' => 'max-frames' + ), + 'BizType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'biz-type' + ) + ), + ), + // 文本审核 + 'DetectText' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}text/auditing', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DetectTextOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Request', + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Input' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'Content' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Object' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + 'Conf' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'DetectType' => array( 'type' => 'string', 'location' => 'xml', ), + 'Callback' => array( 'type' => 'string', 'location' => 'xml', ), + 'BizType' => array( 'type' => 'string', 'location' => 'xml', ), + 'CallbackVersion' => array( 'type' => 'string', 'location' => 'xml', ), + ), + ), + ), + ), + //媒体截图 + 'GetSnapshot' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetSnapshotOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Qcloud\\Cos\\Client::explodeKey' + ) + ), + 'Time' => array( + 'required' => true, + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'time' + ), + 'ci-process' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query' + ), + 'Width' => array( + 'type' => 'integer', + 'location' => 'query', + 'sentAs' => 'width' + ), + 'Height' => array( + 'type' => 'integer', + 'location' => 'query', + 'sentAs' => 'height' + ), + 'Format' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'format' + ), + 'Rotate' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'rotate' + ), + 'Mode' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'mode' + ) + ), + ), + //添加防盗链 + 'PutBucketReferer' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?referer', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutBucketRefererOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'RefererConfiguration', + ), + 'contentMd5' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Status' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'xml', + ), + 'RefererType' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'xml', + ), + 'EmptyReferConfiguration' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'xml', + ), + + 'DomainList' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'Domains' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Domain', + 'type' => 'string', + 'sentAs' => 'Domain', + ), + ) + ) + ), + ), + ), + //获取防盗链规则 + 'GetBucketReferer' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?referer', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetBucketRefererOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'RefererConfiguration', + ), + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri' + ) + ) + ), + //获取媒体信息 + 'GetMediaInfo' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetMediaInfoOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + 'filters' => array( + 'Qcloud\\Cos\\Client::explodeKey' + ) + ), + 'ci-process' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query' + ) + ), + ), + 'CreateMediaTranscodeJobs' => Descriptions::CreateMediaTranscodeJobs(), // 媒体转码 + 'CreateMediaSnapshotJobs' => Descriptions::CreateMediaSnapshotJobs(), // 媒体截图 + 'CreateMediaConcatJobs' => Descriptions::CreateMediaConcatJobs(), // 媒体拼接 + 'DetectAudio' => Descriptions::DetectAudio(), // 音频审核 + 'GetDetectAudioResult' => Descriptions::GetDetectAudioResult(), // 主动获取音频审核结果 + 'GetDetectTextResult' => Descriptions::GetDetectTextResult(), // 主动获取文本文件审核结果 + 'DetectVideo' => Descriptions::DetectVideo(), // 视频审核 + 'GetDetectVideoResult' => Descriptions::GetDetectVideoResult(), // 主动获取视频审核结果 + 'DetectDocument' => Descriptions::DetectDocument(), // 文档审核 + 'GetDetectDocumentResult' => Descriptions::GetDetectDocumentResult(), // 主动获取文档审核结果 + 'CreateDocProcessJobs' => Descriptions::CreateDocProcessJobs(), // 提交文档转码任务 + 'DescribeDocProcessQueues' => Descriptions::DescribeDocProcessQueues(), // 查询文档转码队列 + 'DescribeDocProcessJob' => Descriptions::DescribeDocProcessJob(), // 查询文档转码任务 + 'GetDescribeDocProcessJobs' => Descriptions::GetDescribeDocProcessJobs(), // 拉取符合条件的文档转码任务 + 'DetectImage' => Descriptions::DetectImage(), // 图片审核 + 'DetectImages' => Descriptions::DetectImages(), // 图片审核-批量 + ), + 'models' => array( + 'AbortMultipartUploadOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id' + ) + ) + ), + 'CreateBucketOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Location' => array( + 'type' => 'string', + 'location' => 'header' ), 'RequestId' => array( 'location' => 'header', @@ -3227,6 +3745,11 @@ class Service { 'location' => 'header', 'sentAs' => 'x-cos-request-id', ), + 'CRC' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-hash-crc64ecma', + ), 'ImageInfo' => array( 'type' => 'object', 'location' => 'xml', @@ -3388,6 +3911,11 @@ class Service { 'location' => 'header', 'sentAs' => 'x-cos-request-id', ), + 'CRC' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-hash-crc64ecma', + ) ), ), 'DeleteBucketOutput' => array( @@ -3550,6 +4078,52 @@ class Service { ), ), ), + 'PutObjectTaggingOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), + ), + ), + 'GetObjectTaggingOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'TagSet' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'sentAs' => 'Tag', + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'string', + ), + 'Value' => array( + 'type' => 'string', + ), + ), + ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), + ), + ), + 'DeleteObjectTaggingOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id' + ) + ) + ), 'GetObjectOutput' => array( 'type' => 'object', 'additionalProperties' => true, @@ -3682,7 +4256,12 @@ class Service { 'location' => 'header', 'sentAs' => 'x-cos-request-id', ), - ), + 'CRC' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-hash-crc64ecma', + ) + ), ), 'GetObjectAclOutput' => array( 'type' => 'object', @@ -3799,9 +4378,9 @@ class Service { 'data' => array( 'xmlFlattened' => true, ), - 'items' => [ + 'items' => array( 'type' => 'string', - ] + ) ), 'AllowedMethods' => array( 'type' => 'array', @@ -4393,6 +4972,11 @@ class Service { 'location' => 'header', 'sentAs' => 'x-cos-request-id', ), + 'CRC' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-hash-crc64ecma', + ) ), ), 'UploadPartCopyOutput' => array( @@ -4441,6 +5025,11 @@ class Service { 'location' => 'header', 'sentAs' => 'x-cos-request-id', ), + 'CRC' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-hash-crc64ecma', + ) ), ), 'PutBucketAclOutput' => array( @@ -4511,6 +5100,30 @@ class Service { 'instanceOf' => 'GuzzleHttp\\Psr7\\Stream', 'location' => 'body', ), + 'CRC' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-hash-crc64ecma', + ) + ), + ), + 'AppendObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'Position' => array( + 'type' => 'integer', + 'location' => 'header', + 'sentAs' => 'x-cos-next-append-position', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ) ), ), 'PutObjectAclOutput' => array( @@ -5344,6 +5957,11 @@ class Service { 'RequestId' => array( 'location' => 'header', 'sentAs' => 'x-cos-request-id', + ), + 'CRC' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-hash-crc64ecma', ) ) ), @@ -5732,6 +6350,693 @@ class Service { ), ), ), + 'GetObjectSensitiveContentRecognitionOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), + 'PornInfo' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'Code' => array( + 'type' => 'integer', + ), + 'Msg' => array( + 'type' => 'string', + ), + 'HitFlag' => array( + 'type' => 'integer', + ), + 'Score' => array( + 'type' => 'integer', + ), + 'Label' => array( + 'type' => 'string', + ) + ), + ), + ), + 'TerroristInfo' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'Code' => array( + 'type' => 'integer', + ), + 'Msg' => array( + 'type' => 'string', + ), + 'HitFlag' => array( + 'type' => 'integer', + ), + 'Score' => array( + 'type' => 'integer', + ), + 'Label' => array( + 'type' => 'string', + ) + ), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'Code' => array( + 'type' => 'integer', + ), + 'Msg' => array( + 'type' => 'string', + ), + 'HitFlag' => array( + 'type' => 'integer', + ), + 'Score' => array( + 'type' => 'integer', + ), + 'Label' => array( + 'type' => 'string', + ) + ), + ), + ), + 'AdsInfo' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'Code' => array( + 'type' => 'integer', + ), + 'Msg' => array( + 'type' => 'string', + ), + 'HitFlag' => array( + 'type' => 'integer', + ), + 'Score' => array( + 'type' => 'integer', + ), + 'Label' => array( + 'type' => 'string', + ) + ), + ), + ), + ) + ), + 'DetectTextOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-ci-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'JobsDetail' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Code' => array( 'type' => 'string', 'location' => 'xml',), + 'Message' => array( 'type' => 'string', 'location' => 'xml',), + 'JobId' => array( 'type' => 'string', 'location' => 'xml',), + 'State' => array( 'type' => 'string', 'location' => 'xml',), + 'CreationTime' => array( 'type' => 'string', 'location' => 'xml',), + 'Content' => array( 'type' => 'string', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'Result' => array( 'type' => 'integer', 'location' => 'xml',), + 'SectionCount' => array( 'type' => 'integer', 'location' => 'xml',), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Count' => array( 'type' => 'integer', 'location' => 'xml',), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Count' => array( 'type' => 'integer', 'location' => 'xml',), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Count' => array( 'type' => 'integer', 'location' => 'xml',), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Count' => array( 'type' => 'integer', 'location' => 'xml',), + ), + ), + 'IllegalInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Count' => array( 'type' => 'integer', 'location' => 'xml',), + ), + ), + 'AbuseInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Count' => array( 'type' => 'integer', 'location' => 'xml',), + ), + ), + 'Section' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'type' => 'object', + 'properties' => array( + 'StartByte' => array( 'type' => 'integer', 'location' => 'xml',), + 'Label' => array( 'type' => 'string', 'location' => 'xml',), + 'Result' => array( 'type' => 'integer', 'location' => 'xml',), + 'PornInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml',), + ), + ), + 'TerrorismInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml',), + ), + ), + 'PoliticsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml',), + ), + ), + 'AdsInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml',), + ), + ), + 'IllegalInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml',), + ), + ), + 'AbuseInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'HitFlag' => array( 'type' => 'integer', 'location' => 'xml',), + 'Score' => array( 'type' => 'integer', 'location' => 'xml',), + 'Keywords' => array( 'type' => 'string', 'location' => 'xml',), + ), + ), + ), + ), + ), + ), + ), + ), + ), + 'GetSnapshotOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Body' => array( + 'type' => 'string', + 'instanceOf' => 'GuzzleHttp\\Psr7\\Stream', + 'location' => 'body', + ), + 'DeleteMarker' => array( + 'type' => 'boolean', + 'location' => 'header', + 'sentAs' => 'x-cos-delete-marker', + ), + 'AcceptRanges' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'accept-ranges', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-expiration', + ), + 'Restore' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-restore', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Last-Modified', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'MissingMeta' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'x-cos-missing-meta', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-version-id', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentRange' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Range', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'Expires' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-website-redirect-location', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-storage-class', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'ReplicationStatus' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-replication-status', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ) + ) + ), + 'PutBucketRefererOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ) + ) + ), + 'GetBucketRefererOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id' + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'Status' => array( + 'type' => 'string', + 'location' => 'xml' + ), + 'RefererType' => array( + 'type' => 'string', + 'location' => 'xml' + ), + 'EmptyReferConfiguration' => array( + 'type' => 'string', + 'location' => 'xml' + ), + 'DomainList' => array( + 'location' => 'xml', + 'type' => 'object', + 'properties' => array( + 'Domains' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Domain', + 'type' => 'string', + 'sentAs' => 'Domain', + ), + ) + ) + ) + ) + ), + 'GetMediaInfoOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'minimum'=> 0, + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'MediaInfo' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Stream' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'JobId' => array( + 'type' => 'string', + ), + 'State' => array( + 'type' => 'string', + ), + 'Video' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Index' => array( + 'type' => 'integer', + ), + 'CodecName' => array( + 'type' => 'string', + ), + 'CodecLongName' => array( + 'type' => 'string', + ), + 'CodecTimeBase' => array( + 'type' => 'string', + ), + 'CodecTag' => array( + 'type' => 'string', + ), + 'Profile' => array( + 'type' => 'string', + ), + 'Height' => array( + 'type' => 'integer', + ), + 'Width' => array( + 'type' => 'integer', + ), + 'HasBFrame' => array( + 'type' => 'integer', + ), + 'RefFrames' => array( + 'type' => 'integer', + ), + 'Sar' => array( + 'type' => 'string', + ), + 'Dar' => array( + 'type' => 'string', + ), + 'PixFormat' => array( + 'type' => 'string', + ), + 'FieldOrder' => array( + 'type' => 'string', + ), + 'Level' => array( + 'type' => 'integer', + ), + 'Fps' => array( + 'type' => 'integer', + ), + 'AvgFps' => array( + 'type' => 'string', + ), + 'Timebase' => array( + 'type' => 'string', + ), + 'StartTime' => array( + 'type' => 'numeric', + ), + 'Duration' => array( + 'type' => 'numeric', + ), + 'Bitrate' => array( + 'type' => 'numeric', + ), + 'NumFrames' => array( + 'type' => 'integer', + ), + 'Language' => array( + 'type' => 'string', + ) + ), + 'Audio' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Index' => array( + 'type' => 'integer', + ), + 'CodecName' => array( + 'type' => 'string', + ), + 'CodecLongName' => array( + 'type' => 'string', + ), + 'CodecTimeBase' => array( + 'type' => 'string', + ), + 'CodecTagString' => array( + 'type' => 'string', + ), + 'CodecTag' => array( + 'type' => 'string', + ), + 'SampleFmt' => array( + 'type' => 'string', + ), + 'SampleRate' => array( + 'type' => 'integer', + ), + 'Channel' => array( + 'type' => 'integer', + ), + 'ChannelLayout' => array( + 'type' => 'string', + ), + 'Timebase' => array( + 'type' => 'string', + ), + 'StartTime' => array( + 'type' => 'numeric', + ), + 'Duration' => array( + 'type' => 'numeric', + ), + 'Bitrate' => array( + 'type' => 'numeric', + ), + 'Language' => array( + 'type' => 'string', + ) + ) + ), + 'Subtitle' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Index' => array( + 'type' => 'integer', + ), + 'Language' => array( + 'type' => 'string', + ) + ) + ) + ), + ) + ), + 'Format' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'NumStream' => array( + 'type' => 'integer', + ), + 'NumProgram' => array( + 'type' => 'integer', + ), + 'FormatName' => array( + 'type' => 'string', + ), + 'FormatLongName' => array( + 'type' => 'string', + ), + 'StartTime' => array( + 'type' => 'numeric', + ), + 'Duration' => array( + 'type' => 'numeric', + ), + 'Bitrate' => array( + 'type' => 'integer', + ), + 'Size' => array( + 'type' => 'integer', + ) + ) + ) + ) + ) + + + ) + ), + 'CreateMediaTranscodeJobsOutput' => Descriptions::CreateMediaTranscodeJobsOutput(), + 'CreateMediaSnapshotJobsOutput' => Descriptions::CreateMediaSnapshotJobsOutput(), + 'CreateMediaConcatJobsOutput' => Descriptions::CreateMediaConcatJobsOutput(), + 'DetectAudioOutput' => Descriptions::DetectAudioOutput(), + 'GetDetectAudioResultOutput' => Descriptions::GetDetectAudioResultOutput(), + 'GetDetectTextResultOutput' => Descriptions::GetDetectTextResultOutput(), + 'DetectVideoOutput' => Descriptions::DetectVideoOutput(), + 'GetDetectVideoResultOutput' => Descriptions::GetDetectVideoResultOutput(), + 'DetectDocumentOutput' => Descriptions::DetectDocumentOutput(), + 'GetDetectDocumentResultOutput' => Descriptions::GetDetectDocumentResultOutput(), + 'CreateDocProcessJobsOutput' => Descriptions::CreateDocProcessJobsOutput(), + 'DescribeDocProcessQueuesOutput' => Descriptions::DescribeDocProcessQueuesOutput(), + 'DescribeDocProcessJobOutput' => Descriptions::DescribeDocProcessJobOutput(), + 'GetDescribeDocProcessJobsOutput' => Descriptions::GetDescribeDocProcessJobsOutput(), + 'DetectImageOutput' => Descriptions::DetectImageOutput(), + 'DetectImagesOutput' => Descriptions::DetectImagesOutput(), ) ); } diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Signature.php b/vendor/qcloud/cos-sdk-v5/src/Signature.php similarity index 76% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Signature.php rename to vendor/qcloud/cos-sdk-v5/src/Signature.php index 8974c84..af9d6a8 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/Signature.php +++ b/vendor/qcloud/cos-sdk-v5/src/Signature.php @@ -5,24 +5,44 @@ namespace Qcloud\Cos; use Psr\Http\Message\RequestInterface; class Signature { - private $accessKey; // string: access key. - private $secretKey; + private $accessKey; + // string: secret key. + private $secretKey; + + // bool: host trigger + private $signHost; - public function __construct( $accessKey, $secretKey, $token = null ) { + public function __construct( $accessKey, $secretKey, $signHost, $token = null ) { $this->accessKey = $accessKey; $this->secretKey = $secretKey; + $this->signHost = $signHost; $this->token = $token; $this->signHeader = [ - 'host', - 'content-type', - 'content-md5', + 'cache-control', 'content-disposition', 'content-encoding', 'content-length', - 'transfer-encoding', + 'content-md5', + 'content-type', + 'expect', + 'expires', + 'host', + 'if-match', + 'if-modified-since', + 'if-none-match', + 'if-unmodified-since', + 'origin', 'range', + 'response-cache-control', + 'response-content-disposition', + 'response-content-encoding', + 'response-content-language', + 'response-content-type', + 'response-expires', + 'transfer-encoding', + 'versionid', ]; date_default_timezone_set( 'PRC' ); } @@ -46,7 +66,7 @@ class Signature { } public function createAuthorization( RequestInterface $request, $expires = '+30 minutes' ) { - if ( is_null( $expires ) ) { + if ( is_null( $expires ) || !strtotime( $expires )) { $expires = '+30 minutes'; } $signTime = ( string )( time() - 60 ) . ';' . ( string )( strtotime( $expires ) ); @@ -60,6 +80,10 @@ class Signature { } else { $value = ""; } + //host开关 + if (!$this->signHost && $key == 'host') { + continue; + } $urlParamListArray[$key] = $key. '='. $value; } } @@ -71,6 +95,9 @@ class Signature { foreach ( $request->getHeaders() as $key => $value ) { $key = strtolower( urlencode( $key ) ); $value = rawurlencode( $value[0] ); + if ( !$this->signHost && $key == 'host' ) { + continue; + } if ( $this->needCheckHeader( $key ) ) { $headerListArray[$key] = $key. '='. $value; } @@ -82,16 +109,16 @@ class Signature { "\n". $httpHeaders. "\n"; $sha1edHttpString = sha1( $httpString ); $stringToSign = "sha1\n$signTime\n$sha1edHttpString\n"; - $signKey = hash_hmac( 'sha1', $signTime, $this->secretKey ); + $signKey = hash_hmac( 'sha1', $signTime, trim($this->secretKey) ); $signature = hash_hmac( 'sha1', $stringToSign, $signKey ); - $authorization = 'q-sign-algorithm=sha1&q-ak='. $this->accessKey . + $authorization = 'q-sign-algorithm=sha1&q-ak='. trim($this->accessKey) . "&q-sign-time=$signTime&q-key-time=$signTime&q-header-list=$headerList&q-url-param-list=$urlParamList&" . "q-signature=$signature"; return $authorization; } public function createPresignedUrl( RequestInterface $request, $expires = '+30 minutes' ) { - $authorization = $this->createAuthorization( $request, $expires ); + $authorization = $this->createAuthorization( $request, $expires); $uri = $request->getUri(); $query = 'sign='.urlencode( $authorization ) . '&' . $uri->getQuery(); if ( $this->token != null ) { diff --git a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/SignatureMiddleware.php b/vendor/qcloud/cos-sdk-v5/src/SignatureMiddleware.php similarity index 65% rename from vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/SignatureMiddleware.php rename to vendor/qcloud/cos-sdk-v5/src/SignatureMiddleware.php index 78f206a..358a87e 100644 --- a/vendor/qcloud/cos-sdk-v5/src/Qcloud/Cos/SignatureMiddleware.php +++ b/vendor/qcloud/cos-sdk-v5/src/SignatureMiddleware.php @@ -2,12 +2,7 @@ namespace Qcloud\Cos; -use Qcloud\Cos\Exception\ServiceResponseException; -use GuzzleHttp\Promise\PromiseInterface; -use GuzzleHttp\Psr7; use Psr\Http\Message\RequestInterface; -use Psr\Http\Message\ResponseInterface; -use GuzzleHttp\Exception\RequestException; class SignatureMiddleware { private $nextHandler; @@ -16,9 +11,9 @@ class SignatureMiddleware { /** * @param callable $nextHandler Next handler to invoke. */ - public function __construct(callable $nextHandler, $accessKey, $secretKey) { + public function __construct(callable $nextHandler, $accessKey, $secretKey, $signHost) { $this->nextHandler = $nextHandler; - $this->signature = new Signature($accessKey, $secretKey); + $this->signature = new Signature($accessKey, $secretKey, $signHost); } public function __invoke(RequestInterface $request, array $options) { diff --git a/vendor/qiniu/php-sdk/.github/workflows/test-ci.yml b/vendor/qiniu/php-sdk/.github/workflows/test-ci.yml new file mode 100644 index 0000000..a3f76f1 --- /dev/null +++ b/vendor/qiniu/php-sdk/.github/workflows/test-ci.yml @@ -0,0 +1,44 @@ +name: PHP CI with Composer + +on: + push: + paths-ignore: + - '**.md' + +jobs: + build: + strategy: + fail-fast: false + max-parallel: 1 + matrix: + php-versions: ['5.4', '5.5', '5.6', '7.0'] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup php + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-versions }} + + - name: Install dependencies + run: | + composer self-update + composer install --no-interaction --prefer-source --dev + + - name: Run cases + run: | + ./vendor/bin/phpcs --standard=PSR2 src + ./vendor/bin/phpcs --standard=PSR2 examples + ./vendor/bin/phpcs --standard=PSR2 tests + ./vendor/bin/phpunit --coverage-clover=coverage.xml + + env: + QINIU_ACCESS_KEY: ${{ secrets.QINIU_ACCESS_KEY }} + QINIU_SECRET_KEY: ${{ secrets.QINIU_SECRET_KEY }} + QINIU_TEST_BUCKET: ${{ secrets.QINIU_TEST_BUCKET }} + QINIU_TEST_DOMAIN: ${{ secrets.QINIU_TEST_DOMAIN }} + + - name: After_success + run: bash <(curl -s https://codecov.io/bash) diff --git a/vendor/qiniu/php-sdk/.travis.yml b/vendor/qiniu/php-sdk/.travis.yml deleted file mode 100644 index 1f0ba27..0000000 --- a/vendor/qiniu/php-sdk/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -language: php - -php: - - 5.4 - - 5.5 - - 5.6 - - 7.0 - -dist: trusty -os: linux - -before_script: - - export QINIU_TEST_ENV="travis" - - travis_retry composer self-update - - travis_retry composer install --no-interaction --prefer-source --dev - -script: - - ./vendor/bin/phpcs --standard=PSR2 src - - ./vendor/bin/phpcs --standard=PSR2 examples - - ./vendor/bin/phpcs --standard=PSR2 tests - - ./vendor/bin/phpunit --coverage-clover=coverage.xml - -env: - global: - - QINIU_ACCESS_KEY=vHg2e7nOh7Jsucv2Azr5FH6omPgX22zoJRWa0FN5 - - secure: "V9BsntXQZwvO9EOD6itzaae2uq+GemzyTUTxMTJx1/jFoUNpCU2O2UAgjA2XSEr5sgci0KWDV4Krbzv3EBB4uplOFLMI3w32256UHbT9E0x3YjhfPJZk68MH1iS1be7X81LDHON7yveavK8987s3qzjeUcbfLSPgccT+cvf7+dc=" - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/qiniu/php-sdk/CHANGELOG.md b/vendor/qiniu/php-sdk/CHANGELOG.md index 469ae4b..9136207 100644 --- a/vendor/qiniu/php-sdk/CHANGELOG.md +++ b/vendor/qiniu/php-sdk/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 7.4.1(2021-09-24) +* 修复了 分片上传 v2 已知问题,明确给出了参数不合理情况下对应的错误提示信息 + +## 7.4.0 (2021-07-19) +* 【对象存储】支持 [分片上传 v2](https://developer.qiniu.com/kodo/7458/multipartupload) 和 断点续传,使用方式见 [开发者文档](https://developer.qiniu.com/kodo/1241/php#resume-upload-file) + ## 7.3.0 (2020-09-24) ### 新增 * 【对象存储】增加异步抓取方法与demo diff --git a/vendor/qiniu/php-sdk/composer.json b/vendor/qiniu/php-sdk/composer.json index 52544fe..27f26b6 100644 --- a/vendor/qiniu/php-sdk/composer.json +++ b/vendor/qiniu/php-sdk/composer.json @@ -2,7 +2,12 @@ "name": "qiniu/php-sdk", "type": "library", "description": "Qiniu Resource (Cloud) Storage SDK for PHP", - "keywords": ["qiniu", "storage", "sdk", "cloud"], + "keywords": [ + "qiniu", + "storage", + "sdk", + "cloud" + ], "homepage": "http://developer.qiniu.com/", "license": "MIT", "authors": [ @@ -16,11 +21,16 @@ "php": ">=5.3.3" }, "require-dev": { + "paragonie/random_compat": ">=2", "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.3" + "squizlabs/php_codesniffer": "~3.6" }, "autoload": { - "psr-4": {"Qiniu\\": "src/Qiniu"}, - "files": ["src/Qiniu/functions.php"] + "psr-4": { + "Qiniu\\": "src/Qiniu" + }, + "files": [ + "src/Qiniu/functions.php" + ] } } diff --git a/vendor/qiniu/php-sdk/examples/upload_multi_demos.php b/vendor/qiniu/php-sdk/examples/upload_multi_demos.php index 0724d38..d724235 100644 --- a/vendor/qiniu/php-sdk/examples/upload_multi_demos.php +++ b/vendor/qiniu/php-sdk/examples/upload_multi_demos.php @@ -49,7 +49,7 @@ if ($err !== null) { $policy = array( 'callbackUrl' => 'http://172.30.251.210/upload_verify_callback.php', 'callbackBody' => 'filename=$(fname)&filesize=$(fsize)' -// 'callbackBodyType' => 'application/json', +// 'callbackBodyType' => 'application/json', // 'callbackBody' => '{"filename":$(fname), "filesize": $(fsize)}' //设置application/json格式回调 ); $token = $auth->uploadToken($bucket, null, 3600, $policy); diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Config.php b/vendor/qiniu/php-sdk/src/Qiniu/Config.php index 659443e..77c4238 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Config.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Config.php @@ -3,7 +3,7 @@ namespace Qiniu; final class Config { - const SDK_VER = '7.3.0'; + const SDK_VER = '7.4.1'; const BLOCK_SIZE = 4194304; //4*1024*1024 分块上传块大小,该参数为接口规格,不能修改 diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php b/vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php index 0fe03ce..d6d4d63 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Http/Client.php @@ -152,7 +152,7 @@ final class Client $replace = array("\\\\", "\\\""); return str_replace($find, $replace, $str); } - + private static function ucwordsHyphen($str) { return str_replace('- ', '-', ucwords(str_replace('-', '- ', $str))); diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Http/Response.php b/vendor/qiniu/php-sdk/src/Qiniu/Http/Response.php index 4f54663..2008cc6 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Http/Response.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Http/Response.php @@ -128,6 +128,16 @@ final class Response return $this->jsonData; } + public function headers() + { + return $this->headers; + } + + public function body() + { + return $this->body; + } + private static function bodyJson($body) { return \Qiniu\json_decode((string) $body, true, 512); diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Storage/ResumeUploader.php b/vendor/qiniu/php-sdk/src/Qiniu/Storage/ResumeUploader.php index 38722a2..45829b8 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Storage/ResumeUploader.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Storage/ResumeUploader.php @@ -22,9 +22,14 @@ final class ResumeUploader private $params; private $mime; private $contexts; + private $finishedEtags; private $host; + private $bucket; private $currentUrl; private $config; + private $resumeRecordFile; + private $version; + private $partSize; /** * 上传二进制流到七牛 @@ -36,6 +41,9 @@ final class ResumeUploader * @param string $params 自定义变量 * @param string $mime 上传数据的mimeType * @param string $config + * @param string $resumeRecordFile 断点续传的已上传的部分信息记录文件 + * @param string $version 分片上传版本 目前支持v1/v2版本 默认v1 + * @param string $partSize 分片上传v2字段 默认大小为4MB 分片大小范围为1 MB - 1 GB * * @link http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar */ @@ -46,7 +54,10 @@ final class ResumeUploader $size, $params, $mime, - $config + $config, + $resumeRecordFile = null, + $version = 'v1', + $partSize = config::BLOCK_SIZE ) { $this->upToken = $upToken; @@ -56,9 +67,14 @@ final class ResumeUploader $this->params = $params; $this->mime = $mime; $this->contexts = array(); + $this->finishedEtags = array("etags"=>array(), "uploadId"=>"", "expiredAt"=>0, "uploaded"=>0); $this->config = $config; + $this->resumeRecordFile = $resumeRecordFile ? $resumeRecordFile : null; + $this->version = $version ? $version : 'v1'; + $this->partSize = $partSize ? $partSize : config::BLOCK_SIZE; list($accessKey, $bucket, $err) = \Qiniu\explodeUpToken($upToken); + $this->bucket = $bucket; if ($err != null) { return array(null, $err); } @@ -76,14 +92,94 @@ final class ResumeUploader public function upload($fname) { $uploaded = 0; + if ($this->version == 'v2') { + $partNumber = 1; + $encodedObjectName = $this->key? \Qiniu\base64_urlSafeEncode($this->key) : '~'; + }; + // get upload record from resumeRecordFile + if ($this->resumeRecordFile != null) { + $blkputRets = null; + if (file_exists($this->resumeRecordFile)) { + $stream = fopen($this->resumeRecordFile, 'r'); + if ($stream) { + $streamLen = filesize($this->resumeRecordFile); + if ($streamLen > 0) { + $contents = fread($stream, $streamLen); + fclose($stream); + if ($contents) { + $blkputRets = json_decode($contents, true); + if ($blkputRets === null) { + error_log("resumeFile contents decode error"); + } + } else { + error_log("read resumeFile failed"); + } + } else { + error_log("resumeFile is empty"); + } + } else { + error_log("resumeFile open failed"); + } + } else { + error_log("resumeFile not exists"); + } + + if ($blkputRets) { + if ($this->version == 'v1') { + if (isset($blkputRets['contexts']) && isset($blkputRets['uploaded']) && + is_array($blkputRets['contexts']) && is_int($blkputRets['uploaded'])) { + $this->contexts = $blkputRets['contexts']; + $uploaded = $blkputRets['uploaded']; + } + } elseif ($this->version == 'v2') { + if (isset($blkputRets["etags"]) && isset($blkputRets["uploadId"]) && + isset($blkputRets["expiredAt"]) && $blkputRets["expiredAt"] > time() + && $blkputRets["uploaded"] > 0 && is_array($blkputRets["etags"]) && + is_string($blkputRets["uploadId"]) && is_int($blkputRets["expiredAt"])) { + $this->finishedEtags['etags'] = $blkputRets["etags"]; + $this->finishedEtags["uploadId"] = $blkputRets["uploadId"]; + $this->finishedEtags["expiredAt"] = $blkputRets["expiredAt"]; + $this->finishedEtags["uploaded"] = $blkputRets["uploaded"]; + $uploaded = $blkputRets["uploaded"]; + $partNumber = count($this->finishedEtags["etags"]) + 1; + } else { + $this->makeInitReq($encodedObjectName); + } + } else { + throw new \Exception("only support v1/v2 now!"); + } + } else { + if ($this->version == 'v2') { + $this->makeInitReq($encodedObjectName); + } + } + } else { + // init a Multipart Upload task if choose v2 + if ($this->version == 'v2') { + $this->makeInitReq($encodedObjectName); + } + } + while ($uploaded < $this->size) { $blockSize = $this->blockSize($uploaded); $data = fread($this->inputStream, $blockSize); if ($data === false) { throw new \Exception("file read failed", 1); } - $crc = \Qiniu\crc32_data($data); - $response = $this->makeBlock($data, $blockSize); + if ($this->version == 'v1') { + $crc = \Qiniu\crc32_data($data); + $response = $this->makeBlock($data, $blockSize); + } else { + $md5 = md5($data); + $response = $this->uploadPart( + $data, + $partNumber, + $this->finishedEtags["uploadId"], + $encodedObjectName, + $md5 + ); + } + $ret = null; if ($response->ok() && $response->json() != null) { $ret = $response->json(); @@ -93,22 +189,70 @@ final class ResumeUploader if ($err != null) { return array(null, $err); } - $upHostBackup = $this->config->getUpBackupHost($accessKey, $bucket); $this->host = $upHostBackup; } - if ($response->needRetry() || !isset($ret['crc32']) || $crc != $ret['crc32']) { - $response = $this->makeBlock($data, $blockSize); - $ret = $response->json(); - } - if (!$response->ok() || !isset($ret['crc32']) || $crc != $ret['crc32']) { - return array(null, new Error($this->currentUrl, $response)); + if ($this->version == 'v1') { + if ($response->needRetry() || !isset($ret['crc32']) || $crc != $ret['crc32']) { + $response = $this->makeBlock($data, $blockSize); + $ret = $response->json(); + } + + if (!$response->ok() || !isset($ret['crc32']) || $crc != $ret['crc32']) { + return array(null, new Error($this->currentUrl, $response)); + } + array_push($this->contexts, $ret['ctx']); + } else { + if ($response->needRetry() || !isset($ret['md5']) || $md5 != $ret['md5']) { + $response = $this->uploadPart( + $data, + $partNumber, + $this->finishedEtags["uploadId"], + $encodedObjectName, + $md5 + ); + $ret = $response->json(); + } + + if (!$response->ok() || !isset($ret['md5']) || $md5 != $ret['md5']) { + return array(null, new Error($this->currentUrl, $response)); + } + $blockStatus = array('etag' => $ret['etag'], 'partNumber' => $partNumber); + array_push($this->finishedEtags['etags'], $blockStatus); + $partNumber += 1; } - array_push($this->contexts, $ret['ctx']); + $uploaded += $blockSize; + if ($this->version == 'v2') { + $this->finishedEtags['uploaded'] = $uploaded; + } + + if ($this->resumeRecordFile !== null) { + if ($this->version == 'v1') { + $recordData = array( + 'contexts' => $this->contexts, + 'uploaded' => $uploaded + ); + $recordData = json_encode($recordData); + } else { + $recordData = json_encode($this->finishedEtags); + } + if ($recordData) { + $isWritten = file_put_contents($this->resumeRecordFile, $recordData); + if ($isWritten === false) { + error_log("write resumeRecordFile failed"); + } + } else { + error_log('resumeRecordData encode failed'); + } + } + } + if ($this->version == 'v1') { + return $this->makeFile($fname); + } else { + return $this->completeParts($fname, $this->finishedEtags['uploadId'], $encodedObjectName); } - return $this->makeFile($fname); } /** @@ -163,9 +307,102 @@ final class ResumeUploader private function blockSize($uploaded) { - if ($this->size < $uploaded + Config::BLOCK_SIZE) { + if ($this->size < $uploaded + $this->partSize) { return $this->size - $uploaded; } - return Config::BLOCK_SIZE; + return $this->partSize; + } + + private function makeInitReq($encodedObjectName) + { + $res = $this->initReq($encodedObjectName); + $this->finishedEtags["uploadId"] = $res['uploadId']; + $this->finishedEtags["expiredAt"] = $res['expireAt']; + } + + /** + * 初始化上传任务 + */ + private function initReq($encodedObjectName) + { + $url = $this->host.'/buckets/'.$this->bucket.'/objects/'.$encodedObjectName.'/uploads'; + $headers = array( + 'Authorization' => 'UpToken ' . $this->upToken, + 'Content-Type' => 'application/json' + ); + $response = $this->postWithHeaders($url, null, $headers); + return $response->json(); + } + + /** + * 分块上传v2 + */ + private function uploadPart($block, $partNumber, $uploadId, $encodedObjectName, $md5) + { + $headers = array( + 'Authorization' => 'UpToken ' . $this->upToken, + 'Content-Type' => 'application/octet-stream', + 'Content-MD5' => $md5 + ); + $url = $this->host.'/buckets/'.$this->bucket.'/objects/'.$encodedObjectName. + '/uploads/'.$uploadId.'/'.$partNumber; + $response = $this->put($url, $block, $headers); + return $response; + } + + private function completeParts($fname, $uploadId, $encodedObjectName) + { + $headers = array( + 'Authorization' => 'UpToken '.$this->upToken, + 'Content-Type' => 'application/json' + ); + $etags = $this->finishedEtags['etags']; + $sortedEtags = \Qiniu\arraySort($etags, 'partNumber'); + $metadata = array(); + $customVars = array(); + if ($this->params) { + foreach ($this->params as $k => $v) { + if (strpos($k, 'x:') === 0) { + $customVars[$k] = $v; + } elseif (strpos($k, 'x-qn-meta-') === 0) { + $metadata[$k] = $v; + } + } + } + if (empty($metadata)) { + $metadata = null; + } + if (empty($customVars)) { + $customVars = null; + } + $body = array( + 'fname' => $fname, + 'mimeType' => $this->mime, + 'metadata' => $metadata, + 'customVars' => $customVars, + 'parts' => $sortedEtags + ); + $jsonBody = json_encode($body); + $url = $this->host.'/buckets/'.$this->bucket.'/objects/'.$encodedObjectName.'/uploads/'.$uploadId; + $response = $this->postWithHeaders($url, $jsonBody, $headers); + if ($response->needRetry()) { + $response = $this->postWithHeaders($url, $jsonBody, $headers); + } + if (!$response->ok()) { + return array(null, new Error($this->currentUrl, $response)); + } + return array($response->json(), null); + } + + private function put($url, $data, $headers) + { + $this->currentUrl = $url; + return Client::put($url, $data, $headers); + } + + private function postWithHeaders($url, $data, $headers) + { + $this->currentUrl = $url; + return Client::post($url, $data, $headers); } } diff --git a/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php b/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php index 8fbd504..eb7db96 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/Storage/UploadManager.php @@ -48,7 +48,7 @@ final class UploadManager $mime = 'application/octet-stream', $fname = "default_filename" ) { - + $params = self::trimParams($params); return FormUploader::put( $upToken, @@ -72,7 +72,9 @@ final class UploadManager * http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar * @param $mime 上传数据的mimeType * @param $checkCrc 是否校验crc32 - * + * @param $version 分片上传版本 目前支持v1/v2版本 默认v1 + * @param $partSize 分片上传v2字段 默认大小为4MB 分片大小范围为1 MB - 1 GB + * @param $resumeRecordFile 断点续传文件路径 默认为null * @return array 包含已上传文件的信息,类似: * [ * "hash" => "", @@ -85,9 +87,12 @@ final class UploadManager $filePath, $params = null, $mime = 'application/octet-stream', - $checkCrc = false + $checkCrc = false, + $resumeRecordFile = null, + $version = 'v1', + $partSize = config::BLOCK_SIZE ) { - + $file = fopen($filePath, 'rb'); if ($file === false) { throw new \Exception("file can not open", 1); @@ -119,7 +124,10 @@ final class UploadManager $size, $params, $mime, - $this->config + $this->config, + $resumeRecordFile, + $version, + $partSize ); $ret = $up->upload(basename($filePath)); fclose($file); diff --git a/vendor/qiniu/php-sdk/src/Qiniu/functions.php b/vendor/qiniu/php-sdk/src/Qiniu/functions.php index 0a82445..6f87905 100644 --- a/vendor/qiniu/php-sdk/src/Qiniu/functions.php +++ b/vendor/qiniu/php-sdk/src/Qiniu/functions.php @@ -64,6 +64,23 @@ if (!defined('QINIU_FUNCTIONS_VERSION')) { return base64_decode(str_replace($find, $replace, $str)); } + /** + * 二维数组根据某个字段排序 + * @param array $array 要排序的数组 + * @param string $key 要排序的键 + * @param string $sort 排序类型 SORT_ASC SORT_DESC + * return array 排序后的数组 + */ + function arraySort($array, $key, $sort = SORT_ASC) + { + $keysValue = array(); + foreach ($array as $k => $v) { + $keysValue[$k] = $v[$key]; + } + array_multisort($keysValue, $sort, $array); + return $array; + } + /** * Wrapper for JSON decode that implements error detection with helpful * error messages. diff --git a/vendor/symfony/polyfill-mbstring/Mbstring.php b/vendor/symfony/polyfill-mbstring/Mbstring.php index c31611f..b599095 100644 --- a/vendor/symfony/polyfill-mbstring/Mbstring.php +++ b/vendor/symfony/polyfill-mbstring/Mbstring.php @@ -69,14 +69,15 @@ final class Mbstring { public const MB_CASE_FOLD = \PHP_INT_MAX; - private static $encodingList = ['ASCII', 'UTF-8']; - private static $language = 'neutral'; - private static $internalEncoding = 'UTF-8'; - private static $caseFold = [ + private const CASE_FOLD = [ ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], ]; + private static $encodingList = ['ASCII', 'UTF-8']; + private static $language = 'neutral'; + private static $internalEncoding = 'UTF-8'; + public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null) { if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) { @@ -300,7 +301,7 @@ final class Mbstring $map = $upper; } else { if (self::MB_CASE_FOLD === $mode) { - $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s); + $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); } static $lower = null; diff --git a/vendor/symfony/polyfill-php80/README.md b/vendor/symfony/polyfill-php80/README.md index eaa3050..10b8ee4 100644 --- a/vendor/symfony/polyfill-php80/README.md +++ b/vendor/symfony/polyfill-php80/README.md @@ -16,7 +16,7 @@ This component provides features added to PHP 8.0 core: - [`get_resource_id`](https://php.net/get_resource_id) More information can be found in the -[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). License ======= diff --git a/vendor/symfony/polyfill-php80/bootstrap.php b/vendor/symfony/polyfill-php80/bootstrap.php index 4f791f9..e5f7dbc 100644 --- a/vendor/symfony/polyfill-php80/bootstrap.php +++ b/vendor/symfony/polyfill-php80/bootstrap.php @@ -26,13 +26,13 @@ if (!function_exists('preg_last_error_msg')) { function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); } } if (!function_exists('str_contains')) { - function str_contains(string $haystack, string $needle): bool { return p\Php80::str_contains($haystack, $needle); } + function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); } } if (!function_exists('str_starts_with')) { - function str_starts_with(string $haystack, string $needle): bool { return p\Php80::str_starts_with($haystack, $needle); } + function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); } } if (!function_exists('str_ends_with')) { - function str_ends_with(string $haystack, string $needle): bool { return p\Php80::str_ends_with($haystack, $needle); } + function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); } } if (!function_exists('get_debug_type')) { function get_debug_type($value): string { return p\Php80::get_debug_type($value); } diff --git a/vendor/symfony/var-dumper/Caster/ClassStub.php b/vendor/symfony/var-dumper/Caster/ClassStub.php index 612a7ca..48f8483 100644 --- a/vendor/symfony/var-dumper/Caster/ClassStub.php +++ b/vendor/symfony/var-dumper/Caster/ClassStub.php @@ -55,7 +55,7 @@ class ClassStub extends ConstStub } } - if (false !== strpos($identifier, "@anonymous\0")) { + if (str_contains($identifier, "@anonymous\0")) { $this->value = $identifier = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) { return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0]; }, $identifier); @@ -65,7 +65,7 @@ class ClassStub extends ConstStub $s = ReflectionCaster::castFunctionAbstract($r, [], new Stub(), true, Caster::EXCLUDE_VERBOSE); $s = ReflectionCaster::getSignature($s); - if ('()' === substr($identifier, -2)) { + if (str_ends_with($identifier, '()')) { $this->value = substr_replace($identifier, $s, -2); } else { $this->value .= $s; diff --git a/vendor/symfony/var-dumper/Caster/DateCaster.php b/vendor/symfony/var-dumper/Caster/DateCaster.php index 171fbde..1b195f4 100644 --- a/vendor/symfony/var-dumper/Caster/DateCaster.php +++ b/vendor/symfony/var-dumper/Caster/DateCaster.php @@ -49,7 +49,7 @@ class DateCaster public static function castInterval(\DateInterval $interval, array $a, Stub $stub, $isNested, $filter) { - $now = new \DateTimeImmutable(); + $now = new \DateTimeImmutable('@0', new \DateTimeZone('UTC')); $numberOfSeconds = $now->add($interval)->getTimestamp() - $now->getTimestamp(); $title = number_format($numberOfSeconds, 0, '.', ' ').'s'; @@ -63,7 +63,8 @@ class DateCaster $format = '%R '; if (0 === $i->y && 0 === $i->m && ($i->h >= 24 || $i->i >= 60 || $i->s >= 60)) { - $i = date_diff($d = new \DateTime(), date_add(clone $d, $i)); // recalculate carry over points + $d = new \DateTimeImmutable('@0', new \DateTimeZone('UTC')); + $i = $d->diff($d->add($i)); // recalculate carry over points $format .= 0 < $i->days ? '%ad ' : ''; } else { $format .= ($i->y ? '%yy ' : '').($i->m ? '%mm ' : '').($i->d ? '%dd ' : ''); diff --git a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php index 3ea1752..f2c0f96 100644 --- a/vendor/symfony/var-dumper/Caster/ExceptionCaster.php +++ b/vendor/symfony/var-dumper/Caster/ExceptionCaster.php @@ -149,7 +149,7 @@ class ExceptionCaster $f = self::castFrameStub($frame, [], $frame, true); if (isset($f[$prefix.'src'])) { foreach ($f[$prefix.'src']->value as $label => $frame) { - if (0 === strpos($label, "\0~collapse=0")) { + if (str_starts_with($label, "\0~collapse=0")) { if ($collapse) { $label = substr_replace($label, '1', 11, 1); } else { @@ -214,18 +214,24 @@ class ExceptionCaster if (file_exists($f['file']) && 0 <= self::$srcContext) { if (!empty($f['class']) && (is_subclass_of($f['class'], 'Twig\Template') || is_subclass_of($f['class'], 'Twig_Template')) && method_exists($f['class'], 'getDebugInfo')) { - $template = $f['object'] ?? unserialize(sprintf('O:%d:"%s":0:{}', \strlen($f['class']), $f['class'])); - - $ellipsis = 0; - $templateSrc = method_exists($template, 'getSourceContext') ? $template->getSourceContext()->getCode() : (method_exists($template, 'getSource') ? $template->getSource() : ''); - $templateInfo = $template->getDebugInfo(); - if (isset($templateInfo[$f['line']])) { - if (!method_exists($template, 'getSourceContext') || !file_exists($templatePath = $template->getSourceContext()->getPath())) { - $templatePath = null; - } - if ($templateSrc) { - $src = self::extractSource($templateSrc, $templateInfo[$f['line']], self::$srcContext, 'twig', $templatePath, $f); - $srcKey = ($templatePath ?: $template->getTemplateName()).':'.$templateInfo[$f['line']]; + $template = null; + if (isset($f['object'])) { + $template = $f['object']; + } elseif ((new \ReflectionClass($f['class']))->isInstantiable()) { + $template = unserialize(sprintf('O:%d:"%s":0:{}', \strlen($f['class']), $f['class'])); + } + if (null !== $template) { + $ellipsis = 0; + $templateSrc = method_exists($template, 'getSourceContext') ? $template->getSourceContext()->getCode() : (method_exists($template, 'getSource') ? $template->getSource() : ''); + $templateInfo = $template->getDebugInfo(); + if (isset($templateInfo[$f['line']])) { + if (!method_exists($template, 'getSourceContext') || !file_exists($templatePath = $template->getSourceContext()->getPath())) { + $templatePath = null; + } + if ($templateSrc) { + $src = self::extractSource($templateSrc, $templateInfo[$f['line']], self::$srcContext, 'twig', $templatePath, $f); + $srcKey = ($templatePath ?: $template->getTemplateName()).':'.$templateInfo[$f['line']]; + } } } } @@ -281,7 +287,7 @@ class ExceptionCaster } unset($a[$xPrefix.'string'], $a[Caster::PREFIX_DYNAMIC.'xdebug_message'], $a[Caster::PREFIX_DYNAMIC.'__destructorException']); - if (isset($a[Caster::PREFIX_PROTECTED.'message']) && false !== strpos($a[Caster::PREFIX_PROTECTED.'message'], "@anonymous\0")) { + if (isset($a[Caster::PREFIX_PROTECTED.'message']) && str_contains($a[Caster::PREFIX_PROTECTED.'message'], "@anonymous\0")) { $a[Caster::PREFIX_PROTECTED.'message'] = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) { return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0]; }, $a[Caster::PREFIX_PROTECTED.'message']); diff --git a/vendor/symfony/var-dumper/Caster/LinkStub.php b/vendor/symfony/var-dumper/Caster/LinkStub.php index 6360716..c619d9d 100644 --- a/vendor/symfony/var-dumper/Caster/LinkStub.php +++ b/vendor/symfony/var-dumper/Caster/LinkStub.php @@ -23,7 +23,7 @@ class LinkStub extends ConstStub private static $vendorRoots; private static $composerRoots; - public function __construct($label, int $line = 0, $href = null) + public function __construct(string $label, int $line = 0, string $href = null) { $this->value = $label; @@ -33,12 +33,12 @@ class LinkStub extends ConstStub if (!\is_string($href)) { return; } - if (0 === strpos($href, 'file://')) { + if (str_starts_with($href, 'file://')) { if ($href === $label) { $label = substr($label, 7); } $href = substr($href, 7); - } elseif (false !== strpos($href, '://')) { + } elseif (str_contains($href, '://')) { $this->attr['href'] = $href; return; @@ -69,7 +69,7 @@ class LinkStub extends ConstStub self::$vendorRoots = []; foreach (get_declared_classes() as $class) { - if ('C' === $class[0] && 0 === strpos($class, 'ComposerAutoloaderInit')) { + if ('C' === $class[0] && str_starts_with($class, 'ComposerAutoloaderInit')) { $r = new \ReflectionClass($class); $v = \dirname($r->getFileName(), 2); if (file_exists($v.'/composer/installed.json')) { @@ -85,7 +85,7 @@ class LinkStub extends ConstStub } foreach (self::$vendorRoots as $root) { - if ($inVendor = 0 === strpos($file, $root)) { + if ($inVendor = str_starts_with($file, $root)) { return $root; } } diff --git a/vendor/symfony/var-dumper/Caster/MemcachedCaster.php b/vendor/symfony/var-dumper/Caster/MemcachedCaster.php index 942eecb..696cef1 100644 --- a/vendor/symfony/var-dumper/Caster/MemcachedCaster.php +++ b/vendor/symfony/var-dumper/Caster/MemcachedCaster.php @@ -71,7 +71,7 @@ class MemcachedCaster $optionConstants = []; foreach ($reflectedMemcached->getConstants() as $constantKey => $value) { - if (0 === strpos($constantKey, 'OPT_')) { + if (str_starts_with($constantKey, 'OPT_')) { $optionConstants[$constantKey] = $value; } } diff --git a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php index 95c1dbf..819a618 100644 --- a/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +++ b/vendor/symfony/var-dumper/Caster/ReflectionCaster.php @@ -42,7 +42,7 @@ class ReflectionCaster $a = static::castFunctionAbstract($c, $a, $stub, $isNested, $filter); - if (false === strpos($c->name, '{closure}')) { + if (!str_contains($c->name, '{closure}')) { $stub->class = isset($a[$prefix.'class']) ? $a[$prefix.'class']->value.'::'.$c->name : $c->name; unset($a[$prefix.'class']); } @@ -102,7 +102,7 @@ class ReflectionCaster $prefix.'allowsNull' => $c->allowsNull(), $prefix.'isBuiltin' => $c->isBuiltin(), ]; - } elseif ($c instanceof \ReflectionUnionType) { + } elseif ($c instanceof \ReflectionUnionType || $c instanceof \ReflectionIntersectionType) { $a[$prefix.'allowsNull'] = $c->allowsNull(); self::addMap($a, $c, [ 'types' => 'getTypes', @@ -353,9 +353,11 @@ class ReflectionCaster } elseif (\is_array($v)) { $signature .= $v ? '[…'.\count($v).']' : '[]'; } elseif (\is_string($v)) { - $signature .= 10 > \strlen($v) && false === strpos($v, '\\') ? "'{$v}'" : "'…".\strlen($v)."'"; + $signature .= 10 > \strlen($v) && !str_contains($v, '\\') ? "'{$v}'" : "'…".\strlen($v)."'"; } elseif (\is_bool($v)) { $signature .= $v ? 'true' : 'false'; + } elseif (\is_object($v)) { + $signature .= 'new '.substr(strrchr('\\'.get_debug_type($v), '\\'), 1); } else { $signature .= $v; } diff --git a/vendor/symfony/var-dumper/Caster/ResourceCaster.php b/vendor/symfony/var-dumper/Caster/ResourceCaster.php index 5a7c428..a3278a8 100644 --- a/vendor/symfony/var-dumper/Caster/ResourceCaster.php +++ b/vendor/symfony/var-dumper/Caster/ResourceCaster.php @@ -48,7 +48,7 @@ class ResourceCaster public static function castStream($stream, array $a, Stub $stub, $isNested) { $a = stream_get_meta_data($stream) + static::castStreamContext($stream, $a, $stub, $isNested); - if (isset($a['uri'])) { + if ($a['uri'] ?? false) { $a['uri'] = new LinkStub($a['uri']); } diff --git a/vendor/symfony/var-dumper/Caster/SplCaster.php b/vendor/symfony/var-dumper/Caster/SplCaster.php index 5abc51a..be9d66b 100644 --- a/vendor/symfony/var-dumper/Caster/SplCaster.php +++ b/vendor/symfony/var-dumper/Caster/SplCaster.php @@ -129,7 +129,7 @@ class SplCaster } } - if (isset($a[$prefix.'realPath'])) { + if ($a[$prefix.'realPath'] ?? false) { $a[$prefix.'realPath'] = new LinkStub($a[$prefix.'realPath']); } diff --git a/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php b/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php index 19bf6a3..e7a0f64 100644 --- a/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php +++ b/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php @@ -44,6 +44,22 @@ class XmlReaderCaster public static function castXmlReader(\XMLReader $reader, array $a, Stub $stub, $isNested) { + try { + $properties = [ + 'LOADDTD' => @$reader->getParserProperty(\XMLReader::LOADDTD), + 'DEFAULTATTRS' => @$reader->getParserProperty(\XMLReader::DEFAULTATTRS), + 'VALIDATE' => @$reader->getParserProperty(\XMLReader::VALIDATE), + 'SUBST_ENTITIES' => @$reader->getParserProperty(\XMLReader::SUBST_ENTITIES), + ]; + } catch (\Error $e) { + $properties = [ + 'LOADDTD' => false, + 'DEFAULTATTRS' => false, + 'VALIDATE' => false, + 'SUBST_ENTITIES' => false, + ]; + } + $props = Caster::PREFIX_VIRTUAL.'parserProperties'; $info = [ 'localName' => $reader->localName, @@ -57,12 +73,7 @@ class XmlReaderCaster 'value' => $reader->value, 'namespaceURI' => $reader->namespaceURI, 'baseURI' => $reader->baseURI ? new LinkStub($reader->baseURI) : $reader->baseURI, - $props => [ - 'LOADDTD' => $reader->getParserProperty(\XMLReader::LOADDTD), - 'DEFAULTATTRS' => $reader->getParserProperty(\XMLReader::DEFAULTATTRS), - 'VALIDATE' => $reader->getParserProperty(\XMLReader::VALIDATE), - 'SUBST_ENTITIES' => $reader->getParserProperty(\XMLReader::SUBST_ENTITIES), - ], + $props => $properties, ]; if ($info[$props] = Caster::filter($info[$props], Caster::EXCLUDE_EMPTY, [], $count)) { diff --git a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php index 1782379..eeac882 100644 --- a/vendor/symfony/var-dumper/Cloner/AbstractCloner.php +++ b/vendor/symfony/var-dumper/Cloner/AbstractCloner.php @@ -300,7 +300,7 @@ abstract class AbstractCloner implements ClonerInterface $obj = $stub->value; $class = $stub->class; - if (\PHP_VERSION_ID < 80000 ? "\0" === ($class[15] ?? null) : false !== strpos($class, "@anonymous\0")) { + if (\PHP_VERSION_ID < 80000 ? "\0" === ($class[15] ?? null) : str_contains($class, "@anonymous\0")) { $stub->class = get_debug_type($obj); } if (isset($this->classInfo[$class])) { diff --git a/vendor/symfony/var-dumper/Cloner/Data.php b/vendor/symfony/var-dumper/Cloner/Data.php index 21adb23..8f621b1 100644 --- a/vendor/symfony/var-dumper/Cloner/Data.php +++ b/vendor/symfony/var-dumper/Cloner/Data.php @@ -111,6 +111,7 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate /** * @return int */ + #[\ReturnTypeWillChange] public function count() { return \count($this->getValue()); @@ -119,6 +120,7 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate /** * @return \Traversable */ + #[\ReturnTypeWillChange] public function getIterator() { if (!\is_array($value = $this->getValue())) { @@ -150,21 +152,34 @@ class Data implements \ArrayAccess, \Countable, \IteratorAggregate /** * @return bool */ + #[\ReturnTypeWillChange] public function offsetExists($key) { return $this->__isset($key); } + /** + * @return mixed + */ + #[\ReturnTypeWillChange] public function offsetGet($key) { return $this->__get($key); } + /** + * @return void + */ + #[\ReturnTypeWillChange] public function offsetSet($key, $value) { throw new \BadMethodCallException(self::class.' objects are immutable.'); } + /** + * @return void + */ + #[\ReturnTypeWillChange] public function offsetUnset($key) { throw new \BadMethodCallException(self::class.' objects are immutable.'); diff --git a/vendor/symfony/var-dumper/Cloner/VarCloner.php b/vendor/symfony/var-dumper/Cloner/VarCloner.php index 6a90021..cd6e7dc 100644 --- a/vendor/symfony/var-dumper/Cloner/VarCloner.php +++ b/vendor/symfony/var-dumper/Cloner/VarCloner.php @@ -82,29 +82,39 @@ class VarCloner extends AbstractCloner // $v is the original value or a stub object in case of hard references if (\PHP_VERSION_ID >= 70400) { - $zvalIsRef = null !== \ReflectionReference::fromArrayElement($vals, $k); + $zvalRef = ($r = \ReflectionReference::fromArrayElement($vals, $k)) ? $r->getId() : null; } else { $refs[$k] = $cookie; - $zvalIsRef = $vals[$k] === $cookie; + $zvalRef = $vals[$k] === $cookie; } - if ($zvalIsRef) { + if ($zvalRef) { $vals[$k] = &$stub; // Break hard references to make $queue completely unset($stub); // independent from the original structure - if ($v instanceof Stub && isset($hardRefs[spl_object_id($v)])) { - $vals[$k] = $refs[$k] = $v; + if (\PHP_VERSION_ID >= 70400 ? null !== $vals[$k] = $hardRefs[$zvalRef] ?? null : $v instanceof Stub && isset($hardRefs[spl_object_id($v)])) { + if (\PHP_VERSION_ID >= 70400) { + $v = $vals[$k]; + } else { + $refs[$k] = $vals[$k] = $v; + } if ($v->value instanceof Stub && (Stub::TYPE_OBJECT === $v->value->type || Stub::TYPE_RESOURCE === $v->value->type)) { ++$v->value->refCount; } ++$v->refCount; continue; } - $refs[$k] = $vals[$k] = new Stub(); - $refs[$k]->value = $v; - $h = spl_object_id($refs[$k]); - $hardRefs[$h] = &$refs[$k]; - $values[$h] = $v; + $vals[$k] = new Stub(); + $vals[$k]->value = $v; $vals[$k]->handle = ++$refsCounter; + + if (\PHP_VERSION_ID >= 70400) { + $hardRefs[$zvalRef] = $vals[$k]; + } else { + $refs[$k] = $vals[$k]; + $h = spl_object_id($refs[$k]); + $hardRefs[$h] = &$refs[$k]; + $values[$h] = $v; + } } // Create $stub when the original value $v can not be used directly // If $v is a nested structure, put that structure in array $a @@ -163,12 +173,17 @@ class VarCloner extends AbstractCloner unset($v[$gid]); $a = []; foreach ($v as $gk => &$gv) { - if ($v === $gv) { + if ($v === $gv && (\PHP_VERSION_ID < 70400 || !isset($hardRefs[\ReflectionReference::fromArrayElement($v, $gk)->getId()]))) { unset($v); $v = new Stub(); $v->value = [$v->cut = \count($gv), Stub::TYPE_ARRAY => 0]; $v->handle = -1; - $gv = &$hardRefs[spl_object_id($v)]; + if (\PHP_VERSION_ID >= 70400) { + $gv = &$a[$gk]; + $hardRefs[\ReflectionReference::fromArrayElement($a, $gk)->getId()] = &$gv; + } else { + $gv = &$hardRefs[spl_object_id($v)]; + } $gv = $v; } @@ -270,10 +285,12 @@ class VarCloner extends AbstractCloner } } - if ($zvalIsRef) { - $refs[$k]->value = $stub; - } else { + if (!$zvalRef) { $vals[$k] = $stub; + } elseif (\PHP_VERSION_ID >= 70400) { + $hardRefs[$zvalRef]->value = $stub; + } else { + $refs[$k]->value = $stub; } } diff --git a/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php b/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php index dc77d03..7d9ec0e 100644 --- a/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php +++ b/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php @@ -42,7 +42,7 @@ class CliDescriptor implements DumpDescriptorInterface $io = $output instanceof SymfonyStyle ? $output : new SymfonyStyle(new ArrayInput([]), $output); $this->dumper->setColors($output->isDecorated()); - $rows = [['date', date('r', $context['timestamp'])]]; + $rows = [['date', date('r', (int) $context['timestamp'])]]; $lastIdentifier = $this->lastIdentifier; $this->lastIdentifier = $clientId; diff --git a/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php b/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php index 35a203b..636b618 100644 --- a/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php +++ b/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php @@ -94,7 +94,7 @@ HTML private function extractDate(array $context, string $format = 'r'): string { - return date($format, $context['timestamp']); + return date($format, (int) $context['timestamp']); } private function renderTags(array $tags): string diff --git a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php index eea56b5..4ddaf5e 100644 --- a/vendor/symfony/var-dumper/Dumper/AbstractDumper.php +++ b/vendor/symfony/var-dumper/Dumper/AbstractDumper.php @@ -63,7 +63,7 @@ abstract class AbstractDumper implements DataDumperInterface, DumperInterface */ public function setOutput($output) { - $prev = null !== $this->outputStream ? $this->outputStream : $this->lineDumper; + $prev = $this->outputStream ?? $this->lineDumper; if (\is_callable($output)) { $this->outputStream = null; diff --git a/vendor/symfony/var-dumper/Dumper/CliDumper.php b/vendor/symfony/var-dumper/Dumper/CliDumper.php index 55484b0..b3d9e25 100644 --- a/vendor/symfony/var-dumper/Dumper/CliDumper.php +++ b/vendor/symfony/var-dumper/Dumper/CliDumper.php @@ -154,7 +154,7 @@ class CliDumper extends AbstractDumper case is_nan($value): $value = 'NAN'; break; default: $value = (string) $value; - if (false === strpos($value, $this->decimalPoint)) { + if (!str_contains($value, $this->decimalPoint)) { $value .= $this->decimalPoint.'0'; } break; @@ -445,7 +445,7 @@ class CliDumper extends AbstractDumper if (isset($attr['ellipsis'], $attr['ellipsis-type'])) { $prefix = substr($value, 0, -$attr['ellipsis']); - if ('cli' === \PHP_SAPI && 'path' === $attr['ellipsis-type'] && isset($_SERVER[$pwd = '\\' === \DIRECTORY_SEPARATOR ? 'CD' : 'PWD']) && 0 === strpos($prefix, $_SERVER[$pwd])) { + if ('cli' === \PHP_SAPI && 'path' === $attr['ellipsis-type'] && isset($_SERVER[$pwd = '\\' === \DIRECTORY_SEPARATOR ? 'CD' : 'PWD']) && str_starts_with($prefix, $_SERVER[$pwd])) { $prefix = '.'.substr($prefix, \strlen($_SERVER[$pwd])); } if (!empty($attr['ellipsis-tail'])) { @@ -479,7 +479,7 @@ class CliDumper extends AbstractDumper } else { $value = "\033[{$this->styles[$style]}m".$value; } - if ($cchrCount && $endCchr === substr($value, -\strlen($endCchr))) { + if ($cchrCount && str_ends_with($value, $endCchr)) { $value = substr($value, 0, -\strlen($endCchr)); } else { $value .= "\033[{$this->styles['default']}m"; diff --git a/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php b/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php index c3cd322..2e2c818 100644 --- a/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php +++ b/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php @@ -56,7 +56,7 @@ final class SourceContextProvider implements ContextProviderInterface $line = $trace[$i]['line'] ?? $line; while (++$i < $this->limit) { - if (isset($trace[$i]['function'], $trace[$i]['file']) && empty($trace[$i]['class']) && 0 !== strpos($trace[$i]['function'], 'call_user_func')) { + if (isset($trace[$i]['function'], $trace[$i]['file']) && empty($trace[$i]['class']) && !str_starts_with($trace[$i]['function'], 'call_user_func')) { $file = $trace[$i]['file']; $line = $trace[$i]['line']; @@ -98,7 +98,7 @@ final class SourceContextProvider implements ContextProviderInterface if (null !== $this->projectDir) { $context['project_dir'] = $this->projectDir; - if (0 === strpos($file, $this->projectDir)) { + if (str_starts_with($file, $this->projectDir)) { $context['file_relative'] = ltrim(substr($file, \strlen($this->projectDir)), \DIRECTORY_SEPARATOR); } } diff --git a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php index 6b205a7..8409a0c 100644 --- a/vendor/symfony/var-dumper/Dumper/HtmlDumper.php +++ b/vendor/symfony/var-dumper/Dumper/HtmlDumper.php @@ -153,7 +153,7 @@ class HtmlDumper extends CliDumper */ protected function getDumpHeader() { - $this->headerIsDumped = null !== $this->outputStream ? $this->outputStream : $this->lineDumper; + $this->headerIsDumped = $this->outputStream ?? $this->lineDumper; if (null !== $this->dumpHeader) { return $this->dumpHeader; @@ -964,7 +964,7 @@ EOHTML if (-1 === $this->lastDepth) { $this->line = sprintf($this->dumpPrefix, $this->dumpId, $this->indentPad).$this->line; } - if ($this->headerIsDumped !== (null !== $this->outputStream ? $this->outputStream : $this->lineDumper)) { + if ($this->headerIsDumped !== ($this->outputStream ?? $this->lineDumper)) { $this->line = $this->getDumpHeader().$this->line; } @@ -998,7 +998,7 @@ EOHTML } } -function esc($str) +function esc(string $str) { return htmlspecialchars($str, \ENT_QUOTES, 'UTF-8'); } diff --git a/vendor/symfony/var-dumper/README.md b/vendor/symfony/var-dumper/README.md index bdac244..a0da8c9 100644 --- a/vendor/symfony/var-dumper/README.md +++ b/vendor/symfony/var-dumper/README.md @@ -3,7 +3,7 @@ VarDumper Component The VarDumper component provides mechanisms for walking through any arbitrary PHP variable. It provides a better `dump()` function that you can use instead -of `var_dump`. +of `var_dump()`. Resources --------- diff --git a/vendor/symfony/var-dumper/Server/Connection.php b/vendor/symfony/var-dumper/Server/Connection.php index d8be235..55d9214 100644 --- a/vendor/symfony/var-dumper/Server/Connection.php +++ b/vendor/symfony/var-dumper/Server/Connection.php @@ -31,7 +31,7 @@ class Connection */ public function __construct(string $host, array $contextProviders = []) { - if (false === strpos($host, '://')) { + if (!str_contains($host, '://')) { $host = 'tcp://'.$host; } @@ -78,7 +78,7 @@ class Connection return false; } - private static function nullErrorHandler($t, $m) + private static function nullErrorHandler(int $t, string $m) { // no-op } diff --git a/vendor/symfony/var-dumper/Server/DumpServer.php b/vendor/symfony/var-dumper/Server/DumpServer.php index 55510c0..1c2c348 100644 --- a/vendor/symfony/var-dumper/Server/DumpServer.php +++ b/vendor/symfony/var-dumper/Server/DumpServer.php @@ -30,7 +30,7 @@ class DumpServer public function __construct(string $host, LoggerInterface $logger = null) { - if (false === strpos($host, '://')) { + if (!str_contains($host, '://')) { $host = 'tcp://'.$host; } diff --git a/vendor/symfony/var-dumper/composer.json b/vendor/symfony/var-dumper/composer.json index 642ee62..d4e64cc 100644 --- a/vendor/symfony/var-dumper/composer.json +++ b/vendor/symfony/var-dumper/composer.json @@ -19,7 +19,7 @@ "php": ">=7.1.3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php72": "~1.5", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { "ext-iconv": "*", diff --git a/vendor/topthink/framework/.travis.yml b/vendor/topthink/framework/.travis.yml index 28987af..abaa271 100644 --- a/vendor/topthink/framework/.travis.yml +++ b/vendor/topthink/framework/.travis.yml @@ -4,9 +4,9 @@ language: php matrix: fast_finish: true include: - - php: 7.1 - php: 7.2 - php: 7.3 + - php: 8.0 cache: directories: diff --git a/vendor/topthink/framework/composer.json b/vendor/topthink/framework/composer.json index 9afc513..4be2ae0 100644 --- a/vendor/topthink/framework/composer.json +++ b/vendor/topthink/framework/composer.json @@ -19,10 +19,10 @@ } ], "require": { - "php": ">=7.1.0", + "php": ">=7.2.5", "ext-json": "*", "ext-mbstring": "*", - "league/flysystem": "^1.0", + "league/flysystem": "^1.1.4", "league/flysystem-cached-adapter": "^1.0", "psr/log": "~1.0", "psr/container": "~1.0", diff --git a/vendor/topthink/framework/src/think/App.php b/vendor/topthink/framework/src/think/App.php index cdcfeb8..056a341 100644 --- a/vendor/topthink/framework/src/think/App.php +++ b/vendor/topthink/framework/src/think/App.php @@ -39,7 +39,7 @@ use think\initializer\RegisterService; */ class App extends Container { - const VERSION = '6.0.8'; + const VERSION = '6.0.9'; /** * 应用调试模式 diff --git a/vendor/topthink/framework/src/think/Event.php b/vendor/topthink/framework/src/think/Event.php index 6a0eb1f..3c70aad 100644 --- a/vendor/topthink/framework/src/think/Event.php +++ b/vendor/topthink/framework/src/think/Event.php @@ -37,6 +37,7 @@ class Event 'HttpEnd' => event\HttpEnd::class, 'RouteLoaded' => event\RouteLoaded::class, 'LogWrite' => event\LogWrite::class, + 'LogRecord' => event\LogRecord::class, ]; /** @@ -215,6 +216,14 @@ class Event $result = []; $listeners = $this->listener[$event] ?? []; + + if (strpos($event, '.')) { + [$prefix, $event] = explode('.', $event, 2); + if (isset($this->listener[$prefix . '.*'])) { + $listeners = array_merge($listeners, $this->listener[$prefix . '.*']); + } + } + $listeners = array_unique($listeners, SORT_REGULAR); foreach ($listeners as $key => $listener) { diff --git a/vendor/topthink/framework/src/think/Request.php b/vendor/topthink/framework/src/think/Request.php index a21976d..1c15f63 100644 --- a/vendor/topthink/framework/src/think/Request.php +++ b/vendor/topthink/framework/src/think/Request.php @@ -408,7 +408,8 @@ class Request implements ArrayAccess $rootDomain = $this->rootDomain(); if ($rootDomain) { - $this->subDomain = rtrim(stristr($this->host(), $rootDomain, true), '.'); + $sub = stristr($this->host(), $rootDomain, true); + $this->subDomain = $sub ? rtrim($sub, '.') : ''; } else { $this->subDomain = ''; } @@ -878,10 +879,12 @@ class Request implements ArrayAccess */ public function all($name = '', $filter = '') { - $data = array_merge($this->param(), $this->file()); + $data = array_merge($this->param(), $this->file() ?: []); if (is_array($name)) { $data = $this->only($name, $data, $filter); + } elseif ($name) { + $data = $data[$name] ?? null; } return $data; @@ -1147,7 +1150,6 @@ class Request implements ArrayAccess { $files = $this->file; if (!empty($files)) { - if (strpos($name, '.')) { [$name, $sub] = explode('.', $name); } @@ -1307,12 +1309,12 @@ class Request implements ArrayAccess /** * 强制类型转换 - * @access public + * @access protected * @param mixed $data * @param string $type * @return mixed */ - private function typeCast(&$data, string $type) + protected function typeCast(&$data, string $type) { switch (strtolower($type)) { // 数组 @@ -1344,7 +1346,7 @@ class Request implements ArrayAccess /** * 获取数据 - * @access public + * @access protected * @param array $data 数据源 * @param string $name 字段名 * @param mixed $default 默认值 diff --git a/vendor/topthink/framework/src/think/console/command/RunServer.php b/vendor/topthink/framework/src/think/console/command/RunServer.php index 20a2466..d507c1d 100644 --- a/vendor/topthink/framework/src/think/console/command/RunServer.php +++ b/vendor/topthink/framework/src/think/console/command/RunServer.php @@ -63,7 +63,7 @@ class RunServer extends Command escapeshellarg($root . DIRECTORY_SEPARATOR . 'router.php') ); - $output->writeln(sprintf('ThinkPHP Development server is started On ', '0.0.0.0' == $host ? '127.0.0.1' : $host, $port)); + $output->writeln(sprintf('ThinkPHP Development server is started On ', $host, $port)); $output->writeln(sprintf('You can exit with `CTRL-C`')); $output->writeln(sprintf('Document root is: %s', $root)); passthru($command); diff --git a/vendor/topthink/framework/src/think/facade/Route.php b/vendor/topthink/framework/src/think/facade/Route.php index 46bd746..5a5b955 100644 --- a/vendor/topthink/framework/src/think/facade/Route.php +++ b/vendor/topthink/framework/src/think/facade/Route.php @@ -62,7 +62,7 @@ use think\route\Url as UrlBuild; * @method static RuleItem redirect(string $rule, string $route = '', int $status = 301) 注册重定向路由 * @method static \think\Route rest(string|array $name, array|bool $resource = []) rest方法定义和修改 * @method static array|null getRest(string $name = null) 获取rest方法定义的参数 - * @method static RuleItem miss(string|Closure $route, string $method = '*') 注册未匹配路由规则后的处理 + * @method static RuleItem miss(string|\Closure $route, string $method = '*') 注册未匹配路由规则后的处理 * @method static Response dispatch(\think\Request $request, Closure|bool $withRoute = true) 路由调度 * @method static Dispatch|false check() 检测URL路由 * @method static Dispatch url(string $url) 默认URL解析 diff --git a/vendor/topthink/framework/src/think/service/ModelService.php b/vendor/topthink/framework/src/think/service/ModelService.php index 87cfaf9..b517c4e 100644 --- a/vendor/topthink/framework/src/think/service/ModelService.php +++ b/vendor/topthink/framework/src/think/service/ModelService.php @@ -42,6 +42,12 @@ class ModelService extends Service $model->setDateFormat($config->get('database.datetime_format', 'Y-m-d H:i:s')); } + $timeField = $config->get('database.datetime_field'); + if (!empty($timeField)) { + [$createTime, $updateTime] = explode(',', $timeField); + $model->setTimeField($createTime, $updateTime); + } + }); } } diff --git a/vendor/topthink/think-helper/src/Collection.php b/vendor/topthink/think-helper/src/Collection.php index 905f3f8..fa408c2 100644 --- a/vendor/topthink/think-helper/src/Collection.php +++ b/vendor/topthink/think-helper/src/Collection.php @@ -242,15 +242,17 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria * @access public * @param mixed $value 元素 * @param string $key KEY - * @return void + * @return $this */ - public function push($value, string $key = null): void + public function push($value, string $key = null) { if (is_null($key)) { $this->items[] = $value; } else { $this->items[$key] = $value; } + + return $this; } /** @@ -277,15 +279,17 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria * @access public * @param mixed $value 元素 * @param string $key KEY - * @return void + * @return $this */ - public function unshift($value, string $key = null): void + public function unshift($value, string $key = null) { if (is_null($key)) { array_unshift($this->items, $value); } else { $this->items = [$key => $value] + $this->items; } + + return $this; } /** @@ -477,7 +481,7 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria * @param string|null $indexKey 作为索引值的列 * @return array */ - public function column(?string $columnKey, string $indexKey = null) + public function column( ? string $columnKey, string $indexKey = null) { return array_column($this->items, $columnKey, $indexKey); } @@ -515,7 +519,7 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria $fieldA = $a[$field] ?? null; $fieldB = $b[$field] ?? null; - return 'desc' == strtolower($order) ? $fieldB > $fieldA : $fieldA > $fieldB; + return 'desc' == strtolower($order) ? intval($fieldB > $fieldA) : intval($fieldA > $fieldB); }); } @@ -535,7 +539,7 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria } /** - * 获取最第一个单元数据 + * 获取第一个单元数据 * * @access public * @param callable|null $callback @@ -623,7 +627,7 @@ class Collection implements ArrayAccess, Countable, IteratorAggregate, JsonSeria * @param integer $options json参数 * @return string */ - public function toJson(int $options = JSON_UNESCAPED_UNICODE): string + public function toJson(int $options = JSON_UNESCAPED_UNICODE) : string { return json_encode($this->toArray(), $options); } diff --git a/vendor/topthink/think-orm/src/DbManager.php b/vendor/topthink/think-orm/src/DbManager.php index 147d9f6..f223cd2 100644 --- a/vendor/topthink/think-orm/src/DbManager.php +++ b/vendor/topthink/think-orm/src/DbManager.php @@ -364,7 +364,7 @@ class DbManager { if (isset($this->event[$event])) { foreach ($this->event[$event] as $callback) { - call_user_func_array($callback, [$this]); + call_user_func_array($callback, [$params]); } } } diff --git a/vendor/topthink/think-orm/src/Model.php b/vendor/topthink/think-orm/src/Model.php index 041ec81..00016d0 100644 --- a/vendor/topthink/think-orm/src/Model.php +++ b/vendor/topthink/think-orm/src/Model.php @@ -613,7 +613,7 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab if ($this->autoWriteTimestamp && $this->updateTime) { // 自动写入更新时间 $data[$this->updateTime] = $this->autoWriteTimestamp(); - $this->data[$this->updateTime] = $this->getTimestampValue($data[$this->updateTime]); + $this->data[$this->updateTime] = $data[$this->updateTime]; } // 检查允许字段 @@ -678,12 +678,12 @@ abstract class Model implements JsonSerializable, ArrayAccess, Arrayable, Jsonab if ($this->autoWriteTimestamp) { if ($this->createTime && !isset($data[$this->createTime])) { $data[$this->createTime] = $this->autoWriteTimestamp(); - $this->data[$this->createTime] = $this->getTimestampValue($data[$this->createTime]); + $this->data[$this->createTime] = $data[$this->createTime]; } if ($this->updateTime && !isset($data[$this->updateTime])) { $data[$this->updateTime] = $this->autoWriteTimestamp(); - $this->data[$this->updateTime] = $this->getTimestampValue($data[$this->updateTime]); + $this->data[$this->updateTime] = $data[$this->updateTime]; } } diff --git a/vendor/topthink/think-orm/src/Paginator.php b/vendor/topthink/think-orm/src/Paginator.php index f5d8006..d8d43d7 100644 --- a/vendor/topthink/think-orm/src/Paginator.php +++ b/vendor/topthink/think-orm/src/Paginator.php @@ -175,7 +175,7 @@ abstract class Paginator implements ArrayAccess, Countable, IteratorAggregate, J $path = $this->options['path']; } else { $parameters = []; - $path = str_replace('[PAGE]', $page, $this->options['path']); + $path = str_replace('[PAGE]', (string) $page, $this->options['path']); } if (count($this->options['query']) > 0) { diff --git a/vendor/topthink/think-orm/src/db/BaseQuery.php b/vendor/topthink/think-orm/src/db/BaseQuery.php index ef2d3fd..a0acdbe 100644 --- a/vendor/topthink/think-orm/src/db/BaseQuery.php +++ b/vendor/topthink/think-orm/src/db/BaseQuery.php @@ -260,19 +260,26 @@ abstract class BaseQuery */ public function value(string $field, $default = null) { - return $this->connection->value($this, $field, $default); + $result = $this->connection->value($this, $field, $default); + + $array[$field] = $result; + $this->result($array); + + return $array[$field]; } /** * 得到某个列的数组 * @access public * @param string|array $field 字段名 多个字段用逗号分隔 - * @param string $key 索引 + * @param string $key 索引 * @return array */ public function column($field, string $key = ''): array { - return $this->connection->column($this, $field, $key); + $result = $this->connection->column($this, $field, $key); + $this->resultSet($result, false); + return $result; } /** @@ -619,9 +626,17 @@ abstract class BaseQuery unset($this->options['order'], $this->options['limit'], $this->options['page'], $this->options['field']); - $bind = $this->bind; - $total = $this->count(); - $results = $this->options($options)->bind($bind)->page($page, $listRows)->select(); + $bind = $this->bind; + $total = $this->count(); + if ($total > 0) { + $results = $this->options($options)->bind($bind)->page($page, $listRows)->select(); + } else { + if (!empty($this->model)) { + $results = new \think\model\Collection([]); + } else { + $results = new \think\Collection([]); + } + } } elseif ($simple) { $results = $this->limit(($page - 1) * $listRows, $listRows + 1)->select(); $total = null; @@ -741,7 +756,7 @@ abstract class BaseQuery return [ 'data' => $result, - 'lastId' => $last[$key], + 'lastId' => $last ? $last[$key] : null, ]; } @@ -1075,7 +1090,7 @@ abstract class BaseQuery * 查找记录 * @access public * @param mixed $data 数据 - * @return Collection + * @return Collection|array|static[] * @throws Exception * @throws ModelNotFoundException * @throws DataNotFoundException @@ -1109,7 +1124,7 @@ abstract class BaseQuery * 查找单条记录 * @access public * @param mixed $data 查询数据 - * @return array|Model|null + * @return array|Model|null|static * @throws Exception * @throws ModelNotFoundException * @throws DataNotFoundException diff --git a/vendor/topthink/think-orm/src/db/Builder.php b/vendor/topthink/think-orm/src/db/Builder.php index 73244f4..06e689f 100644 --- a/vendor/topthink/think-orm/src/db/Builder.php +++ b/vendor/topthink/think-orm/src/db/Builder.php @@ -755,7 +755,7 @@ abstract class Builder } elseif ($value instanceof Raw) { $value = $this->parseRaw($query, $value); } else { - $value = array_unique(is_array($value) ? $value : explode(',', $value)); + $value = array_unique(is_array($value) ? $value : explode(',', (string) $value)); if (count($value) === 0) { return 'IN' == $exp ? '0 = 1' : '1 = 1'; } @@ -969,8 +969,8 @@ abstract class Builder $sort = in_array($sort, ['ASC', 'DESC'], true) ? ' ' . $sort : ''; $bind = $query->getFieldsBindType(); - foreach ($val as $item) { - $val[] = $this->parseDataBind($query, $key, $item, $bind); + foreach ($val as $k => $item) { + $val[$k] = $this->parseDataBind($query, $key, $item, $bind); } return 'field(' . $this->parseKey($query, $key, true) . ',' . implode(',', $val) . ')' . $sort; diff --git a/vendor/topthink/think-orm/src/db/PDOConnection.php b/vendor/topthink/think-orm/src/db/PDOConnection.php index 0a51c0c..1a3d4a2 100644 --- a/vendor/topthink/think-orm/src/db/PDOConnection.php +++ b/vendor/topthink/think-orm/src/db/PDOConnection.php @@ -16,6 +16,7 @@ use Closure; use PDO; use PDOStatement; use think\db\exception\BindParamException; +use think\db\exception\DbEventException; use think\db\exception\DbException; use think\db\exception\PDOException; use think\Model; @@ -865,18 +866,18 @@ abstract class PDOConnection extends Connection public function find(BaseQuery $query): array { // 事件回调 - $result = $this->db->trigger('before_find', $query); - - if (!$result) { - // 执行查询 - $resultSet = $this->pdoQuery($query, function ($query) { - return $this->builder->select($query, true); - }); - - $result = $resultSet[0] ?? []; + try { + $this->db->trigger('before_find', $query); + } catch (DbEventException $e) { + return []; } - return $result; + // 执行查询 + $resultSet = $this->pdoQuery($query, function ($query) { + return $this->builder->select($query, true); + }); + + return $resultSet[0] ?? []; } /** @@ -908,16 +909,16 @@ abstract class PDOConnection extends Connection */ public function select(BaseQuery $query): array { - $resultSet = $this->db->trigger('before_select', $query); - - if (!$resultSet) { - // 执行查询操作 - $resultSet = $this->pdoQuery($query, function ($query) { - return $this->builder->select($query); - }); + try { + $this->db->trigger('before_select', $query); + } catch (DbEventException $e) { + return []; } - return $resultSet; + // 执行查询操作 + return $this->pdoQuery($query, function ($query) { + return $this->builder->select($query); + }); } /** @@ -1158,7 +1159,7 @@ abstract class PDOConnection extends Connection $field = $aggregate . '(' . (!empty($distinct) ? 'DISTINCT ' : '') . $this->builder->parseKey($query, $field, true) . ') AS think_' . strtolower($aggregate); - $result = $this->value($query, $field, 0, false); + $result = $this->value($query, $field, 0); return $force ? (float) $result : $result; } @@ -1441,14 +1442,14 @@ abstract class PDOConnection extends Connection if (1 == $this->transTimes) { $this->linkID->beginTransaction(); - } elseif ($this->transTimes > 1 && $this->supportSavepoint()) { + } elseif ($this->transTimes > 1 && $this->supportSavepoint() && $this->linkID->inTransaction()) { $this->linkID->exec( $this->parseSavepoint('trans' . $this->transTimes) ); } $this->reConnectTimes = 0; } catch (\Throwable | \Exception $e) { - if ($this->transTimes === 1 && $this->reConnectTimes < 4 && $this->isBreak($e)) { + if (1 === $this->transTimes && $this->reConnectTimes < 4 && $this->isBreak($e)) { --$this->transTimes; ++$this->reConnectTimes; $this->close()->startTrans(); @@ -1472,7 +1473,7 @@ abstract class PDOConnection extends Connection { $this->initConnect(true); - if (1 == $this->transTimes) { + if (1 == $this->transTimes && $this->linkID->inTransaction()) { $this->linkID->commit(); } @@ -1489,12 +1490,14 @@ abstract class PDOConnection extends Connection { $this->initConnect(true); - if (1 == $this->transTimes) { - $this->linkID->rollBack(); - } elseif ($this->transTimes > 1 && $this->supportSavepoint()) { - $this->linkID->exec( - $this->parseSavepointRollBack('trans' . $this->transTimes) - ); + if ($this->linkID->inTransaction()) { + if (1 == $this->transTimes) { + $this->linkID->rollBack(); + } elseif ($this->transTimes > 1 && $this->supportSavepoint()) { + $this->linkID->exec( + $this->parseSavepointRollBack('trans' . $this->transTimes) + ); + } } $this->transTimes = max(0, $this->transTimes - 1); @@ -1566,10 +1569,10 @@ abstract class PDOConnection extends Connection */ public function close() { - $this->linkID = null; - $this->linkWrite = null; - $this->linkRead = null; - $this->links = []; + $this->linkID = null; + $this->linkWrite = null; + $this->linkRead = null; + $this->links = []; $this->transTimes = 0; $this->free(); @@ -1754,13 +1757,64 @@ abstract class PDOConnection extends Connection return $this->connect($dbConfig, $r, $r == $m ? false : $dbMaster); } + /** + * 执行数据库Xa事务 + * @access public + * @param callable $callback 数据操作方法回调 + * @param array $dbs 多个查询对象或者连接对象 + * @return mixed + * @throws PDOException + * @throws \Exception + * @throws \Throwable + */ + public function transactionXa(callable $callback, array $dbs = []) + { + $xid = uniqid('xa'); + + if (empty($dbs)) { + $dbs[] = $this; + } + + foreach ($dbs as $key => $db) { + if ($db instanceof BaseQuery) { + $db = $db->getConnection(); + + $dbs[$key] = $db; + } + + $db->startTransXa($xid); + } + + try { + $result = null; + if (is_callable($callback)) { + $result = $callback($this); + } + + foreach ($dbs as $db) { + $db->prepareXa($xid); + } + + foreach ($dbs as $db) { + $db->commitXa($xid); + } + + return $result; + } catch (\Exception | \Throwable $e) { + foreach ($dbs as $db) { + $db->rollbackXa($xid); + } + throw $e; + } + } + /** * 启动XA事务 * @access public * @param string $xid XA事务id * @return void */ - public function startTransXa(string $xid) + public function startTransXa(string $xid): void {} /** @@ -1769,7 +1823,7 @@ abstract class PDOConnection extends Connection * @param string $xid XA事务id * @return void */ - public function prepareXa(string $xid) + public function prepareXa(string $xid): void {} /** @@ -1778,7 +1832,7 @@ abstract class PDOConnection extends Connection * @param string $xid XA事务id * @return void */ - public function commitXa(string $xid) + public function commitXa(string $xid): void {} /** @@ -1787,6 +1841,6 @@ abstract class PDOConnection extends Connection * @param string $xid XA事务id * @return void */ - public function rollbackXa(string $xid) + public function rollbackXa(string $xid): void {} } diff --git a/vendor/topthink/think-orm/src/db/concern/ResultOperation.php b/vendor/topthink/think-orm/src/db/concern/ResultOperation.php index d93c409..77409d1 100644 --- a/vendor/topthink/think-orm/src/db/concern/ResultOperation.php +++ b/vendor/topthink/think-orm/src/db/concern/ResultOperation.php @@ -73,9 +73,10 @@ trait ResultOperation * 处理数据集 * @access public * @param array $resultSet 数据集 + * @param bool $toCollection 是否转为对象 * @return void */ - protected function resultSet(array &$resultSet): void + protected function resultSet(array &$resultSet, bool $toCollection = true): void { if (!empty($this->options['json'])) { foreach ($resultSet as &$result) { @@ -96,7 +97,9 @@ trait ResultOperation } // 返回Collection对象 - $resultSet = new Collection($resultSet); + if ($toCollection) { + $resultSet = new Collection($resultSet); + } } /** @@ -149,7 +152,7 @@ trait ResultOperation /** * 处理空数据 * @access protected - * @return array|Model|null + * @return array|Model|null|static * @throws DbException * @throws ModelNotFoundException * @throws DataNotFoundException @@ -167,7 +170,7 @@ trait ResultOperation * 查找单条记录 不存在返回空数据(或者空模型) * @access public * @param mixed $data 数据 - * @return array|Model + * @return array|Model|static */ public function findOrEmpty($data = null) { @@ -226,7 +229,9 @@ trait ResultOperation * 查找多条记录 如果不存在则抛出异常 * @access public * @param array|string|Query|Closure $data 数据 - * @return array|Model + * @return array|Collection|static[] + * @throws ModelNotFoundException + * @throws DataNotFoundException */ public function selectOrFail($data = null) { @@ -237,7 +242,9 @@ trait ResultOperation * 查找单条记录 如果不存在则抛出异常 * @access public * @param array|string|Query|Closure $data 数据 - * @return array|Model + * @return array|Model|static + * @throws ModelNotFoundException + * @throws DataNotFoundException */ public function findOrFail($data = null) { diff --git a/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php b/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php index 1267e54..69b7eae 100644 --- a/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php +++ b/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php @@ -182,7 +182,7 @@ trait TimeFieldQuery public function whereNotBetweenTime(string $field, $startTime, $endTime) { return $this->whereTime($field, '<', $startTime) - ->whereTime($field, '>', $endTime); + ->whereTime($field, '>', $endTime, 'OR'); } /** diff --git a/vendor/topthink/think-orm/src/db/concern/Transaction.php b/vendor/topthink/think-orm/src/db/concern/Transaction.php index f804ae2..b586132 100644 --- a/vendor/topthink/think-orm/src/db/concern/Transaction.php +++ b/vendor/topthink/think-orm/src/db/concern/Transaction.php @@ -12,8 +12,6 @@ declare (strict_types = 1); namespace think\db\concern; -use think\db\BaseQuery; - /** * 事务支持 */ @@ -30,45 +28,9 @@ trait Transaction * @throws \Exception * @throws \Throwable */ - public function transactionXa($callback, array $dbs = []) + public function transactionXa(callable $callback, array $dbs = []) { - $xid = uniqid('xa'); - - if (empty($dbs)) { - $dbs[] = $this->getConnection(); - } - - foreach ($dbs as $key => $db) { - if ($db instanceof BaseQuery) { - $db = $db->getConnection(); - - $dbs[$key] = $db; - } - - $db->startTransXa($xid); - } - - try { - $result = null; - if (is_callable($callback)) { - $result = call_user_func_array($callback, [$this]); - } - - foreach ($dbs as $db) { - $db->prepareXa($xid); - } - - foreach ($dbs as $db) { - $db->commitXa($xid); - } - - return $result; - } catch (\Exception | \Throwable $e) { - foreach ($dbs as $db) { - $db->rollbackXa($xid); - } - throw $e; - } + return $this->connection->transactionXa($callback, $dbs); } /** @@ -114,4 +76,47 @@ trait Transaction $this->connection->rollback(); } + /** + * 启动XA事务 + * @access public + * @param string $xid XA事务id + * @return void + */ + public function startTransXa(string $xid): void + { + $this->connection->startTransXa($xid); + } + + /** + * 预编译XA事务 + * @access public + * @param string $xid XA事务id + * @return void + */ + public function prepareXa(string $xid): void + { + $this->connection->prepareXa($xid); + } + + /** + * 提交XA事务 + * @access public + * @param string $xid XA事务id + * @return void + */ + public function commitXa(string $xid): void + { + $this->connection->commitXa($xid); + } + + /** + * 回滚XA事务 + * @access public + * @param string $xid XA事务id + * @return void + */ + public function rollbackXa(string $xid): void + { + $this->connection->rollbackXa($xid); + } } diff --git a/vendor/topthink/think-orm/src/db/concern/WhereQuery.php b/vendor/topthink/think-orm/src/db/concern/WhereQuery.php index 1311628..d2deb03 100644 --- a/vendor/topthink/think-orm/src/db/concern/WhereQuery.php +++ b/vendor/topthink/think-orm/src/db/concern/WhereQuery.php @@ -49,7 +49,7 @@ trait WhereQuery */ protected function parseQueryWhere(BaseQuery $query): void { - $this->options['where'] = $query->getOptions('where'); + $this->options['where'] = $query->getOptions('where') ?? []; if ($query->getOptions('via')) { $via = $query->getOptions('via'); diff --git a/vendor/topthink/think-orm/src/db/connector/Mongo.php b/vendor/topthink/think-orm/src/db/connector/Mongo.php index 4b05b79..418dc50 100644 --- a/vendor/topthink/think-orm/src/db/connector/Mongo.php +++ b/vendor/topthink/think-orm/src/db/connector/Mongo.php @@ -27,10 +27,9 @@ use MongoDB\Driver\WriteConcern; use think\db\BaseQuery; use think\db\builder\Mongo as Builder; use think\db\Connection; +use think\db\exception\DbEventException; use think\db\exception\DbException as Exception; use think\db\Mongo as Query; -use function implode; -use function is_array; /** * Mongo数据库驱动 @@ -878,15 +877,15 @@ class Mongo extends Connection */ public function select(BaseQuery $query): array { - $resultSet = $this->db->trigger('before_select', $query); - - if (!$resultSet) { - $resultSet = $this->mongoQuery($query, function ($query) { - return $this->builder->select($query); - }); + try { + $this->db->trigger('before_select', $query); + } catch (DbEventException $e) { + return []; } - return $resultSet; + return $this->mongoQuery($query, function ($query) { + return $this->builder->select($query); + }); } /** @@ -904,18 +903,18 @@ class Mongo extends Connection public function find(BaseQuery $query): array { // 事件回调 - $result = $this->db->trigger('before_find', $query); - - if (!$result) { - // 执行查询 - $resultSet = $this->mongoQuery($query, function ($query) { - return $this->builder->select($query, true); - }); - - $result = $resultSet[0] ?? []; + try { + $this->db->trigger('before_find', $query); + } catch (DbEventException $e) { + return []; } - return $result; + // 执行查询 + $resultSet = $this->mongoQuery($query, function ($query) { + return $this->builder->select($query, true); + }); + + return $resultSet[0] ?? []; } /** diff --git a/vendor/topthink/think-orm/src/db/connector/Mysql.php b/vendor/topthink/think-orm/src/db/connector/Mysql.php index 483b447..fd9e63a 100644 --- a/vendor/topthink/think-orm/src/db/connector/Mysql.php +++ b/vendor/topthink/think-orm/src/db/connector/Mysql.php @@ -117,7 +117,7 @@ class Mysql extends PDOConnection * @param string $xid XA事务id * @return void */ - public function startTransXa(string $xid) + public function startTransXa(string $xid): void { $this->initConnect(true); $this->linkID->exec("XA START '$xid'"); @@ -129,7 +129,7 @@ class Mysql extends PDOConnection * @param string $xid XA事务id * @return void */ - public function prepareXa(string $xid) + public function prepareXa(string $xid): void { $this->initConnect(true); $this->linkID->exec("XA END '$xid'"); @@ -142,7 +142,7 @@ class Mysql extends PDOConnection * @param string $xid XA事务id * @return void */ - public function commitXa(string $xid) + public function commitXa(string $xid): void { $this->initConnect(true); $this->linkID->exec("XA COMMIT '$xid'"); @@ -154,7 +154,7 @@ class Mysql extends PDOConnection * @param string $xid XA事务id * @return void */ - public function rollbackXa(string $xid) + public function rollbackXa(string $xid): void { $this->initConnect(true); $this->linkID->exec("XA ROLLBACK '$xid'"); diff --git a/vendor/topthink/think-orm/src/db/exception/DbEventException.php b/vendor/topthink/think-orm/src/db/exception/DbEventException.php new file mode 100644 index 0000000..394a1e8 --- /dev/null +++ b/vendor/topthink/think-orm/src/db/exception/DbEventException.php @@ -0,0 +1,19 @@ + +// +---------------------------------------------------------------------- + +namespace think\db\exception; + +/** + * Db事件异常 + */ +class DbEventException extends DbException +{ +} diff --git a/vendor/topthink/think-orm/src/model/Relation.php b/vendor/topthink/think-orm/src/model/Relation.php index e823bd9..358842d 100644 --- a/vendor/topthink/think-orm/src/model/Relation.php +++ b/vendor/topthink/think-orm/src/model/Relation.php @@ -79,6 +79,18 @@ abstract class Relation */ protected $withField; + /** + * 排除关联数据字段 + * @var array + */ + protected $withoutField; + + /** + * 默认数据 + * @var mixed + */ + protected $default; + /** * 获取关联的所属模型 * @access public @@ -189,53 +201,77 @@ abstract class Relation } /** - * 更新数据 + * 限制关联数据的数量 * @access public - * @param array $data 更新数据 - * @return integer + * @param int $limit 关联数量限制 + * @return $this */ - public function update(array $data = []): int + public function withLimit(int $limit) { - return $this->query->update($data); + $this->withLimit = $limit; + return $this; } /** - * 删除记录 + * 限制关联数据的字段 * @access public - * @param mixed $data 表达式 true 表示强制删除 - * @return int - * @throws Exception - * @throws PDOException + * @param array $field 关联字段限制 + * @return $this */ - public function delete($data = null): int + public function withField(array $field) { - return $this->query->delete($data); + $this->withField = $field; + return $this; } /** - * 限制关联数据的数量 + * 排除关联数据的字段 * @access public - * @param int $limit 关联数量限制 + * @param array|string $field 关联字段限制 * @return $this */ - public function withLimit(int $limit) + public function withoutField($field) { - $this->withLimit = $limit; + if (is_string($field)) { + $field = array_map('trim', explode(',', $field)); + } + + $this->withoutField = $field; return $this; } /** - * 限制关联数据的字段 + * 设置关联数据不存在的时候默认值 * @access public - * @param array $field 关联字段限制 + * @param mixed $data 默认值 * @return $this */ - public function withField(array $field) + public function withDefault($data = null) { - $this->withField = $field; + $this->default = $data; return $this; } + /** + * 获取关联数据默认值 + * @access protected + * @return mixed + */ + protected function getDefaultModel() + { + if (is_array($this->default)) { + $model = (new $this->model)->data($this->default); + } elseif ($this->default instanceof Closure) { + $closure = $this->default; + $model = new $this->model; + $closure($model); + } else { + $model = $this->default; + } + + return $model; + } + /** * 判断闭包的参数类型 * @access protected diff --git a/vendor/topthink/think-orm/src/model/concern/Attribute.php b/vendor/topthink/think-orm/src/model/concern/Attribute.php index 8f6f918..34cb59a 100644 --- a/vendor/topthink/think-orm/src/model/concern/Attribute.php +++ b/vendor/topthink/think-orm/src/model/concern/Attribute.php @@ -496,7 +496,9 @@ trait Attribute $value = $this->getJsonValue($fieldName, $value); } else { $closure = $this->withAttr[$fieldName]; - $value = $closure($value, $this->data); + if ($closure instanceof \Closure) { + $value = $closure($value, $this->data); + } } } elseif (method_exists($this, $method)) { if ($relation) { diff --git a/vendor/topthink/think-orm/src/model/concern/ModelEvent.php b/vendor/topthink/think-orm/src/model/concern/ModelEvent.php index f560379..d2388ab 100644 --- a/vendor/topthink/think-orm/src/model/concern/ModelEvent.php +++ b/vendor/topthink/think-orm/src/model/concern/ModelEvent.php @@ -74,7 +74,7 @@ trait ModelEvent if (method_exists(static::class, $call)) { $result = call_user_func([static::class, $call], $this); } elseif (is_object(self::$event) && method_exists(self::$event, 'trigger')) { - $result = self::$event->trigger(static::class . '.' . $event, $this); + $result = self::$event->trigger('model.' . static::class . '.' . $event, $this); $result = empty($result) ? true : end($result); } else { $result = true; diff --git a/vendor/topthink/think-orm/src/model/concern/SoftDelete.php b/vendor/topthink/think-orm/src/model/concern/SoftDelete.php index 5a9a56d..8d76bb0 100644 --- a/vendor/topthink/think-orm/src/model/concern/SoftDelete.php +++ b/vendor/topthink/think-orm/src/model/concern/SoftDelete.php @@ -151,8 +151,16 @@ trait SoftDelete */ public static function destroy($data, bool $force = false): bool { - // 包含软删除数据 - $query = (new static())->withTrashedData(true)->db(false); + // 传入空值(包括空字符串和空数组)的时候不会做任何的数据删除操作,但传入0则是有效的 + if(empty($data) && $data !== 0){ + return false; + } + // 仅当强制删除时包含软删除数据 + $model = (new static()); + if($force){ + $model->withTrashedData(true); + } + $query = $model->db(false); if (is_array($data) && key($data) !== 0) { $query->where($data); diff --git a/vendor/topthink/think-orm/src/model/concern/TimeStamp.php b/vendor/topthink/think-orm/src/model/concern/TimeStamp.php index e207961..2492e06 100644 --- a/vendor/topthink/think-orm/src/model/concern/TimeStamp.php +++ b/vendor/topthink/think-orm/src/model/concern/TimeStamp.php @@ -77,6 +77,21 @@ trait TimeStamp return $type; } + /** + * 设置时间字段名称 + * @access public + * @param string $createTime + * @param string $updateTime + * @return $this + */ + public function setTimeField(string $createTime, string $updateTime) + { + $this->createTime = $createTime; + $this->updateTime = $updateTime; + + return $this; + } + /** * 获取自动写入时间字段 * @access public diff --git a/vendor/topthink/think-orm/src/model/concern/Virtual.php b/vendor/topthink/think-orm/src/model/concern/Virtual.php new file mode 100644 index 0000000..66cdfb7 --- /dev/null +++ b/vendor/topthink/think-orm/src/model/concern/Virtual.php @@ -0,0 +1,90 @@ + +// +---------------------------------------------------------------------- +declare (strict_types = 1); + +namespace think\model\concern; + +use think\db\BaseQuery as Query; +use think\db\exception\DbException as Exception; + +/** + * 虚拟模型 + */ +trait Virtual +{ + /** + * 获取当前模型的数据库查询对象 + * @access public + * @param array $scope 设置不使用的全局查询范围 + * @return Query + */ + public function db($scope = []): Query + { + throw new Exception('virtual model not support db query'); + } + + /** + * 获取字段类型信息 + * @access public + * @param string $field 字段名 + * @return string|null + */ + public function getFieldType(string $field) + {} + + /** + * 保存当前数据对象 + * @access public + * @param array $data 数据 + * @param string $sequence 自增序列名 + * @return bool + */ + public function save(array $data = [], string $sequence = null): bool + { + // 数据对象赋值 + $this->setAttrs($data); + + if ($this->isEmpty() || false === $this->trigger('BeforeWrite')) { + return false; + } + + // 写入回调 + $this->trigger('AfterWrite'); + + $this->exists(true); + + return true; + } + + /** + * 删除当前的记录 + * @access public + * @return bool + */ + public function delete(): bool + { + if (!$this->isExists() || $this->isEmpty() || false === $this->trigger('BeforeDelete')) { + return false; + } + + // 关联删除 + if (!empty($this->relationWrite)) { + $this->autoRelationDelete(); + } + + $this->trigger('AfterDelete'); + + $this->exists(false); + + return true; + } + +} diff --git a/vendor/topthink/think-orm/src/model/relation/BelongsTo.php b/vendor/topthink/think-orm/src/model/relation/BelongsTo.php index 789c944..941e1d4 100644 --- a/vendor/topthink/think-orm/src/model/relation/BelongsTo.php +++ b/vendor/topthink/think-orm/src/model/relation/BelongsTo.php @@ -73,6 +73,8 @@ class BelongsTo extends OneToOne } $relationModel->setParent(clone $this->parent); + } else { + $relationModel = $this->getDefaultModel(); } return $relationModel; @@ -182,9 +184,10 @@ class BelongsTo extends OneToOne $fields = $this->getRelationQueryFields($fields, $model); $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); + $query = $query ?: $this->parent->db(); - return $query->field($fields) + return $query->alias($model) + ->field($fields) ->join([$table => $relation], $model . '.' . $this->foreignKey . '=' . $relation . '.' . $this->localKey, $joinType ?: $this->joinType) ->when($softDelete, function ($query) use ($softDelete, $relation) { $query->where($relation . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); @@ -226,7 +229,7 @@ class BelongsTo extends OneToOne foreach ($resultSet as $result) { // 关联模型 if (!isset($data[$result->$foreignKey])) { - $relationModel = null; + $relationModel = $this->getDefaultModel(); } else { $relationModel = $data[$result->$foreignKey]; $relationModel->setParent(clone $result); @@ -267,7 +270,7 @@ class BelongsTo extends OneToOne // 关联模型 if (!isset($data[$result->$foreignKey])) { - $relationModel = null; + $relationModel = $this->getDefaultModel(); } else { $relationModel = $data[$result->$foreignKey]; $relationModel->setParent(clone $result); diff --git a/vendor/topthink/think-orm/src/model/relation/BelongsToMany.php b/vendor/topthink/think-orm/src/model/relation/BelongsToMany.php index 6b64d95..5f177c1 100644 --- a/vendor/topthink/think-orm/src/model/relation/BelongsToMany.php +++ b/vendor/topthink/think-orm/src/model/relation/BelongsToMany.php @@ -443,7 +443,12 @@ class BelongsToMany extends Relation if (empty($this->baseQuery)) { $tableName = $this->query->getTable(); $table = $this->pivot->db()->getTable(); - $fields = $this->getQueryFields($tableName); + + if ($this->withoutField) { + $this->query->withoutField($this->withoutField); + } + + $fields = $this->getQueryFields($tableName); if ($this->withLimit) { $this->query->limit($this->withLimit); diff --git a/vendor/topthink/think-orm/src/model/relation/HasMany.php b/vendor/topthink/think-orm/src/model/relation/HasMany.php index a67d41b..77d9e4d 100644 --- a/vendor/topthink/think-orm/src/model/relation/HasMany.php +++ b/vendor/topthink/think-orm/src/model/relation/HasMany.php @@ -206,6 +206,10 @@ class HasMany extends Relation $closure($this->getClosureType($closure)); } + if ($this->withoutField) { + $this->query->withoutField($this->withoutField); + } + $list = $this->query ->where($where) ->cache($cache[0] ?? false, $cache[1] ?? null, $cache[2] ?? null) @@ -336,9 +340,10 @@ class HasMany extends Relation $fields = $this->getRelationQueryFields($fields, $model); $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); + $query = $query ?: $this->parent->db(); - return $query->group($model . '.' . $this->localKey) + return $query->alias($model) + ->group($model . '.' . $this->localKey) ->field($fields) ->join([$table => $relation], $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey, $joinType) ->when($softDelete, function ($query) use ($softDelete, $relation) { diff --git a/vendor/topthink/think-orm/src/model/relation/HasManyThrough.php b/vendor/topthink/think-orm/src/model/relation/HasManyThrough.php index 30d5ca4..d4b7d91 100644 --- a/vendor/topthink/think-orm/src/model/relation/HasManyThrough.php +++ b/vendor/topthink/think-orm/src/model/relation/HasManyThrough.php @@ -151,9 +151,10 @@ class HasManyThrough extends Relation $fields = $this->getRelationQueryFields($fields, $model); $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ?: $this->parent->db()->alias($model); + $query = $query ?: $this->parent->db(); - return $query->join($throughTable, $throughTable . '.' . $this->foreignKey . '=' . $model . '.' . $this->localKey) + return $query->alias($model) + ->join($throughTable, $throughTable . '.' . $this->foreignKey . '=' . $model . '.' . $this->localKey) ->join($modelTable, $modelTable . '.' . $throughKey . '=' . $throughTable . '.' . $this->throughPk, $joinType) ->when($softDelete, function ($query) use ($softDelete, $modelTable) { $query->where($modelTable . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); @@ -366,7 +367,12 @@ class HasManyThrough extends Relation $pk = $this->throughPk; $throughKey = $this->throughKey; $modelTable = $this->parent->getTable(); - $fields = $this->getQueryFields($alias); + + if ($this->withoutField) { + $this->query->withoutField($this->withoutField); + } + + $fields = $this->getQueryFields($alias); $this->query ->field($fields) diff --git a/vendor/topthink/think-orm/src/model/relation/HasOne.php b/vendor/topthink/think-orm/src/model/relation/HasOne.php index 7fcd20a..be4927b 100644 --- a/vendor/topthink/think-orm/src/model/relation/HasOne.php +++ b/vendor/topthink/think-orm/src/model/relation/HasOne.php @@ -72,6 +72,8 @@ class HasOne extends OneToOne } $relationModel->setParent(clone $this->parent); + } else { + $relationModel = $this->getDefaultModel(); } return $relationModel; @@ -181,9 +183,10 @@ class HasOne extends OneToOne $fields = $this->getRelationQueryFields($fields, $model); $softDelete = $this->query->getOptions('soft_delete'); - $query = $query ? $query->alias($model) : $this->parent->db()->alias($model); + $query = $query ?: $this->parent->db(); - return $query->field($fields) + return $query->alias($model) + ->field($fields) ->join([$table => $relation], $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey, $joinType ?: $this->joinType) ->when($softDelete, function ($query) use ($softDelete, $relation) { $query->where($relation . strstr($softDelete[0], '.'), '=' == $softDelete[1][0] ? $softDelete[1][1] : null); @@ -225,7 +228,7 @@ class HasOne extends OneToOne foreach ($resultSet as $result) { // 关联模型 if (!isset($data[$result->$localKey])) { - $relationModel = null; + $relationModel = $this->getDefaultModel(); } else { $relationModel = $data[$result->$localKey]; $relationModel->setParent(clone $result); @@ -266,7 +269,7 @@ class HasOne extends OneToOne // 关联模型 if (!isset($data[$result->$localKey])) { - $relationModel = null; + $relationModel = $this->getDefaultModel(); } else { $relationModel = $data[$result->$localKey]; $relationModel->setParent(clone $result); diff --git a/vendor/topthink/think-orm/src/model/relation/HasOneThrough.php b/vendor/topthink/think-orm/src/model/relation/HasOneThrough.php index 8ec42df..0278533 100644 --- a/vendor/topthink/think-orm/src/model/relation/HasOneThrough.php +++ b/vendor/topthink/think-orm/src/model/relation/HasOneThrough.php @@ -40,6 +40,8 @@ class HasOneThrough extends HasManyThrough if ($relationModel) { $relationModel->setParent(clone $this->parent); + } else { + $relationModel = $this->getDefaultModel(); } return $relationModel; @@ -79,7 +81,7 @@ class HasOneThrough extends HasManyThrough foreach ($resultSet as $result) { // 关联模型 if (!isset($data[$result->$localKey])) { - $relationModel = null; + $relationModel = $this->getDefaultModel(); } else { $relationModel = $data[$result->$localKey]; $relationModel->setParent(clone $result); @@ -115,7 +117,7 @@ class HasOneThrough extends HasManyThrough // 关联模型 if (!isset($data[$result->$localKey])) { - $relationModel = null; + $relationModel = $this->getDefaultModel(); } else { $relationModel = $data[$result->$localKey]; $relationModel->setParent(clone $result); diff --git a/vendor/topthink/think-orm/src/model/relation/MorphOne.php b/vendor/topthink/think-orm/src/model/relation/MorphOne.php index bc89c0b..788dd29 100644 --- a/vendor/topthink/think-orm/src/model/relation/MorphOne.php +++ b/vendor/topthink/think-orm/src/model/relation/MorphOne.php @@ -90,6 +90,8 @@ class MorphOne extends Relation } $relationModel->setParent(clone $this->parent); + } else { + $relationModel = $this->getDefaultModel(); } return $relationModel; @@ -158,7 +160,7 @@ class MorphOne extends Relation // 关联数据封装 foreach ($resultSet as $result) { if (!isset($data[$result->$pk])) { - $relationModel = null; + $relationModel = $this->getDefaultModel(); } else { $relationModel = $data[$result->$pk]; $relationModel->setParent(clone $result); @@ -202,7 +204,7 @@ class MorphOne extends Relation $relationModel->setParent(clone $result); $relationModel->exists(true); } else { - $relationModel = null; + $relationModel = $this->getDefaultModel(); } if (!empty($this->bindAttr)) { diff --git a/vendor/topthink/think-orm/src/model/relation/MorphToMany.php b/vendor/topthink/think-orm/src/model/relation/MorphToMany.php index 88bbf9a..32f853f 100644 --- a/vendor/topthink/think-orm/src/model/relation/MorphToMany.php +++ b/vendor/topthink/think-orm/src/model/relation/MorphToMany.php @@ -200,7 +200,12 @@ class MorphToMany extends BelongsToMany // 关联查询封装 $tableName = $this->query->getTable(); $table = $this->pivot->db()->getTable(); - $fields = $this->getQueryFields($tableName); + + if ($this->withoutField) { + $this->query->withoutField($this->withoutField); + } + + $fields = $this->getQueryFields($tableName); if ($this->withLimit) { $this->query->limit($this->withLimit); diff --git a/vendor/topthink/think-orm/src/model/relation/OneToOne.php b/vendor/topthink/think-orm/src/model/relation/OneToOne.php index 65bbfda..d47d7f3 100644 --- a/vendor/topthink/think-orm/src/model/relation/OneToOne.php +++ b/vendor/topthink/think-orm/src/model/relation/OneToOne.php @@ -305,6 +305,8 @@ abstract class OneToOne extends Relation if ($this->withField) { $this->query->field($this->withField); + } elseif ($this->withoutField) { + $this->query->withoutField($this->withoutField); } $list = $this->query