Merge branch 'development' into dependabot/composer/symfony/http-foundation-4.4.1

This commit is contained in:
Manish Verma
2019-12-18 16:00:24 +05:30
3330 changed files with 156656 additions and 138978 deletions

View File

@@ -23,8 +23,11 @@ Faveo can be customised according to requirement and we do undertake such reques
Flavors of Faveo
--------------------------
* Faveo Community Edition Free, Open source edition
* Faveo Freelancer - Free version with features available in Faveo Pro Edition for two agents
* Faveo Pro Edition Paid version with many advance features and integrations
* Faveo Service Desk - Paid version for IT Assest management
[View complete comparision list of all flavors of Faveo to select the most suitable solution for your business](https://www.faveohelpdesk.com/pricing-india/)
Faveo Documentation
--------------------------

View File

@@ -45,7 +45,8 @@
"fzaninotto/faker": "1.*",
"filp/whoops": "~2.0",
"laravel/dusk": "~3.0",
"laravel/tinker": "^1.0"
"laravel/tinker": "^1.0",
"codacy/coverage": "dev-master"
},
"autoload": {
"classmap": [

804
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -16,6 +16,11 @@
<directory>./tests/unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory suffix=".php">app/</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="testing"/>

View File

@@ -9,7 +9,7 @@ Installation instructions:
Faveo HELPDESK installation should not take more than 15 minutes to complete.
Details are provided in this article:
http://ladybirdweb.com/support/knowledgebase
https://support.faveohelpdesk.com/knowledgebase
Upgrade instructions:
---------------------
@@ -17,7 +17,7 @@ Upgrade instructions:
If you are upgrading your Faveo HELPDESK to the latest stable release, please
follow the instructions provided in this article:
http://ladybirdweb.com/support/knowledgebase
https://support.faveohelpdesk.com/knowledgebase
================================================================================

37
vendor/aws/aws-sdk-php/.changes/3.67.13 vendored Normal file
View File

@@ -0,0 +1,37 @@
[
{
"type": "api-change",
"category": "ECS",
"description": "This release of Amazon Elastic Container Service (Amazon ECS) introduces support for additional Docker flags as Task Definition parameters. Customers can now configure their ECS Tasks to use systemControls (sysctl), pseudoTerminal (tty), and interactive (i) Docker flags."
},
{
"type": "api-change",
"category": "ElasticTranscoder",
"description": "Added support for MP2 container"
},
{
"type": "api-change",
"category": "CloudWatch",
"description": "Amazon CloudWatch adds the ability to publish values and counts using PutMetricData"
},
{
"type": "api-change",
"category": "CodeBuild",
"description": "Support build logs configuration."
},
{
"type": "api-change",
"category": "ElastiCache",
"description": "ElastiCache for Redis added support for adding and removing read-replicas from any cluster with no cluster downtime, Shard naming: ElastiCache for Redis customers have the option of allowing ElastiCache to create names for their node groups (shards) or generating their own node group names. For more information, see https:\/\/ docs.aws.amazon.com\/AmazonElastiCache\/latest\/APIReference\/API_NodeGroupConfiguration.html, ShardsToRetain: When reducing the number of node groups (shards) in an ElastiCache for Redis (cluster mode enabled) you have the option of specifying which node groups to retain or which node groups to remove. For more information, see https:\/\/ docs.aws.amazon.com\/AmazonElastiCache\/latest\/APIReference\/API_ModifyReplicationGroupShardConfiguration.html, ReservationARN: ReservedNode includes an ARN, ReservationARN, member which identifies the reserved node. For more information, see https:\/\/ docs.aws.amazon.com\/AmazonElastiCache\/latest\/APIReference\/API_ReservedCacheNode.html"
},
{
"type": "enhancement",
"category": "SecretsManager",
"description": "Documentation updates for secretsmanager"
},
{
"type": "api-change",
"category": "EC2",
"description": "Added support for customers to tag EC2 Dedicated Hosts on creation."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.67.14 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "ElasticsearchService",
"description": "Amazon Elasticsearch Service adds support for node-to-node encryption for new domains running Elasticsearch version 6.0 and above"
},
{
"type": "api-change",
"category": "Rekognition",
"description": "This release updates the Amazon Rekognition IndexFaces API operation. It introduces a QualityFilter parameter that allows you to automatically filter out detected faces that are deemed to be of low quality by Amazon Rekognition. The quality bar is based on a variety of common use cases. You can filter low-quality detected faces by setting QualityFilter to AUTO, which is also the default setting. To index all detected faces regardless of quality, you can specify NONE. This release also provides a MaxFaces parameter that is useful when you want to only index the most prominent and largest faces in an image and don't want to index other faces detected in the image, such as smaller faces belonging to people standing in the background."
}
]

17
vendor/aws/aws-sdk-php/.changes/3.67.15 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "CloudWatch",
"description": "Amazon CloudWatch adds the ability to request png image snapshots of metric widgets using the GetMetricWidgetImage API."
},
{
"type": "api-change",
"category": "Organizations",
"description": "Introducing a new exception - AccountOwnerNotVerifiedException which will be returned for InviteAccountToOrganization call for unverified accounts."
},
{
"type": "api-change",
"category": "S3",
"description": "S3 Cross Region Replication now allows customers to use S3 object tags to filter the scope of replication. By using S3 object tags, customers can identify individual objects for replication across AWS Regions for compliance and data protection. Cross Region Replication for S3 enables automatic and asynchronous replication of objects to another AWS Region, and with this release customers can replicate at a bucket level, prefix level or by using object tags."
}
]

17
vendor/aws/aws-sdk-php/.changes/3.67.16 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "EC2",
"description": "You can now launch f1.4xlarge, a new instance size within the existing f1 family which provides two Xilinx Virtex Field Programmable Arrays (FPGAs) for acceleration. FPGA acceleration provide additional performance and time sensitivity for specialized accelerated workloads such as clinical genomics and real-time video processing. F1.4xlarge instances are available in the US East (N. Virginia), US West (Oregon), GovCloud (US), and EU West (Dublin) AWS Regions."
},
{
"type": "api-change",
"category": "DirectoryService",
"description": "Added CreateLogSubscription, DeleteLogSubscription, and ListLogSubscriptions APIs for Microsoft AD. Customers can now opt in to have Windows security event logs from the domain controllers forwarded to a log group in their account."
},
{
"type": "api-change",
"category": "RDS",
"description": "This launch enables RDS start-db-cluster and stop-db-cluster. Stopping and starting Amazon Aurora clusters helps you manage costs for development and test environments. You can temporarily stop all the DB instances in your cluster, instead of setting up and tearing down all the DB instances each time that you use the cluster."
}
]

View File

@@ -0,0 +1,7 @@
[
{
"type": "api-change",
"category": "MediaConvert",
"description": "To offer lower prices for predictable, non-urgent workloads, we propose the concept of Reserved Transcode pricing. Reserved Transcode pricing Reserved Transcoding pricing would offer the customer access to a fixed parallel processing capacity for a fixed monthly rate. This capacity would be stated in terms of number of Reserved Transcode Slots (RTSs). One RTS would be able to process one job at a time for a fixed monthly fee."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.67.18 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "RDS",
"description": " Adds DB engine version requirements for option group option settings, and specifies if an option setting requires a value."
},
{
"type": "api-change",
"category": "Connect",
"description": "This update adds the Amazon Connect Metrics API, which lets you get current metric data and historical metric data within 24 hours for the queues in your Amazon Connect instance."
}
]

17
vendor/aws/aws-sdk-php/.changes/3.67.19 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "DirectoryService",
"description": "API changes related to launch of cross account for Directory Service."
},
{
"type": "enhancement",
"category": "CloudFront",
"description": "Documentation updates for cloudfront"
},
{
"type": "api-change",
"category": "EC2",
"description": "Add pagination support for ec2.describe-route-tables API. "
}
]

22
vendor/aws/aws-sdk-php/.changes/3.67.20 vendored Normal file
View File

@@ -0,0 +1,22 @@
[
{
"type": "api-change",
"category": "OpsWorksCM",
"description": "This release introduces a new API called ExportServerEngineAttribute to Opsworks-CM. You can use this API call to export engine specific attributes like the UserData script used for unattended bootstrapping of new nodes that connect to the server. "
},
{
"type": "api-change",
"category": "RDS",
"description": "This release includes Deletion Protection for RDS databases."
},
{
"type": "enhancement",
"category": "SQS",
"description": "Documentation updates for Amazon SQS."
},
{
"type": "api-change",
"category": "Glue",
"description": "AWS Glue now supports data encryption at rest for ETL jobs and development endpoints. With encryption enabled, when you run ETL jobs, or development endpoints, Glue will use AWS KMS keys to write encrypted data at rest. You can also encrypt the metadata stored in the Glue Data Catalog using keys that you manage with AWS KMS. Additionally, you can use AWS KMS keys to encrypt the logs generated by crawlers and ETL jobs as well as encrypt ETL job bookmarks. Encryption settings for Glue crawlers, ETL jobs, and development endpoints can be configured using the security configurations in Glue. Glue Data Catalog encryption can be enabled via the settings for the Glue Data Catalog."
}
]

27
vendor/aws/aws-sdk-php/.changes/3.67.21 vendored Normal file
View File

@@ -0,0 +1,27 @@
[
{
"type": "api-change",
"category": "CodeCommit",
"description": "This release adds API support for getting the contents of a file, getting the contents of a folder, and for deleting a file in an AWS CodeCommit repository."
},
{
"type": "api-change",
"category": "MQ",
"description": "Amazon MQ supports ActiveMQ 5.15.6, in addition to 5.15.0. Automatic minor version upgrades can be toggled. Updated the documentation."
},
{
"type": "enhancement",
"category": "SageMaker",
"description": "SageMaker has added support for the AWS GovCloud (US) region."
},
{
"type": "api-change",
"category": "APIGateway",
"description": "Adding support for OpenAPI 3.0 import and export."
},
{
"type": "enhancement",
"category": "GameLift",
"description": "Amazon GameLift and Amazon GameLift FlexMatch are now available in the China cn-north-1 region."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.67.22 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "CodeStar",
"description": "This release enables tagging CodeStar Projects at creation. The CreateProject API now includes optional tags parameter."
},
{
"type": "api-change",
"category": "EC2",
"description": "You can now use EC2 High Memory instances with 6 TiB memory (u-6tb1.metal), 9 TiB memory (u-9tb1.metal), and 12 TiB memory (u-12tb1.metal), which are ideal for running large in-memory databases, including production deployments of SAP HANA. These instances offer 448 logical processors, where each logical processor is a hyperthread on 224 cores. These instance deliver high networking throughput and lower latency with up to 25 Gbps of aggregate network bandwidth using Elastic Network Adapter (ENA)-based Enhanced Networking. These instances are EBS-Optimized by default, and support encrypted and unencrypted EBS volumes. This instance is only available in host-tenancy. You will need an EC2 Dedicated Host for this instance type to launch an instance."
}
]

17
vendor/aws/aws-sdk-php/.changes/3.68.0 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "feature",
"category": "Lambda",
"description": "Added default TCP Keep-Alive Curl setting for the Lambda client."
},
{
"type": "enhancement",
"category": "Rekognition",
"description": "Documentation updates for Amazon Rekognition"
},
{
"type": "api-change",
"category": "GuardDuty",
"description": "Support optional FindingPublishingFrequency parameter in CreateDetector and UpdateDetector operations, and ClientToken on Create* operations"
}
]

12
vendor/aws/aws-sdk-php/.changes/3.68.1 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "SageMaker",
"description": "Waiter for SageMaker Batch Transform Jobs."
},
{
"type": "enhancement",
"category": "SecretsManager",
"description": "Documentation updates for secretsmanager"
}
]

32
vendor/aws/aws-sdk-php/.changes/3.69.0 vendored Normal file
View File

@@ -0,0 +1,32 @@
[
{
"type": "feature",
"category": "ClientSideMonitoring",
"description": "Code for future SDK instrumentation and telemetry."
},
{
"type": "api-change",
"category": "SSM",
"description": " Adds RejectedPatchesAction to baseline to enable stricted validation of the rejected Patches List ; Add InstalledRejected and InstallOverrideList to compliance reporting"
},
{
"type": "enhancement",
"category": "Neptune",
"description": "Update neptune command for support in the EU (London) region"
},
{
"type": "api-change",
"category": "APIGateway",
"description": "Adding support for multi-value parameters in TestInvokeMethod and TestInvokeAuthorizer."
},
{
"type": "api-change",
"category": "CodeBuild",
"description": "Add resolved source version field in build output"
},
{
"type": "api-change",
"category": "StorageGateway",
"description": "AWS Storage Gateway now enables you to specify folders and subfolders when you update your file gateway's view of your S3 objects using the Refresh Cache API."
}
]

View File

@@ -0,0 +1,7 @@
[
{
"type": "api-change",
"category": "DirectoryService",
"description": "SDK changes to create a new type of trust for active directory"
}
]

17
vendor/aws/aws-sdk-php/.changes/3.69.10 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "MediaLive",
"description": "This release allows you to now turn on Quality-Defined Variable Bitrate (QVBR) encoding for your AWS Elemental MediaLive channels. You can now deliver a consistently high-quality video viewing experience while reducing overall distribution bitrates by using Quality-Defined Variable Bitrate (QVBR) encoding with AWS Elemental MediaLive. QVBR is a video compression technique that automatically adjusts output bitrates to the complexity of source content and only use the bits required to maintain a defined level of quality. This means using QVBR encoding, you can save on distribution cost, while maintaining, or increasing video quality for your viewers."
},
{
"type": "api-change",
"category": "Route53",
"description": "This change allows customers to disable health checks."
},
{
"type": "api-change",
"category": "AppStream",
"description": "This API update adds support for creating, managing, and deleting users in the AppStream 2.0 user pool."
}
]

17
vendor/aws/aws-sdk-php/.changes/3.69.11 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "enhancement",
"category": "Aws",
"description": "Bump Guzzle HTTP patch version for PHP 7.3 compatibility."
},
{
"type": "api-change",
"category": "SSM",
"description": "Rate Control feature release for State Manager. Users now have the ability to apply rate control parameters similar to run command to their association in state manager console or CLI."
},
{
"type": "api-change",
"category": "WorkSpaces",
"description": "Added support for PowerPro and GraphicsPro WorkSpaces bundles."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.69.12 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "Inspector",
"description": "Finding will be decorated with ec2 related metadata"
},
{
"type": "api-change",
"category": "Shield",
"description": "AWS Shield Advanced API introduced a new service-specific AccessDeniedException which will be thrown when accessing individual attack information without sufficient permission."
}
]

View File

@@ -0,0 +1,7 @@
[
{
"type": "api-change",
"category": "EC2",
"description": "Provides customers the ability to Bring Your Own IP (BYOIP) prefix. You can bring part or all of your public IPv4 address range from your on-premises network to your AWS account. You continue to own the address range, but AWS advertises it on the internet."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.69.14 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "AlexaForBusiness",
"description": "We extended the functionality of the Alexa for Business SDK, including additional support for third-party Alexa built-in devices, managing private and public skills, and conferencing setup."
},
{
"type": "api-change",
"category": "CodeStar",
"description": "This release lets you create projects from source code and a toolchain definition that you provide."
}
]

View File

@@ -0,0 +1,7 @@
[
{
"type": "api-change",
"category": "EC2",
"description": "As part of this release we are introducing EC2 On-Demand Capacity Reservations. With On-Demand Capacity Reservations, customers can reserve the exact EC2 capacity they need, and can keep it only for as long as they need it."
}
]

17
vendor/aws/aws-sdk-php/.changes/3.69.16 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "SageMaker",
"description": "SageMaker notebook instances can now have a volume size configured."
},
{
"type": "api-change",
"category": "SSM",
"description": "Compliance Severity feature release for State Manager. Users now have the ability to select compliance severity to their association in state manager console or CLI."
},
{
"type": "enhancement",
"category": "AlexaForBusiness",
"description": "Documentation updates for AWS Alexa for Business"
}
]

12
vendor/aws/aws-sdk-php/.changes/3.69.2 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "IoT",
"description": "We are releasing job execution timeout functionalities to customers. Customer now can set job execution timeout on the job level when creating a job. "
},
{
"type": "api-change",
"category": "IoTJobsDataPlane",
"description": "We are releasing job execution timeout functionalities to customers. Device can now set and update their job execution timeout. "
}
]

View File

@@ -0,0 +1,7 @@
[
{
"type": "api-change",
"category": "SSM",
"description": "Adds StartDate, EndDate, and ScheduleTimezone to CreateMaintenanceWindow and UpdateMaintenanceWindow; Adds NextExecutionTime to GetMaintenanceWindow and DescribeMaintenanceWindows; Adds CancelMaintenanceWindowExecution, DescribeMaintenanceWindowSchedule and DescribeMaintenanceWindowsForTarget APIs."
}
]

27
vendor/aws/aws-sdk-php/.changes/3.69.4 vendored Normal file
View File

@@ -0,0 +1,27 @@
[
{
"type": "bugfix",
"category": "Build\/Docs",
"description": "Fixes API docs issue with required members in shapes."
},
{
"type": "bugfix",
"category": "ClientSideMonitoring",
"description": "Avoids issue with late static bindings in closures in earlier versions of PHP 5.5.x."
},
{
"type": "api-change",
"category": "TranscribeService",
"description": "With this update Amazon Transcribe now supports deleting completed transcription jobs. "
},
{
"type": "api-change",
"category": "Comprehend",
"description": "This release adds French, Italian, German and Portuguese language support for all existing synchronous and asynchronous APIs"
},
{
"type": "api-change",
"category": "ElasticsearchService",
"description": "Amazon Elasticsearch Service now supports customer-scheduled service software updates. When new service software becomes available, you can request an update to your domain and benefit from new features more quickly. If you take no action, we update the service software automatically after a certain time frame."
}
]

37
vendor/aws/aws-sdk-php/.changes/3.69.5 vendored Normal file
View File

@@ -0,0 +1,37 @@
[
{
"type": "enhancement",
"category": "ClientSideMonitoring",
"description": "Updates to client-side monitoring event entry and config settings to match updated specification."
},
{
"type": "bugfix",
"category": "Api\/Serializer",
"description": "Fix to correctly format 'structure' options into JSON, when they have no valid values."
},
{
"type": "api-change",
"category": "DirectConnect",
"description": "This release adds support for Jumbo Frames over AWS Direct Connect. You can now set MTU value when creating new virtual interfaces. This release also includes a new API to modify MTU value of existing virtual interfaces."
},
{
"type": "api-change",
"category": "Athena",
"description": "1. GetQueryExecution API changes to return statementType of a submitted Athena query. 2. GetQueryResults API changes to return the number of rows added to a table when a CTAS query is executed."
},
{
"type": "api-change",
"category": "MediaConvert",
"description": "Added Paginators for all the MediaConvert list operations"
},
{
"type": "api-change",
"category": "TranscribeService",
"description": "With this release, Amazon Transcribe now supports transcriptions from audio sources in British English (en-UK), Australian English (en-AU), and Canadian French (fr-CA)."
},
{
"type": "api-change",
"category": "EC2",
"description": "You can now launch the smaller-sized G3 instance called g3s.xlarge. G3s.xlarge provides 4 vCPU, 30.5 GB RAM and a NVIDIA Tesla M60 GPU. It is ideal for remote workstations, engineering and architectural applications, and 3D visualizations and rendering for visual effects."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.69.6 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "enhancement",
"category": "ClientSideMonitoring",
"description": "Adds MaxRetriesExceeded entry to ApiCall events."
},
{
"type": "api-change",
"category": "CloudTrail",
"description": "The LookupEvents API now supports two new attribute keys: ReadOnly and AccessKeyId"
}
]

17
vendor/aws/aws-sdk-php/.changes/3.69.7 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "enhancement",
"category": "Lambda",
"description": "Documentation updates for lambda"
},
{
"type": "api-change",
"category": "ServiceCatalog",
"description": "AWS Service Catalog enables you to reduce administrative maintenance and end-user training while adhering to compliance and security measures. With service actions, you as the administrator can enable end users to perform operational tasks, troubleshoot issues, run approved commands, or request permissions within Service Catalog. Service actions are defined using AWS Systems Manager documents, where you have access to pre-defined actions that implement AWS best practices, such asEC2 stop and reboot, as well as the ability to define custom actions."
},
{
"type": "api-change",
"category": "RDS",
"description": "This release adds a new parameter to specify the DB instance or cluster parameter group for restore from DB snapshot and restore to point int time operations. For more information, see Amazon RDS Documentation."
}
]

17
vendor/aws/aws-sdk-php/.changes/3.69.8 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "ResourceGroups",
"description": "AWS Resource Groups service added a new feature to filter resource groups by resource-type when using the ListGroups operation."
},
{
"type": "api-change",
"category": "Lightsail",
"description": "Adds support for Lightsail managed databases."
},
{
"type": "api-change",
"category": "Glue",
"description": "New Glue APIs for creating, updating, reading and deleting Data Catalog resource-based policies."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.69.9 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "CloudWatchEvents",
"description": "AWS Events - AWS Organizations Support in Event-Bus Policies. This release introduces a new parameter in the PutPermission API named Condition. Using the Condition parameter, customers can allow one or more AWS Organizations to access their CloudWatch Events Event-Bus resource."
},
{
"type": "enhancement",
"category": "APIGateway",
"description": "Documentation updates for API Gateway"
}
]

17
vendor/aws/aws-sdk-php/.changes/3.70.0 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "DatabaseMigrationService",
"description": "Add waiters for TestConnectionSucceeds, EndpointDeleted, ReplicationInstanceAvailable, ReplicationInstanceDeleted, ReplicationTaskReady, ReplicationTaskStopped, ReplicationTaskRunning and ReplicationTaskDeleted."
},
{
"type": "api-change",
"category": "RDS",
"description": "This release adds the listener connection endpoint for SQL Server Always On to the list of fields returned when performing a describe-db-instances operation."
},
{
"type": "feature",
"category": "Chime",
"description": "This is the initial release for the Amazon Chime AWS SDK. In this release, Amazon Chime adds support for administrative actions on users and accounts. API Documentation is also updated on https:\/\/docs.aws.amazon.com\/chime\/index.html"
}
]

22
vendor/aws/aws-sdk-php/.changes/3.70.1 vendored Normal file
View File

@@ -0,0 +1,22 @@
[
{
"type": "enhancement",
"category": "SecretsManager",
"description": "Documentation updates for AWS Secrets Manager."
},
{
"type": "api-change",
"category": "ConfigService",
"description": "With this release, AWS Config updated the ResourceType values. The updated list includes AWS Systems Manager AssociationCompliance and PatchCompliance, AWS Shield regional Protection, AWS Config ResourceCompliance, and AWS CodePipeline Pipeline."
},
{
"type": "api-change",
"category": "MediaStoreData",
"description": "The object size limit is increased from 10MB to 25MB and the content type is more permissive."
},
{
"type": "api-change",
"category": "Greengrass",
"description": "Greengrass APIs now support bulk deployment operations, and APIs that list definition versions now support pagination."
}
]

View File

@@ -0,0 +1,7 @@
[
{
"type": "api-change",
"category": "ServiceCatalog",
"description": "Service Catalog integration with AWS Organizations, enables customers to more easily create and manage a portfolio of IT services across an organization. Administrators can now take advantage of the AWS account structure and account groupings configured in AWS Organizations to share Service Catalog Portfolios increasing agility and reducing risk. With this integration the admin user will leverage the trust relationship that exists within the accounts of the Organization to share portfolios to the entire Organization, a specific Organizational Unit or a specific Account."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.70.3 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "Rekognition",
"description": "This release updates the DetectLabels operation. Bounding boxes are now returned for certain objects, a hierarchical taxonomy is now available for labels, and you can now get the version of the detection model used for detection."
},
{
"type": "api-change",
"category": "CloudDirectory",
"description": "ListObjectParents API now supports a bool parameter IncludeAllLinksToEachParent, which if set to true, will return a ParentLinks list instead of a Parents map; BatchRead API now supports ListObjectParents operation."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.70.4 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "api-change",
"category": "ServerlessApplicationRepository",
"description": "New AWS Serverless Application Repository APIs that support creating and reading a broader set of AWS CloudFormation templates, as well as enhancements to our existing APIs."
},
{
"type": "api-change",
"category": "EKS",
"description": "Adds waiters for ClusterActive and ClusterDeleted"
}
]

32
vendor/aws/aws-sdk-php/.changes/3.71.0 vendored Normal file
View File

@@ -0,0 +1,32 @@
[
{
"type": "enhancement",
"category": "CodeBuild",
"description": "Documentation updates for codebuild"
},
{
"type": "api-change",
"category": "EC2",
"description": "You can now launch the new Amazon EC2 memory optimized R5a and general purpose M5a instances families that feature AMD EPYC processors."
},
{
"type": "api-change",
"category": "WAFRegional",
"description": "You can now use AWS WAF to configure protections for your Amazon API Gateway APIs. This will enable you to block (or count) undesired traffic to your APIs based on the different AWS WAF rules and conditions you create. For more information about AWS WAF, see the AWS WAF Developer Guide."
},
{
"type": "api-change",
"category": "Pinpoint",
"description": "This update adds the ability to send transactional email by using the SendMessage API. Transactional emails are emails that you send directly to specific email addresses. Unlike campaign-based email that you send from Amazon Pinpoint, you don't have to create segments and campaigns in order to send transactional email."
},
{
"type": "api-change",
"category": "APIGateway",
"description": "AWS WAF integration with APIGW. Changes for adding webAclArn as a part of Stage output. When the user calls a get-stage or get-stages, webAclArn will also be returned as a part of the output."
},
{
"type": "feature",
"category": "PinpointEmail",
"description": "This is the first release of the Amazon Pinpoint Email API. You can use this API to configure and send transactional email from your Amazon Pinpoint account to specific email addresses. Unlike campaign-based email that you send from Amazon Pinpoint, you don't have to create segments and campaigns in order to send transactional email. "
}
]

17
vendor/aws/aws-sdk-php/.changes/3.71.1 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "EC2",
"description": "VM Import\/Export now supports generating encrypted EBS snapshots, as well as AMIs backed by encrypted EBS snapshots during the import process."
},
{
"type": "api-change",
"category": "CostExplorer",
"description": "Enable Payer Accounts to View Linked Account Recommendations. Payer Accounts can specify \"LINKED\" as scope in the request now. In the response, there is a new filed called AccountId in ReservationPurchaseRecommendationDetail for indicating which account is this recommendation detail belongs to."
},
{
"type": "api-change",
"category": "DatabaseMigrationService",
"description": "Update the DMS TestConnectionSucceeds waiter."
}
]

17
vendor/aws/aws-sdk-php/.changes/3.71.2 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "enhancement",
"category": "CloudWatchEvents",
"description": "Documentation updates for events"
},
{
"type": "api-change",
"category": "DLM",
"description": "Amazon Data Lifecycle Manager adds support for copying EBS volume tags to EBS snapshots. AWS resource tags allow customers to add metadata and apply access policies to your Amazon Elastic Block Store (Amazon EBS) resources. Starting today, customers can use Amazon Data Lifecycle Manager (DLM) to copy tags on EBS volumes to EBS snapshots. This allows customers to easily set snapshot metadata, such as access policies, to match the parent volume. Customers can enable this functionality on new or existing lifecycle policies. They can also choose to disable it at a future date. "
},
{
"type": "api-change",
"category": "MediaLive",
"description": "You can now switch a live channel between preconfigured inputs. This means assigned inputs for a running channel can be changed according to a defined schedule. You can also use MP4 files as inputs."
}
]

View File

@@ -0,0 +1,7 @@
[
{
"type": "api-change",
"category": "MediaPackage",
"description": "As a part of SPEKE DRM encryption, MediaPackage now supports encrypted content keys. You can enable this enhanced content protection in an OriginEndpoint's encryption settings. When this is enabled, MediaPackage indicates to the key server that it requires an encrypted response. To use this, your DRM key provider must support content key encryption. For details on this feature, see the AWS MediaPackage User Guide at https:\/\/docs.aws.amazon.com\/mediapackage\/latest\/ug\/what-is.html."
}
]

37
vendor/aws/aws-sdk-php/.changes/3.71.4 vendored Normal file
View File

@@ -0,0 +1,37 @@
[
{
"type": "api-change",
"category": "Budgets",
"description": "1. Added budget performance history, enabling you to see how well your budgets matched your actual costs and usage. 2. Added budget performance history, notification state, and last updated time, enabling you to see how well your budgets matched your actual costs and usage, how often your budget alerts triggered, and when your budget was last updated."
},
{
"type": "api-change",
"category": "RDS",
"description": "API Update for RDS: this update enables Custom Endpoints, a new feature compatible with Aurora Mysql, Aurora PostgreSQL and Neptune that allows users to configure a customizable endpoint that will provide access to their instances in a cluster. "
},
{
"type": "api-change",
"category": "Batch",
"description": "Adding EC2 Launch Template support in AWS Batch Compute Environments."
},
{
"type": "api-change",
"category": "Polly",
"description": "Amazon Polly adds new female voices: Italian - Bianca, Castilian Spanish - Lucia and new language: Mexican Spanish with new female voice - Mia."
},
{
"type": "api-change",
"category": "CloudFormation",
"description": "The Drift Detection feature enables customers to detect whether a stack's actual configuration differs, or has drifted, from its expected configuration as defined within AWS CloudFormation."
},
{
"type": "api-change",
"category": "CodePipeline",
"description": "Add support for cross-region pipeline with accompanying definitions as needed in the AWS CodePipeline API Guide."
},
{
"type": "api-change",
"category": "Firehose",
"description": "With this release, Amazon Kinesis Data Firehose allows you to enable\/disable server-side encryption(SSE) for your delivery streams ensuring encryption of data at rest. For technical documentation, look at https:\/\/docs.aws.amazon.com\/firehose\/latest\/dev\/encryption.html"
}
]

17
vendor/aws/aws-sdk-php/.changes/3.71.5 vendored Normal file
View File

@@ -0,0 +1,17 @@
[
{
"type": "api-change",
"category": "Chime",
"description": "This release adds support in ListUsers API to filter the list by an email address."
},
{
"type": "enhancement",
"category": "Budgets",
"description": "Doc Update: 1. Available monthly-budgets maximal history data points from 12 to 13. 2. Added 'Amazon Elasticsearch' costfilters support."
},
{
"type": "api-change",
"category": "Redshift",
"description": "Amazon Redshift provides the option to defer non-mandatory maintenance updates to a later date."
}
]

37
vendor/aws/aws-sdk-php/.changes/3.71.6 vendored Normal file
View File

@@ -0,0 +1,37 @@
[
{
"type": "api-change",
"category": "ServiceCatalog",
"description": "Adds support for Cloudformation StackSets in Service Catalog"
},
{
"type": "api-change",
"category": "ResourceGroups",
"description": "The AWS Resource Groups service added support for AWS CloudFormation stack-based groups."
},
{
"type": "api-change",
"category": "AutoScaling",
"description": "EC2 Auto Scaling now allows users to provision and automatically scale instances across purchase options (Spot, On-Demand, and RIs) and instance types in a single Auto Scaling group (ASG)."
},
{
"type": "api-change",
"category": "SageMaker",
"description": "SageMaker now makes the final set of metrics published from training jobs available in the DescribeTrainingJob results. Automatic Model Tuning now supports warm start of hyperparameter tuning jobs. Notebook instances now support a larger number of instance types to include instances from the ml.t3, ml.m5, ml.c4, ml.c5 families."
},
{
"type": "api-change",
"category": "SNS",
"description": "Added an optional request parameter, named Attributes, to the Amazon SNS CreateTopic API action. For more information, see the Amazon SNS API Reference (https:\/\/docs.aws.amazon.com\/sns\/latest\/api\/API_CreateTopic.html)."
},
{
"type": "api-change",
"category": "MediaTailor",
"description": "AWS Elemental MediaTailor SDK now returns a manifest endpoint prefix for clients to initiate a DASH playback session."
},
{
"type": "api-change",
"category": "EC2",
"description": "Amazon EC2 Fleet now supports a new request type \"Instant\" that you can use to provision capacity synchronously across instance types & purchase models and CreateFleet will return the instances launched in the API response."
}
]

77
vendor/aws/aws-sdk-php/.changes/3.72.0 vendored Normal file
View File

@@ -0,0 +1,77 @@
[
{
"type": "api-change",
"category": "CodeBuild",
"description": "Adding queue phase and configurable queue timeout to CodeBuild."
},
{
"type": "api-change",
"category": "DirectConnect",
"description": "This release enables DirectConnect customers to have logical redundancy on virtual interfaces within supported DirectConnect locations."
},
{
"type": "feature",
"category": "PinpointSMSVoice",
"description": "With Amazon Pinpoint Voice, you can use text-to-speech technology to deliver personalized voice messages to your customers. Amazon Pinpoint Voice is a way to deliver transactional messages -- such as one-time passwords and appointment confirmations to customers."
},
{
"type": "api-change",
"category": "Redshift",
"description": "With this release, Redshift is providing API's for better snapshot management by supporting user defined automated snapshot schedules, retention periods for manual snapshots, and aggregate snapshot actions including batch deleting user snapshots, viewing account level snapshot storage metrics, and better filtering and sorting on the describe-cluster-snapshots API. Automated snapshots can be scheduled to be taken at a custom interval and the schedule created can be reused across clusters. Manual snapshot retention periods can be set at the cluster, snapshot, and cross-region-copy level. The retention period set on a manual snapshot indicates how many days the snapshot will be retained before being automatically deleted."
},
{
"type": "api-change",
"category": "RDS",
"description": "Introduces DB Instance Automated Backups for the MySQL, MariaDB, PostgreSQL, Oracle and Microsoft SQL Server database engines. You can now retain Amazon RDS automated backups (system snapshots and transaction logs) when you delete a database instance. This allows you to restore a deleted database instance to a specified point in time within the backup retention period even after it has been deleted, protecting you against accidental deletion of data. For more information, see Amazon RDS Documentation."
},
{
"type": "api-change",
"category": "ECS",
"description": "In this release, Amazon ECS introduces multiple features. First, ECS now supports integration with Systems Manager Parameter Store for injecting runtime secrets. Second, ECS introduces support for resources tagging. Finally, ECS introduces a new ARN and ID Format for its resources, and provides new APIs for opt-in to the new formats. "
},
{
"type": "api-change",
"category": "S3",
"description": "Add support for new S3 Block Public Access bucket-level APIs. The new Block Public Access settings allow bucket owners to prevent public access to S3 data via bucket\/object ACLs or bucket policies."
},
{
"type": "api-change",
"category": "Comprehend",
"description": "Amazon Comprehend Custom Classification automatically trains classification models using your text and custom labels."
},
{
"type": "feature",
"category": "S3Control",
"description": "Add support for new S3 Block Public Access account-level APIs. The Block Public Access settings allow account owners to prevent public access to S3 data via bucket\/object ACLs or bucket policies."
},
{
"type": "api-change",
"category": "DatabaseMigrationService",
"description": "Settings structures have been added to our DMS endpoint APIs to support Kinesis and Elasticsearch as targets. We are introducing the ability to configure custom DNS name servers on a replication instance as a beta feature. "
},
{
"type": "api-change",
"category": "TranscribeService",
"description": "With this release, Amazon Transcribe now publicly supports transcriptions from audio sources in British English (en-GB), Australian English (en-AU), and Canadian French (fr-CA). Amazon Transcribe now also supports the following languages in Private beta: Germany German (de-DE), Brazil Portuguese (pt-BR), France French (fr-FR)."
},
{
"type": "api-change",
"category": "IAM",
"description": "We are making it easier for you to manage your AWS Identity and Access Management (IAM) resources by enabling you to add tags to your IAM principals (users and roles). Adding tags on IAM principals will enable you to write fewer policies for permissions management and make policies easier to comprehend. Additionally, tags will also make it easier for you to grant access to AWS resources."
},
{
"type": "feature",
"category": "RAM",
"description": "This is the initial release of AWS Resource Access Manager (RAM) which provides you the ability to share your resources across AWS accounts or within your AWS Organization. You can now create resources centrally and use AWS RAM to share those resources with other accounts, eliminating the need to provision and manage resources in every account. When you share a resource with another account, that account is granted access. Any policies and permissions in that account apply to the shared resource. "
},
{
"type": "feature",
"category": "Route53Resolver",
"description": "This is the first release of the Amazon Route 53 Resolver API. Customers now have the ability to create and manage Amazon Route 53 Resolver endpoints and Amazon Route 53 Resolver rules. "
},
{
"type": "api-change",
"category": "Pinpoint",
"description": "1. With Amazon Pinpoint Voice, you can use text-to-speech technology to deliver personalized voice messages to your customers. Amazon Pinpoint Voice is a great way to deliver transactional messages -- such as one-time passwords and identity confirmations -- to customers. 2. Adding support for Campaign Event Triggers. With Campaign Event Triggers you can now schedule campaigns to execute based on incoming event data and target just the source of the event."
}
]

27
vendor/aws/aws-sdk-php/.changes/3.72.1 vendored Normal file
View File

@@ -0,0 +1,27 @@
[
{
"type": "api-change",
"category": "Comprehend",
"description": "Amazon Comprehend Custom Entities automatically trains entity recognition models using your entities and noun-based phrases. "
},
{
"type": "api-change",
"category": "ECS",
"description": "This release of Amazon Elastic Container Service (Amazon ECS) introduces support for additional Docker flags as Task Definition parameters. Customers can now configure their ECS Tasks to use pidMode (pid) and ipcMode (ipc) Docker flags."
},
{
"type": "api-change",
"category": "CostExplorer",
"description": "This release introduces a new operation called GetCostForecast operation, which allows you to programmatically access AWS Cost Explorer's forecasting engine and is now generally available."
},
{
"type": "api-change",
"category": "WorkSpaces",
"description": "Added new Bring Your Own License (BYOL) automation APIs. With the new APIs, you can list available management CIDR ranges for dedicated tenancy, enable your account for BYOL, describe BYOL status of your account, and import BYOL images. Added new APIs to also describe and delete WorkSpaces images. "
},
{
"type": "api-change",
"category": "SSM",
"description": "AWS Systems Manager Automation now allows you to execute and manage Automation workflows across multiple accounts and regions. "
}
]

72
vendor/aws/aws-sdk-php/.changes/3.73.0 vendored Normal file
View File

@@ -0,0 +1,72 @@
[
{
"type": "feature",
"category": "EndpointParameterMiddleware",
"description": "Adds support for services using modeled endpoint prefixes, both static and user-defined."
},
{
"type": "api-change",
"category": "Lambda",
"description": "AWS Lambda now supports python3.7 and the Kinesis Data Streams (KDS) enhanced fan-out and HTTP\/2 data retrieval features for Kinesis event sources."
},
{
"type": "api-change",
"category": "MediaConvert",
"description": "AWS Elemental MediaConvert SDK has added several features including support for: SPEKE full document encryption, up to 150 elements for input stitching, input and motion image insertion, AWS CLI path arguments in S3 links including special characters, AFD signaling, additional caption types, and client-side encrypted input files."
},
{
"type": "api-change",
"category": "IoT",
"description": "IoT now supports resource tagging and tag based access control for Billing Groups, Thing Groups, Thing Types, Jobs, and Security Profiles. IoT Billing Groups help you group devices to categorize and track your costs. AWS IoT Device Management also introduces three new features: 1. Dynamic thing groups. 2. Jobs dynamic rollouts. 3. Device connectivity indexing. Dynamic thing groups lets you to create a group of devices using a Fleet Indexing query. The devices in your group will be automatically added or removed when they match your specified query criteria. Jobs dynamic rollout allows you to configure an exponentially increasing rate of deployment for device updates and define failure criteria to cancel your job. Device connectivity indexing allows you to index your devices' lifecycle events to discover whether devices are connected or disconnected to AWS IoT."
},
{
"type": "api-change",
"category": "WorkDocs",
"description": "With this release, clients can now use the GetResources API to fetch files and folders from the user's SharedWithMe collection. And also through this release, the existing DescribeActivities API has been enhanced to support additional filters such as the ActivityType and the ResourceId."
},
{
"type": "api-change",
"category": "DeviceFarm",
"description": "Customers can now schedule runs without a need to create a Device Pool. They also get realtime information on public device availability."
},
{
"type": "api-change",
"category": "RDS",
"description": "This release adds a new parameter to specify VPC security groups for restore from DB snapshot, restore to point int time and create read replica operations. For more information, see Amazon RDS Documentation."
},
{
"type": "api-change",
"category": "Batch",
"description": "Adding multinode parallel jobs, placement group support for compute environments."
},
{
"type": "api-change",
"category": "ConfigService",
"description": "In this release, AWS Config adds support for aggregating the configuration data of AWS resources into multi-account and multi-region aggregators. AWS Config adds four APIs to query and retrieve aggregated resource configurations. 1) BatchGetAggregateResourceConfig, returns the current configuration items for resources that are present in your AWS Config aggregator. 2) GetAggregateDiscoveredResourceCounts, returns the resource counts across accounts and regions that are present in your AWS Config aggregator. 3) GetAggregateResourceConfig, returns current configuration item that is aggregated for your specific resource in a specific source account and region. 4) ListAggregateDiscoveredResources, accepts a resource type and returns a list of resource identifiers that are aggregated for a specific resource type across accounts and regions."
},
{
"type": "api-change",
"category": "CloudTrail",
"description": "This release supports creating a trail in CloudTrail that logs events for all AWS accounts in an organization in AWS Organizations. This helps enable you to define a uniform event logging strategy for your organization. An organization trail is applied automatically to each account in the organization and cannot be modified by member accounts. To learn more, please see the AWS CloudTrail User Guide https:\/\/docs.aws.amazon.com\/awscloudtrail\/latest\/userguide\/cloudtrail-user-guide.html"
},
{
"type": "api-change",
"category": "EC2",
"description": "Adding AvailabilityZoneId to DescribeAvailabilityZones"
},
{
"type": "api-change",
"category": "WorkSpaces",
"description": "Added new APIs to Modify and Describe WorkSpaces client properties for users in a directory. With the new APIs, you can enable\/disable remember me option in WorkSpaces client for users in a directory."
},
{
"type": "api-change",
"category": "CloudFormation",
"description": "Use the CAPABILITY_AUTO_EXPAND capability to create or update a stack directly from a stack template that contains macros, without first reviewing the resulting changes in a change set first."
},
{
"type": "enhancement",
"category": "Lightsail",
"description": "Add Managed Database operations to OperationType enum."
}
]

57
vendor/aws/aws-sdk-php/.changes/3.74.0 vendored Normal file
View File

@@ -0,0 +1,57 @@
[
{
"type": "api-change",
"category": "AppSync",
"description": "AWS AppSync now supports: 1. Pipeline Resolvers - Enables execution of one or more operations against multiple data sources in order, on a single GraphQL field. This allows orchestration of actions by composing code into a single Resolver, or share code across Resolvers. 2. Aurora Serverless Data Source - Built-in resolver for executing GraphQL operations with the new Aurora Serverless Data API, including connection management functionality."
},
{
"type": "feature",
"category": "RDSDataService",
"description": "The RDS Data API Beta is available for the MySQL-compatible edition of Amazon Aurora Serverless in the US East (N. Virginia) Region. This API enables you to easily access Aurora Serverless with web services-based applications including AWS Lambda and AWS AppSync."
},
{
"type": "api-change",
"category": "XRay",
"description": "Groups build upon X-Ray filter expressions to allow for fine tuning trace summaries and service graph results. You can configure groups by using the AWS X-Ray console or by using the CreateGroup API. The addition of groups has extended the available request fields to the GetServiceGraph API. You can now specify a group name or group ARN to retrieve its service graph."
},
{
"type": "api-change",
"category": "CloudFront",
"description": "With Origin Failover capability in CloudFront, you can setup two origins for your distributions - primary and secondary, such that your content is served from your secondary origin if CloudFront detects that your primary origin is unavailable. These origins can be any combination of AWS origins or non-AWS custom HTTP origins. For example, you can have two Amazon S3 buckets that serve as your origin that you independently upload your content to. If an object that CloudFront requests from your primary bucket is not present or if connection to your primary bucket times-out, CloudFront will request the object from your secondary bucket. So, you can configure CloudFront to trigger a failover in response to either HTTP 4xx or 5xx status codes."
},
{
"type": "feature",
"category": "QuickSight",
"description": "Amazon QuickSight is a fully managed, serverless, cloud business intelligence system that allows you to extend data and insights to every user in your organization. The first release of APIs for Amazon QuickSight introduces embedding and user\/group management capabilities. The get-dashboard-embed-url API allows you to obtain an authenticated dashboard URL that can be embedded in application domains whitelisted for QuickSight dashboard embedding. User APIs allow you to programmatically expand and manage your QuickSight deployments while group APIs allow easier permissions management for resources within QuickSight."
},
{
"type": "api-change",
"category": "CloudWatch",
"description": "Amazon CloudWatch now supports alarms on metric math expressions."
},
{
"type": "enhancement",
"category": "Redshift",
"description": "Documentation updates for redshift"
},
{
"type": "api-change",
"category": "DeviceFarm",
"description": "Disabling device filters"
},
{
"type": "api-change",
"category": "SSM",
"description": "AWS Systems Manager Distributor helps you securely distribute and install software packages."
},
{
"type": "api-change",
"category": "MediaLive",
"description": "You can now include the media playlist(s) from both pipelines in the HLS master manifest for seamless failover."
},
{
"type": "api-change",
"category": "AutoScalingPlans",
"description": "In this release, AWS Auto Scaling adds three features: 1) Predictive scaling for EC2 Auto Scaling, which analyzes your application workload history to forecast future capacity requirements, 2) an option to replace existing scaling policies that are associated with the resources in your scaling plan, and 3) an option that allows you to use predictive scaling with or without your plan's dynamic scaling feature."
}
]

View File

@@ -0,0 +1,7 @@
[
{
"type": "api-change",
"category": "Rekognition",
"description": "This release updates the DetectFaces and IndexFaces operation. When the Attributes input parameter is set to ALL, the face location landmarks includes 5 new landmarks: upperJawlineLeft, midJawlineLeft, chinBottom, midJawlineRight, upperJawlineRight."
}
]

32
vendor/aws/aws-sdk-php/.changes/3.75.0 vendored Normal file
View File

@@ -0,0 +1,32 @@
[
{
"type": "api-change",
"category": "S3",
"description": "The INTELLIGENT_TIERING storage class is designed to optimize storage costs by automatically moving data to the most cost effective storage access tier, without performance impact or operational overhead. This SDK release provides API support for this new storage class."
},
{
"type": "feature",
"category": "Amplify",
"description": "Release of AWS Amplify: Everything you need to develop & deploy cloud-powered mobile and web apps."
},
{
"type": "feature",
"category": "RoboMaker",
"description": "(New Service) AWS RoboMaker is a service that makes it easy to develop, simulate, and deploy intelligent robotics applications at scale. "
},
{
"type": "api-change",
"category": "Snowball",
"description": "AWS announces the availability of AWS Snowball Edge Compute Optimized to run compute-intensive applications is disconnected and physically harsh environments. It comes with 52 vCPUs, 208GB memory, 8TB NVMe SSD, and 42TB S3-compatible storage to accelerate local processing and is well suited for use cases such as full motion video processing, deep IoT analytics, and continuous machine learning in bandwidth-constrained locations. It features new instances types called SBE-C instances that are available in eight sizes and multiple instances can be run on the device at the same time. Optionally, developers can choose the compute optimized device to include a GPU and use SBE-G instances for accelerating their application performance. "
},
{
"type": "feature",
"category": "DataSync",
"description": "AWS DataSync simplifies, automates, and accelerates moving and replicating data between on-premises storage and AWS services over the network."
},
{
"type": "feature",
"category": "Transfer",
"description": "AWS Transfer for SFTP is a fully managed service that enables transfer of secure data over the internet into and out of Amazon S3. SFTP is deeply embedded in data exchange workflows across different industries such as financial services, healthcare, advertising, and retail, among others."
}
]

42
vendor/aws/aws-sdk-php/.changes/3.76.0 vendored Normal file
View File

@@ -0,0 +1,42 @@
[
{
"type": "api-change",
"category": "EC2",
"description": "Adds the following updates: 1. Transit Gateway helps easily scale connectivity across thousands of Amazon VPCs, AWS accounts, and on-premises networks. 2. Amazon EC2 A1 instance is a new Arm architecture based general purpose instance. 3. You can now launch the new Amazon EC2 compute optimized C5n instances that can utilize up to 100 Gbps of network bandwidth."
},
{
"type": "feature",
"category": "GlobalAccelerator",
"description": "AWS Global Accelerator is a network layer service that helps you improve the availability and performance of the applications that you offer to your global customers. Global Accelerator uses the AWS global network to direct internet traffic from your users to your applications running in AWS Regions. Global Accelerator creates a fixed entry point for your applications through static anycast IP addresses, and routes user traffic to the optimal endpoint based on performance, application health and routing policies that you can configure. Global Accelerator supports the following features at launch: static anycast IP addresses, support for TCP and UDP, support for Network Load Balancers, Application Load Balancers and Elastic-IP address endpoints, continuous health checking, instant regional failover, fault isolating Network Zones, granular traffic controls, and client affinity."
},
{
"type": "api-change",
"category": "S3",
"description": "Four new Amazon S3 Glacier features help you reduce your storage costs by making it even easier to build archival applications using the Amazon S3 Glacier storage class. S3 Object Lock enables customers to apply Write Once Read Many (WORM) protection to objects in S3 in order to prevent object deletion for a customer-defined retention period. S3 Inventory now supports fields for reporting on S3 Object Lock. \"ObjectLockRetainUntilDate\", \"ObjectLockMode\", and \"ObjectLockLegalHoldStatus\" are now available as valid optional fields."
},
{
"type": "api-change",
"category": "IoT",
"description": "As part of this release, we are extending capability of AWS IoT Rules Engine to support IoT Events rule action. The IoT Events rule action lets you send messages from IoT sensors and applications to IoT Events for pattern recognition and event detection."
},
{
"type": "api-change",
"category": "KMS",
"description": "AWS Key Management Service (KMS) now enables customers to create and manage dedicated, single-tenant key stores in addition to the default KMS key store. These are known as custom key stores and are deployed using AWS CloudHSM clusters. Keys that are created in a KMS custom key store can be used like any other customer master key in KMS."
},
{
"type": "api-change",
"category": "SMS",
"description": "In this release, AWS Server Migration Service (SMS) has added multi-server migration support to simplify the application migration process. Customers can migrate all their application-specific servers together as a single unit as opposed to moving individual server one at a time. The new functionality includes - 1. Ability to group on-premises servers into applications and application tiers. 2. Auto-generated CloudFormation Template and Stacks for launching migrated servers into EC2. 3. Ability to run post-launch configuration scripts to configure servers and applications in EC2. In order for SMS to launch servers into your AWS account using CloudFormation Templates, we have also updated the ServerMigrationServiceRole IAM policy to include appropriate permissions. Refer to Server Migration Service documentation for more details. "
},
{
"type": "api-change",
"category": "Greengrass",
"description": "Support Greengrass Connectors and allow Lambda functions to run without Greengrass containers."
},
{
"type": "api-change",
"category": "IoTAnalytics",
"description": "Added an optional list of dataset content delivery configuration for CreateDataset and UpdateDataset. DescribeDataset will now include the list of delivery configuration, and will be an empty array if none exist."
}
]

52
vendor/aws/aws-sdk-php/.changes/3.77.0 vendored Normal file
View File

@@ -0,0 +1,52 @@
[
{
"type": "api-change",
"category": "MarketplaceMetering",
"description": "RegisterUsage operation added to AWS Marketplace Metering Service, allowing sellers to meter and entitle Docker container software use with AWS Marketplace. For details on integrating Docker containers with RegisterUsage see: https:\/\/docs.aws.amazon.com\/marketplace\/latest\/userguide\/entitlement-and-metering-for-paid-products.html"
},
{
"type": "api-change",
"category": "CodeDeploy",
"description": "Support for Amazon ECS service deployment - AWS CodeDeploy now supports the deployment of Amazon ECS services. An Amazon ECS deployment uses an Elastic Load Balancer, two Amazon ECS target groups, and a listener to reroute production traffic from your Amazon ECS service's original task set to a new replacement task set. The original task set is terminated when the deployment is complete. Success of a deployment can be validated using Lambda functions that are referenced by the deployment. This provides the opportunity to rollback if necessary. You can use the new ECSService, ECSTarget, and ECSTaskSet data types in the updated SDK to create or retrieve an Amazon ECS deployment."
},
{
"type": "api-change",
"category": "ECS",
"description": "This release of Amazon Elastic Container Service (Amazon ECS) introduces support for blue\/green deployment feature. Customers can now update their ECS services in a blue\/green deployment pattern via using AWS CodeDeploy."
},
{
"type": "api-change",
"category": "Translate",
"description": "This release includes the new custom terminology feature. Using custom terminology with your translation requests enables you to make sure that your brand names, character names, model names, and other unique content is translated exactly the way you need it, regardless of its context and the Amazon Translate algorithm's decision. See the documentation for more information."
},
{
"type": "api-change",
"category": "EC2",
"description": "With VPC sharing, you can now allow multiple accounts in the same AWS Organization to launch their application resources, like EC2 instances, RDS databases, and Redshift clusters into shared, centrally managed VPCs."
},
{
"type": "feature",
"category": "ComprehendMedical",
"description": "The first release of Comprehend Medical includes two APIs, detectPHI and detectEntities. DetectPHI extracts PHI from your clinical text, and detectEntities extracts entities such as medication, medical conditions, or anatomy. DetectEntities also extracts attributes (e.g. dosage for medication) and identifies contextual traits (e.g. negation) for each entity."
},
{
"type": "api-change",
"category": "CloudWatchLogs",
"description": "Six new APIs added to support CloudWatch Logs Insights. The APIs are StartQuery, StopQuery, GetQueryResults, GetLogRecord, GetLogGroupFields, and DescribeQueries."
},
{
"type": "feature",
"category": "KinesisAnalyticsV2",
"description": "Amazon Kinesis Data Analytics now supports Java-based stream processing applications, in addition to the previously supported SQL. Now, you can use your own Java code in Amazon Kinesis Data Analytics to build and run stream processing applications. This new capability also comes with an update to the previous Amazon Kinesis Data Analytics APIs to enable support for different runtime environments and more."
},
{
"type": "feature",
"category": "MediaConnect",
"description": "This is the initial release for AWS Elemental MediaConnect, an ingest and transport service for live video. This new AWS service allows broadcasters and content owners to send high-value live content into the cloud, securely transmit it to partners for distribution, and replicate it to multiple destinations around the globe."
},
{
"type": "api-change",
"category": "KinesisAnalytics",
"description": "Improvements to error messages, validations, and more to the Kinesis Data Analytics APIs."
}
]

27
vendor/aws/aws-sdk-php/.changes/3.78.0 vendored Normal file
View File

@@ -0,0 +1,27 @@
[
{
"type": "feature",
"category": "RetryMiddleware",
"description": "Adds support for custom retryable status and error codes."
},
{
"type": "feature",
"category": "FSx",
"description": "Amazon FSx provides fully-managed third-party file systems optimized for a variety of enterprise and compute-intensive workloads."
},
{
"type": "api-change",
"category": "RDS",
"description": "Amazon Aurora Global Database. This release introduces support for Global Database, a feature that allows a single Amazon Aurora database to span multiple AWS regions. Customers can use the feature to replicate data with no impact on database performance, enable fast local reads with low latency in each region, and improve disaster recovery from region-wide outages. You can create, modify and describe an Aurora Global Database, as well as add or remove regions from your Global Database."
},
{
"type": "feature",
"category": "SecurityHub",
"description": "AWS Security Hub is a security and compliance center that correlates AWS security findings and performs automated compliance checks"
},
{
"type": "api-change",
"category": "DynamoDB",
"description": "Amazon DynamoDB now supports the following features: DynamoDB on-demand and transactions. DynamoDB on-demand is a flexible new billing option for DynamoDB capable of serving thousands of requests per second without capacity planning. DynamoDB on-demand offers simple pay-per-request pricing for read and write requests so that you only pay for what you use, making it easy to balance costs and performance. Transactions simplify the developer experience of making coordinated, all-or-nothing changes to multiple items both within and across tables. The new transactional APIs provide atomicity, consistency, isolation, and durability (ACID) in DynamoDB, helping developers support sophisticated workflows and business logic that requires adding, updating, or deleting multiple items using native, server-side transactions. For more information, see the Amazon DynamoDB Developer Guide."
}
]

32
vendor/aws/aws-sdk-php/.changes/3.79.0 vendored Normal file
View File

@@ -0,0 +1,32 @@
[
{
"type": "api-change",
"category": "ServiceDiscovery",
"description": "AWS Cloud Map lets you define friendly names for your cloud resources so that your applications can quickly and dynamically discover them. When a resource becomes available (for example, an Amazon EC2 instance running a web server), you can register a Cloud Map service instance. Then your application can discover service instances by submitting DNS queries or API calls."
},
{
"type": "api-change",
"category": "SageMaker",
"description": "Amazon SageMaker now has Algorithm and Model Package entities that can be used to create Training Jobs, Hyperparameter Tuning Jobs and hosted Models. Subscribed Marketplace products can be used on SageMaker to create Training Jobs, Hyperparameter Tuning Jobs and Models. Notebook Instances and Endpoints can leverage Elastic Inference accelerator types for on-demand GPU computing. Model optimizations can be performed with Compilation Jobs. Labeling Jobs can be created and supported by a Workforce. Models can now contain up to 5 containers allowing for inference pipelines within Endpoints. Code Repositories (such as Git) can be linked with SageMaker and loaded into Notebook Instances. Network isolation is now possible on Models, Training Jobs, and Hyperparameter Tuning Jobs, which restricts inbound\/outbound network calls for the container. However, containers can talk to their peers in distributed training mode within the same security group. A Public Beta Search API was added that currently supports Training Jobs."
},
{
"type": "api-change",
"category": "EC2",
"description": "Adds the following updates: 1. You can now hibernate and resume Amazon-EBS backed instances using the StopInstances and StartInstances APIs. For more information about using this feature and supported instance types and operating systems, visit the user guide. 2. Amazon Elastic Inference accelerators are resources that you can attach to current generation EC2 instances to accelerate your deep learning inference workloads. With Amazon Elastic Inference, you can configure the right amount of inference acceleration to your deep learning application without being constrained by fixed hardware configurations and limited GPU selection. 3. AWS License Manager makes it easier to manage licenses in AWS and on premises when customers run applications using existing licenses from a variety of software vendors including Microsoft, SAP, Oracle, and IBM."
},
{
"type": "feature",
"category": "LicenseManager",
"description": "AWS License Manager makes it easier to manage licenses in AWS and on premises when customers run applications using existing licenses from a variety of software vendors including Microsoft, SAP, Oracle, and IBM. AWS License Manager automatically tracks and controls license usage once administrators have created and enforced rules that emulate the terms of their licensing agreements. The capabilities of AWS License Manager are available through SDK and Tools, besides the management console and CLI."
},
{
"type": "feature",
"category": "AppMesh",
"description": "AWS App Mesh is a service mesh that makes it easy to monitor and control communications between microservices of an application. AWS App Mesh APIs are available for preview in eu-west-1, us-east-1, us-east-2, and us-west-2 regions."
},
{
"type": "api-change",
"category": "Lightsail",
"description": "This update adds the following features: 1. Copy instance and disk snapshots within the same AWS Region or from one region to another in Amazon Lightsail. 2. Export Lightsail instance and disk snapshots to Amazon Elastic Compute Cloud (Amazon EC2). 3. Create an Amazon EC2 instance from an exported Lightsail instance snapshot using AWS CloudFormation stacks. 4. Apply tags to filter your Lightsail resources, or organize your costs, or control access."
}
]

42
vendor/aws/aws-sdk-php/.changes/3.80.0 vendored Normal file
View File

@@ -0,0 +1,42 @@
[
{
"type": "api-change",
"category": "ElasticLoadBalancingv2",
"description": "This release allows Application Load Balancers to route traffic to Lambda functions, in addition to instances and IP addresses."
},
{
"type": "api-change",
"category": "SFN",
"description": "AWS Step Functions is now integrated with eight additional AWS services: Amazon ECS, AWS Fargate, Amazon DynamoDB, Amazon SNS, Amazon SQS, AWS Batch, AWS Glue, and Amazon SageMaker. To learn more, please see https:\/\/docs.aws.amazon.com\/step-functions\/index.html"
},
{
"type": "api-change",
"category": "ServerlessApplicationRepository",
"description": "AWS Serverless Application Repository now supports nested applications. You can nest individual applications as components of a larger application to make it easy to assemble and deploy new serverless architectures. "
},
{
"type": "api-change",
"category": "S3",
"description": "Fixed issue with ObjectLockRetainUntilDate in S3 PutObject"
},
{
"type": "api-change",
"category": "CloudWatchEvents",
"description": "Support for Managed Rules (rules that are created and maintained by the AWS services in your account) is added."
},
{
"type": "api-change",
"category": "Lambda",
"description": "AWS Lambda now supports Lambda Layers and Ruby as a runtime. Lambda Layers are a new type of artifact that contains arbitrary code and data, and may be referenced by zero, one, or more functions at the same time. You can also now develop your AWS Lambda function code using the Ruby programming language."
},
{
"type": "feature",
"category": "Kafka",
"description": "This is the initial SDK release for Amazon Managed Streaming for Kafka (Amazon MSK). Amazon MSK is a service that you can use to easily build, monitor, and manage Apache Kafka clusters in the cloud."
},
{
"type": "api-change",
"category": "XRay",
"description": "GetTraceSummaries - Now provides additional information regarding your application traces such as Availability Zone, Instance ID, Resource ARN details, Revision, Entry Point, Root Cause Exceptions and Root Causes for Fault, Error and Response Time."
}
]

12
vendor/aws/aws-sdk-php/.changes/3.80.1 vendored Normal file
View File

@@ -0,0 +1,12 @@
[
{
"type": "enhancement",
"category": "S3",
"description": "Add MD5 header to PutObjectLegalHold, PutObjectRetention, and PutObjectLockConfiguration."
},
{
"type": "api-change",
"category": "S3",
"description": "Fixed issue with Content-MD5 for S3 PutObjectLegalHold, PutObjectRetention and PutObjectLockConfiguration."
}
]

22
vendor/aws/aws-sdk-php/.changes/3.80.2 vendored Normal file
View File

@@ -0,0 +1,22 @@
[
{
"type": "api-change",
"category": "DeviceFarm",
"description": "Customers can now schedule runs without a need to create a Device Pool. They also get realtime information on public device availability."
},
{
"type": "enhancement",
"category": "MediaConvert",
"description": "Documentation updates for mediaconvert"
},
{
"type": "api-change",
"category": "StorageGateway",
"description": "API list-local-disks returns a list of the gateway's local disks. This release adds a field DiskAttributeList to these disks."
},
{
"type": "enhancement",
"category": "ServiceCatalog",
"description": "Documentation updates for servicecatalog"
}
]

22
vendor/aws/aws-sdk-php/.changes/3.80.3 vendored Normal file
View File

@@ -0,0 +1,22 @@
[
{
"type": "enhancement",
"category": "Test",
"description": "Use dedicated PHPUnit assertions for better error messages."
},
{
"type": "enhancement",
"category": "Waiter",
"description": "Simplify foreach with in_array function."
},
{
"type": "api-change",
"category": "S3",
"description": "S3 Inventory reports can now be generated in Parquet format by setting the Destination Format to be 'Parquet'."
},
{
"type": "api-change",
"category": "Health",
"description": "AWS Health API DescribeAffectedEntities operation now includes a field that returns the URL of the affected entity."
}
]

View File

@@ -17,7 +17,7 @@
},
"require": {
"php": ">=5.5",
"guzzlehttp/guzzle": "^5.3.1|^6.2.1",
"guzzlehttp/guzzle": "^5.3.3|^6.2.1",
"guzzlehttp/psr7": "^1.4.1",
"guzzlehttp/promises": "~1.0",
"mtdowling/jmespath.php": "~2.2",
@@ -29,6 +29,8 @@
"require-dev": {
"ext-openssl": "*",
"ext-dom": "*",
"ext-pcntl": "*",
"ext-sockets": "*",
"phpunit/phpunit": "^4.8.35|^5.4.3",
"behat/behat": "~3.0",
"doctrine/cache": "~1.4",
@@ -40,6 +42,7 @@
"suggest": {
"ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
"ext-curl": "To send requests using cURL",
"ext-sockets": "To use client-side monitoring",
"doctrine/cache": "To use the DoctrineCacheAdapter",
"aws/aws-php-sns-message-validator": "To validate incoming SNS notifications"
},

View File

@@ -5,14 +5,20 @@ use Aws\AwsClient;
/**
* This client is used to interact with the **Alexa For Business** service.
* @method \Aws\Result approveSkill(array $args = [])
* @method \GuzzleHttp\Promise\Promise approveSkillAsync(array $args = [])
* @method \Aws\Result associateContactWithAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateContactWithAddressBookAsync(array $args = [])
* @method \Aws\Result associateDeviceWithRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateDeviceWithRoomAsync(array $args = [])
* @method \Aws\Result associateSkillGroupWithRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateSkillGroupWithRoomAsync(array $args = [])
* @method \Aws\Result associateSkillWithSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateSkillWithSkillGroupAsync(array $args = [])
* @method \Aws\Result createAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAddressBookAsync(array $args = [])
* @method \Aws\Result createConferenceProvider(array $args = [])
* @method \GuzzleHttp\Promise\Promise createConferenceProviderAsync(array $args = [])
* @method \Aws\Result createContact(array $args = [])
* @method \GuzzleHttp\Promise\Promise createContactAsync(array $args = [])
* @method \Aws\Result createProfile(array $args = [])
@@ -25,14 +31,20 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise createUserAsync(array $args = [])
* @method \Aws\Result deleteAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAddressBookAsync(array $args = [])
* @method \Aws\Result deleteConferenceProvider(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteConferenceProviderAsync(array $args = [])
* @method \Aws\Result deleteContact(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteContactAsync(array $args = [])
* @method \Aws\Result deleteDevice(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDeviceAsync(array $args = [])
* @method \Aws\Result deleteProfile(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteProfileAsync(array $args = [])
* @method \Aws\Result deleteRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRoomAsync(array $args = [])
* @method \Aws\Result deleteRoomSkillParameter(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRoomSkillParameterAsync(array $args = [])
* @method \Aws\Result deleteSkillAuthorization(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteSkillAuthorizationAsync(array $args = [])
* @method \Aws\Result deleteSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteSkillGroupAsync(array $args = [])
* @method \Aws\Result deleteUser(array $args = [])
@@ -41,10 +53,18 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise disassociateContactFromAddressBookAsync(array $args = [])
* @method \Aws\Result disassociateDeviceFromRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateDeviceFromRoomAsync(array $args = [])
* @method \Aws\Result disassociateSkillFromSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateSkillFromSkillGroupAsync(array $args = [])
* @method \Aws\Result disassociateSkillGroupFromRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateSkillGroupFromRoomAsync(array $args = [])
* @method \Aws\Result forgetSmartHomeAppliances(array $args = [])
* @method \GuzzleHttp\Promise\Promise forgetSmartHomeAppliancesAsync(array $args = [])
* @method \Aws\Result getAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAddressBookAsync(array $args = [])
* @method \Aws\Result getConferencePreference(array $args = [])
* @method \GuzzleHttp\Promise\Promise getConferencePreferenceAsync(array $args = [])
* @method \Aws\Result getConferenceProvider(array $args = [])
* @method \GuzzleHttp\Promise\Promise getConferenceProviderAsync(array $args = [])
* @method \Aws\Result getContact(array $args = [])
* @method \GuzzleHttp\Promise\Promise getContactAsync(array $args = [])
* @method \Aws\Result getDevice(array $args = [])
@@ -57,14 +77,30 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getRoomSkillParameterAsync(array $args = [])
* @method \Aws\Result getSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise getSkillGroupAsync(array $args = [])
* @method \Aws\Result listConferenceProviders(array $args = [])
* @method \GuzzleHttp\Promise\Promise listConferenceProvidersAsync(array $args = [])
* @method \Aws\Result listDeviceEvents(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDeviceEventsAsync(array $args = [])
* @method \Aws\Result listSkills(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSkillsAsync(array $args = [])
* @method \Aws\Result listSkillsStoreCategories(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSkillsStoreCategoriesAsync(array $args = [])
* @method \Aws\Result listSkillsStoreSkillsByCategory(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSkillsStoreSkillsByCategoryAsync(array $args = [])
* @method \Aws\Result listSmartHomeAppliances(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSmartHomeAppliancesAsync(array $args = [])
* @method \Aws\Result listTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsAsync(array $args = [])
* @method \Aws\Result putConferencePreference(array $args = [])
* @method \GuzzleHttp\Promise\Promise putConferencePreferenceAsync(array $args = [])
* @method \Aws\Result putRoomSkillParameter(array $args = [])
* @method \GuzzleHttp\Promise\Promise putRoomSkillParameterAsync(array $args = [])
* @method \Aws\Result putSkillAuthorization(array $args = [])
* @method \GuzzleHttp\Promise\Promise putSkillAuthorizationAsync(array $args = [])
* @method \Aws\Result registerAVSDevice(array $args = [])
* @method \GuzzleHttp\Promise\Promise registerAVSDeviceAsync(array $args = [])
* @method \Aws\Result rejectSkill(array $args = [])
* @method \GuzzleHttp\Promise\Promise rejectSkillAsync(array $args = [])
* @method \Aws\Result resolveRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise resolveRoomAsync(array $args = [])
* @method \Aws\Result revokeInvitation(array $args = [])
@@ -87,12 +123,16 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise sendInvitationAsync(array $args = [])
* @method \Aws\Result startDeviceSync(array $args = [])
* @method \GuzzleHttp\Promise\Promise startDeviceSyncAsync(array $args = [])
* @method \Aws\Result startSmartHomeApplianceDiscovery(array $args = [])
* @method \GuzzleHttp\Promise\Promise startSmartHomeApplianceDiscoveryAsync(array $args = [])
* @method \Aws\Result tagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
* @method \Aws\Result untagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
* @method \Aws\Result updateAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAddressBookAsync(array $args = [])
* @method \Aws\Result updateConferenceProvider(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateConferenceProviderAsync(array $args = [])
* @method \Aws\Result updateContact(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateContactAsync(array $args = [])
* @method \Aws\Result updateDevice(array $args = [])

View File

@@ -0,0 +1,49 @@
<?php
namespace Aws\Amplify;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Amplify** service.
* @method \Aws\Result createApp(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAppAsync(array $args = [])
* @method \Aws\Result createBranch(array $args = [])
* @method \GuzzleHttp\Promise\Promise createBranchAsync(array $args = [])
* @method \Aws\Result createDomainAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDomainAssociationAsync(array $args = [])
* @method \Aws\Result deleteApp(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAppAsync(array $args = [])
* @method \Aws\Result deleteBranch(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBranchAsync(array $args = [])
* @method \Aws\Result deleteDomainAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDomainAssociationAsync(array $args = [])
* @method \Aws\Result deleteJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteJobAsync(array $args = [])
* @method \Aws\Result getApp(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAppAsync(array $args = [])
* @method \Aws\Result getBranch(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBranchAsync(array $args = [])
* @method \Aws\Result getDomainAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDomainAssociationAsync(array $args = [])
* @method \Aws\Result getJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise getJobAsync(array $args = [])
* @method \Aws\Result listApps(array $args = [])
* @method \GuzzleHttp\Promise\Promise listAppsAsync(array $args = [])
* @method \Aws\Result listBranches(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBranchesAsync(array $args = [])
* @method \Aws\Result listDomainAssociations(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDomainAssociationsAsync(array $args = [])
* @method \Aws\Result listJobs(array $args = [])
* @method \GuzzleHttp\Promise\Promise listJobsAsync(array $args = [])
* @method \Aws\Result startJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise startJobAsync(array $args = [])
* @method \Aws\Result stopJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise stopJobAsync(array $args = [])
* @method \Aws\Result updateApp(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAppAsync(array $args = [])
* @method \Aws\Result updateBranch(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateBranchAsync(array $args = [])
* @method \Aws\Result updateDomainAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDomainAssociationAsync(array $args = [])
*/
class AmplifyClient extends AwsClient {}

View File

@@ -0,0 +1,9 @@
<?php
namespace Aws\Amplify\Exception;
use Aws\Exception\AwsException;
/**
* Represents an error interacting with the **AWS Amplify** service.
*/
class AmplifyException extends AwsException {}

View File

@@ -20,7 +20,7 @@ trait JsonParserTrait
'code' => null,
'message' => null,
'type' => $code[0] == '4' ? 'client' : 'server',
'parsed' => $this->parseJson($response->getBody())
'parsed' => $this->parseJson($response->getBody(), $response)
];
}
}

View File

@@ -25,7 +25,7 @@ class XmlErrorParser
$body = $response->getBody();
if ($body->getSize() > 0) {
$this->parseBody($this->parseXml($body), $data);
$this->parseBody($this->parseXml($body, $response), $data);
} else {
$this->parseHeaders($response, $data);
}

View File

@@ -40,6 +40,7 @@ abstract class AbstractParser
abstract public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member
StructureShape $member,
$response
);
}

View File

@@ -129,7 +129,7 @@ abstract class AbstractRestParser extends AbstractParser
}
case 'string':
if ($shape['jsonvalue']) {
$value = $this->parseJson(base64_decode($value));
$value = $this->parseJson(base64_decode($value), $response);
}
break;
}

View File

@@ -46,8 +46,9 @@ class Crc32ValidatingParser extends AbstractParser
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member
StructureShape $member,
$response
) {
return $this->parser->parseMemberFromStream($stream, $member);
return $this->parser->parseMemberFromStream($stream, $member, $response);
}
}

View File

@@ -83,7 +83,8 @@ class EventParsingIterator implements Iterator
} else {
$parsedEvent[$shape] = $this->parser->parseMemberFromStream(
$event['payload'],
$payloadShape
$payloadShape,
null
);
}
} else {

View File

@@ -1,4 +1,31 @@
<?php
namespace Aws\Api\Parser\Exception;
class ParserException extends \RuntimeException {}
use Aws\HasMonitoringEventsTrait;
use Aws\MonitoringEventsInterface;
use Aws\ResponseContainerInterface;
class ParserException extends \RuntimeException implements
MonitoringEventsInterface,
ResponseContainerInterface
{
use HasMonitoringEventsTrait;
private $response;
public function __construct($message = '', $code = 0, $previous = null, array $context = [])
{
$this->response = isset($context['response']) ? $context['response'] : null;
parent::__construct($message, $code, $previous);
}
/**
* Get the received HTTP response if any.
*
* @return ResponseInterface|null
*/
public function getResponse()
{
return $this->response;
}
}

View File

@@ -34,7 +34,8 @@ class JsonRpcParser extends AbstractParser
? null
: $this->parseMemberFromStream(
$response->getBody(),
$operation->getOutput()
$operation->getOutput(),
$response
);
return new Result($result ?: []);
@@ -42,8 +43,9 @@ class JsonRpcParser extends AbstractParser
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member
StructureShape $member,
$response
) {
return $this->parser->parse($member, $this->parseJson($stream));
return $this->parser->parse($member, $this->parseJson($stream, $response));
}
}

View File

@@ -2,6 +2,7 @@
namespace Aws\Api\Parser;
use Aws\Api\Parser\Exception\ParserException;
use Psr\Http\Message\ResponseInterface;
trait PayloadParserTrait
{
@@ -12,13 +13,17 @@ trait PayloadParserTrait
*
* @return array
*/
private function parseJson($json)
private function parseJson($json, $response)
{
$jsonPayload = json_decode($json, true);
if (JSON_ERROR_NONE !== json_last_error()) {
throw new ParserException('Error parsing JSON: '
. json_last_error_msg());
throw new ParserException(
'Error parsing JSON: ' . json_last_error_msg(),
0,
null,
['response' => $response]
);
}
return $jsonPayload;
@@ -31,7 +36,7 @@ trait PayloadParserTrait
*
* @return \SimpleXMLElement
*/
private function parseXml($xml)
private function parseXml($xml, $response)
{
$priorSetting = libxml_use_internal_errors(true);
try {
@@ -41,7 +46,12 @@ trait PayloadParserTrait
throw new \RuntimeException($error->message);
}
} catch (\Exception $e) {
throw new ParserException("Error parsing XML: {$e->getMessage()}", 0, $e);
throw new ParserException(
"Error parsing XML: {$e->getMessage()}",
0,
$e,
['response' => $response]
);
} finally {
libxml_use_internal_errors($priorSetting);
}

View File

@@ -40,7 +40,7 @@ class QueryParser extends AbstractParser
ResponseInterface $response
) {
$output = $this->api->getOperation($command->getName())->getOutput();
$xml = $this->parseXml($response->getBody());
$xml = $this->parseXml($response->getBody(), $response);
if ($this->honorResultWrapper && $output['resultWrapper']) {
$xml = $xml->{$output['resultWrapper']};
@@ -51,9 +51,10 @@ class QueryParser extends AbstractParser
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member
StructureShape $member,
$response
) {
$xml = $this->parseXml($stream);
$xml = $this->parseXml($stream, $response);
return $this->parser->parse($member, $xml);
}
}

View File

@@ -28,7 +28,7 @@ class RestJsonParser extends AbstractRestParser
StructureShape $member,
array &$result
) {
$jsonBody = $this->parseJson($response->getBody());
$jsonBody = $this->parseJson($response->getBody(), $response);
if ($jsonBody) {
$result += $this->parser->parse($member, $jsonBody);
@@ -37,9 +37,10 @@ class RestJsonParser extends AbstractRestParser
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member
StructureShape $member,
$response
) {
$jsonBody = $this->parseJson($stream);
$jsonBody = $this->parseJson($stream, $response);
if ($jsonBody) {
return $this->parser->parse($member, $jsonBody);
}

View File

@@ -28,14 +28,15 @@ class RestXmlParser extends AbstractRestParser
StructureShape $member,
array &$result
) {
$result += $this->parseMemberFromStream($response->getBody(), $member);
$result += $this->parseMemberFromStream($response->getBody(), $member, $response);
}
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member
StructureShape $member,
$response
) {
$xml = $this->parseXml($stream);
$xml = $this->parseXml($stream, $response);
return $this->parser->parse($member, $xml);
}
}

View File

@@ -58,6 +58,9 @@ class JsonBody
= $this->format($valueShape, $v);
}
}
if (empty($data)) {
return new \stdClass;
}
return $data;
case 'list':

View File

@@ -0,0 +1,47 @@
<?php
namespace Aws\AppMesh;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS App Mesh** service.
* @method \Aws\Result createMesh(array $args = [])
* @method \GuzzleHttp\Promise\Promise createMeshAsync(array $args = [])
* @method \Aws\Result createRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRouteAsync(array $args = [])
* @method \Aws\Result createVirtualNode(array $args = [])
* @method \GuzzleHttp\Promise\Promise createVirtualNodeAsync(array $args = [])
* @method \Aws\Result createVirtualRouter(array $args = [])
* @method \GuzzleHttp\Promise\Promise createVirtualRouterAsync(array $args = [])
* @method \Aws\Result deleteMesh(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteMeshAsync(array $args = [])
* @method \Aws\Result deleteRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRouteAsync(array $args = [])
* @method \Aws\Result deleteVirtualNode(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVirtualNodeAsync(array $args = [])
* @method \Aws\Result deleteVirtualRouter(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVirtualRouterAsync(array $args = [])
* @method \Aws\Result describeMesh(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeMeshAsync(array $args = [])
* @method \Aws\Result describeRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeRouteAsync(array $args = [])
* @method \Aws\Result describeVirtualNode(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeVirtualNodeAsync(array $args = [])
* @method \Aws\Result describeVirtualRouter(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeVirtualRouterAsync(array $args = [])
* @method \Aws\Result listMeshes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listMeshesAsync(array $args = [])
* @method \Aws\Result listRoutes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listRoutesAsync(array $args = [])
* @method \Aws\Result listVirtualNodes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listVirtualNodesAsync(array $args = [])
* @method \Aws\Result listVirtualRouters(array $args = [])
* @method \GuzzleHttp\Promise\Promise listVirtualRoutersAsync(array $args = [])
* @method \Aws\Result updateRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRouteAsync(array $args = [])
* @method \Aws\Result updateVirtualNode(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateVirtualNodeAsync(array $args = [])
* @method \Aws\Result updateVirtualRouter(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateVirtualRouterAsync(array $args = [])
*/
class AppMeshClient extends AwsClient {}

View File

@@ -0,0 +1,9 @@
<?php
namespace Aws\AppMesh\Exception;
use Aws\Exception\AwsException;
/**
* Represents an error interacting with the **AWS App Mesh** service.
*/
class AppMeshException extends AwsException {}

View File

@@ -9,6 +9,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise createApiKeyAsync(array $args = [])
* @method \Aws\Result createDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDataSourceAsync(array $args = [])
* @method \Aws\Result createFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise createFunctionAsync(array $args = [])
* @method \Aws\Result createGraphqlApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise createGraphqlApiAsync(array $args = [])
* @method \Aws\Result createResolver(array $args = [])
@@ -19,6 +21,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise deleteApiKeyAsync(array $args = [])
* @method \Aws\Result deleteDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDataSourceAsync(array $args = [])
* @method \Aws\Result deleteFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteFunctionAsync(array $args = [])
* @method \Aws\Result deleteGraphqlApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteGraphqlApiAsync(array $args = [])
* @method \Aws\Result deleteResolver(array $args = [])
@@ -27,6 +31,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise deleteTypeAsync(array $args = [])
* @method \Aws\Result getDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDataSourceAsync(array $args = [])
* @method \Aws\Result getFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise getFunctionAsync(array $args = [])
* @method \Aws\Result getGraphqlApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise getGraphqlApiAsync(array $args = [])
* @method \Aws\Result getIntrospectionSchema(array $args = [])
@@ -41,10 +47,14 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listApiKeysAsync(array $args = [])
* @method \Aws\Result listDataSources(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDataSourcesAsync(array $args = [])
* @method \Aws\Result listFunctions(array $args = [])
* @method \GuzzleHttp\Promise\Promise listFunctionsAsync(array $args = [])
* @method \Aws\Result listGraphqlApis(array $args = [])
* @method \GuzzleHttp\Promise\Promise listGraphqlApisAsync(array $args = [])
* @method \Aws\Result listResolvers(array $args = [])
* @method \GuzzleHttp\Promise\Promise listResolversAsync(array $args = [])
* @method \Aws\Result listResolversByFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise listResolversByFunctionAsync(array $args = [])
* @method \Aws\Result listTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTypesAsync(array $args = [])
* @method \Aws\Result startSchemaCreation(array $args = [])
@@ -53,6 +63,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise updateApiKeyAsync(array $args = [])
* @method \Aws\Result updateDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDataSourceAsync(array $args = [])
* @method \Aws\Result updateFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateFunctionAsync(array $args = [])
* @method \Aws\Result updateGraphqlApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateGraphqlApiAsync(array $args = [])
* @method \Aws\Result updateResolver(array $args = [])

View File

@@ -7,6 +7,10 @@ use Aws\AwsClient;
* This client is used to interact with the **Amazon AppStream** service.
* @method \Aws\Result associateFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateFleetAsync(array $args = [])
* @method \Aws\Result batchAssociateUserStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchAssociateUserStackAsync(array $args = [])
* @method \Aws\Result batchDisassociateUserStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchDisassociateUserStackAsync(array $args = [])
* @method \Aws\Result copyImage(array $args = [])
* @method \GuzzleHttp\Promise\Promise copyImageAsync(array $args = [])
* @method \Aws\Result createDirectoryConfig(array $args = [])
@@ -21,6 +25,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise createStackAsync(array $args = [])
* @method \Aws\Result createStreamingURL(array $args = [])
* @method \GuzzleHttp\Promise\Promise createStreamingURLAsync(array $args = [])
* @method \Aws\Result createUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise createUserAsync(array $args = [])
* @method \Aws\Result deleteDirectoryConfig(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDirectoryConfigAsync(array $args = [])
* @method \Aws\Result deleteFleet(array $args = [])
@@ -33,6 +39,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise deleteImagePermissionsAsync(array $args = [])
* @method \Aws\Result deleteStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteStackAsync(array $args = [])
* @method \Aws\Result deleteUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteUserAsync(array $args = [])
* @method \Aws\Result describeDirectoryConfigs(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeDirectoryConfigsAsync(array $args = [])
* @method \Aws\Result describeFleets(array $args = [])
@@ -47,8 +55,16 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise describeSessionsAsync(array $args = [])
* @method \Aws\Result describeStacks(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStacksAsync(array $args = [])
* @method \Aws\Result describeUserStackAssociations(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeUserStackAssociationsAsync(array $args = [])
* @method \Aws\Result describeUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeUsersAsync(array $args = [])
* @method \Aws\Result disableUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise disableUserAsync(array $args = [])
* @method \Aws\Result disassociateFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateFleetAsync(array $args = [])
* @method \Aws\Result enableUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise enableUserAsync(array $args = [])
* @method \Aws\Result expireSession(array $args = [])
* @method \GuzzleHttp\Promise\Promise expireSessionAsync(array $args = [])
* @method \Aws\Result listAssociatedFleets(array $args = [])

View File

@@ -13,6 +13,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise describeScalingPlanResourcesAsync(array $args = [])
* @method \Aws\Result describeScalingPlans(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScalingPlansAsync(array $args = [])
* @method \Aws\Result getScalingPlanResourceForecastData(array $args = [])
* @method \GuzzleHttp\Promise\Promise getScalingPlanResourceForecastDataAsync(array $args = [])
* @method \Aws\Result updateScalingPlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateScalingPlanAsync(array $args = [])
*/

View File

@@ -4,6 +4,9 @@ namespace Aws;
use Aws\Api\ApiProvider;
use Aws\Api\DocModel;
use Aws\Api\Service;
use Aws\ClientSideMonitoring\ApiCallAttemptMonitoringMiddleware;
use Aws\ClientSideMonitoring\ApiCallMonitoringMiddleware;
use Aws\ClientSideMonitoring\ConfigurationProvider;
use Aws\Signature\SignatureProvider;
use GuzzleHttp\Psr7\Uri;
@@ -82,6 +85,11 @@ class AwsClient implements AwsClientInterface
* `http_stats_receiver` option for this to have an effect; timer: (bool)
* Set to true to enable a command timer that reports the total wall clock
* time spent on an operation in seconds.
* - disable_host_prefix_injection: (bool) Set to true to disable host prefix
* injection logic for services that use it. This disables the entire
* prefix injection, including the portions supplied by user-defined
* parameters. Setting this flag will have no effect on services that do
* not use host prefix injection.
* - endpoint: (string) The full URI of the webservice. This is only
* required when connecting to a custom endpoint (e.g., a local version
* of S3).
@@ -165,6 +173,8 @@ class AwsClient implements AwsClientInterface
$this->defaultRequestOptions = $config['http'];
$this->addSignatureMiddleware();
$this->addInvocationId();
$this->addClientSideMonitoring($args);
$this->addEndpointParameterMiddleware($args);
if (isset($args['with_resolved'])) {
$args['with_resolved']($config);
@@ -263,6 +273,19 @@ class AwsClient implements AwsClientInterface
];
}
private function addEndpointParameterMiddleware($args)
{
if (empty($args['disable_host_prefix_injection'])) {
$list = $this->getHandlerList();
$list->appendBuild(
EndpointParameterMiddleware::wrap(
$this->api
),
'endpoint_parameter'
);
}
}
private function addSignatureMiddleware()
{
$api = $this->getApi();
@@ -297,6 +320,32 @@ class AwsClient implements AwsClientInterface
$this->handlerList->prependSign(Middleware::invocationId(), 'invocation-id');
}
private function addClientSideMonitoring($args)
{
$options = ConfigurationProvider::defaultProvider($args);
$this->handlerList->appendBuild(
ApiCallMonitoringMiddleware::wrap(
$this->credentialProvider,
$options,
$this->region,
$this->getApi()->getServiceId()
),
'ApiCallMonitoringMiddleware'
);
$callAttemptMiddleware = ApiCallAttemptMonitoringMiddleware::wrap(
$this->credentialProvider,
$options,
$this->region,
$this->getApi()->getServiceId()
);
$this->handlerList->appendAttempt (
$callAttemptMiddleware,
'ApiCallAttemptMonitoringMiddleware'
);
}
/**
* Returns a service model and doc model with any necessary changes
* applied.

View File

@@ -19,6 +19,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise deleteSubscriberAsync(array $args = [])
* @method \Aws\Result describeBudget(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBudgetAsync(array $args = [])
* @method \Aws\Result describeBudgetPerformanceHistory(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBudgetPerformanceHistoryAsync(array $args = [])
* @method \Aws\Result describeBudgets(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBudgetsAsync(array $args = [])
* @method \Aws\Result describeNotificationsForBudget(array $args = [])

View File

@@ -0,0 +1,41 @@
<?php
namespace Aws\Chime;
use Aws\AwsClient;
/**
* This client is used to interact with the **Amazon Chime** service.
* @method \Aws\Result batchSuspendUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchSuspendUserAsync(array $args = [])
* @method \Aws\Result batchUnsuspendUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchUnsuspendUserAsync(array $args = [])
* @method \Aws\Result batchUpdateUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchUpdateUserAsync(array $args = [])
* @method \Aws\Result createAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAccountAsync(array $args = [])
* @method \Aws\Result deleteAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAccountAsync(array $args = [])
* @method \Aws\Result getAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAccountAsync(array $args = [])
* @method \Aws\Result getAccountSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAccountSettingsAsync(array $args = [])
* @method \Aws\Result getUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUserAsync(array $args = [])
* @method \Aws\Result inviteUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise inviteUsersAsync(array $args = [])
* @method \Aws\Result listAccounts(array $args = [])
* @method \GuzzleHttp\Promise\Promise listAccountsAsync(array $args = [])
* @method \Aws\Result listUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise listUsersAsync(array $args = [])
* @method \Aws\Result logoutUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise logoutUserAsync(array $args = [])
* @method \Aws\Result resetPersonalPIN(array $args = [])
* @method \GuzzleHttp\Promise\Promise resetPersonalPINAsync(array $args = [])
* @method \Aws\Result updateAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAccountAsync(array $args = [])
* @method \Aws\Result updateAccountSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAccountSettingsAsync(array $args = [])
* @method \Aws\Result updateUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateUserAsync(array $args = [])
*/
class ChimeClient extends AwsClient {}

View File

@@ -0,0 +1,9 @@
<?php
namespace Aws\Chime\Exception;
use Aws\Exception\AwsException;
/**
* Represents an error interacting with the **Amazon Chime** service.
*/
class ChimeException extends AwsException {}

View File

@@ -53,6 +53,12 @@ class ClientResolver
'default' => 'https',
'doc' => 'URI scheme to use when connecting connect. The SDK will utilize "https" endpoints (i.e., utilize SSL/TLS connections) by default. You can attempt to connect to a service over an unencrypted "http" endpoint by setting ``scheme`` to "http".',
],
'disable_host_prefix_injection' => [
'type' => 'value',
'valid' => ['bool'],
'doc' => 'Set to true to disable host prefix injection logic for services that use it. This disables the entire prefix injection, including the portions supplied by user-defined parameters. Setting this flag will have no effect on services that do not use host prefix injection.',
'default' => false,
],
'endpoint' => [
'type' => 'value',
'valid' => ['string'],

View File

@@ -0,0 +1,270 @@
<?php
namespace Aws\ClientSideMonitoring;
use Aws\CommandInterface;
use Aws\Exception\AwsException;
use Aws\MonitoringEventsInterface;
use Aws\ResponseContainerInterface;
use Aws\ResultInterface;
use GuzzleHttp\Promise;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
/**
* @internal
*/
abstract class AbstractMonitoringMiddleware
implements MonitoringMiddlewareInterface
{
private static $socket;
private $nextHandler;
private $options;
protected $credentialProvider;
protected $region;
protected $service;
protected static function getAwsExceptionHeader(AwsException $e, $headerName)
{
$response = $e->getResponse();
if ($response !== null) {
$header = $response->getHeader($headerName);
if (!empty($header[0])) {
return $header[0];
}
}
return null;
}
protected static function getResultHeader(ResultInterface $result, $headerName)
{
if (isset($result['@metadata']['headers'][$headerName])) {
return $result['@metadata']['headers'][$headerName];
}
return null;
}
protected static function getExceptionHeader(\Exception $e, $headerName)
{
if ($e instanceof ResponseContainerInterface) {
$response = $e->getResponse();
if ($response instanceof ResponseInterface) {
$header = $response->getHeader($headerName);
if (!empty($header[0])) {
return $header[0];
}
}
}
return null;
}
/**
* Constructor stores the passed in handler and options.
*
* @param callable $handler
* @param callable $credentialProvider
* @param array $options
* @param $region
* @param $service
*/
public function __construct(
callable $handler,
callable $credentialProvider,
$options,
$region,
$service
) {
$this->nextHandler = $handler;
$this->credentialProvider = $credentialProvider;
$this->options = $options;
$this->region = $region;
$this->service = $service;
}
/**
* Standard invoke pattern for middleware execution to be implemented by
* child classes.
*
* @param CommandInterface $cmd
* @param RequestInterface $request
* @return Promise\PromiseInterface
*/
public function __invoke(CommandInterface $cmd, RequestInterface $request)
{
$handler = $this->nextHandler;
$eventData = null;
$enabled = $this->isEnabled();
if ($enabled) {
$cmd['@http']['collect_stats'] = true;
$eventData = $this->populateRequestEventData(
$cmd,
$request,
$this->getNewEvent($cmd, $request)
);
}
$g = function ($value) use ($eventData, $enabled) {
if ($enabled) {
$eventData = $this->populateResultEventData(
$value,
$eventData
);
$this->sendEventData($eventData);
if ($value instanceof MonitoringEventsInterface) {
$value->appendMonitoringEvent($eventData);
}
}
if ($value instanceof \Exception || $value instanceof \Throwable) {
return Promise\rejection_for($value);
}
return $value;
};
return Promise\promise_for($handler($cmd, $request))->then($g, $g);
}
private function getClientId()
{
return $this->unwrappedOptions()->getClientId();
}
private function getNewEvent(
CommandInterface $cmd,
RequestInterface $request
) {
$event = [
'Api' => $cmd->getName(),
'ClientId' => $this->getClientId(),
'Region' => $this->getRegion(),
'Service' => $this->getService(),
'Timestamp' => (int) floor(microtime(true) * 1000),
'Version' => 1
];
return $event;
}
private function getPort()
{
return $this->unwrappedOptions()->getPort();
}
private function getRegion()
{
return $this->region;
}
private function getService()
{
return $this->service;
}
/**
* Returns enabled flag from options, unwrapping options if necessary.
*
* @return bool
*/
private function isEnabled()
{
return $this->unwrappedOptions()->isEnabled();
}
/**
* Returns $eventData array with information from the request and command.
*
* @param CommandInterface $cmd
* @param RequestInterface $request
* @param array $event
* @return array
*/
protected function populateRequestEventData(
CommandInterface $cmd,
RequestInterface $request,
array $event
) {
$dataFormat = static::getRequestData($request);
foreach ($dataFormat as $eventKey => $value) {
if ($value !== null) {
$event[$eventKey] = $value;
}
}
return $event;
}
/**
* Returns $eventData array with information from the response, including
* the calculation for attempt latency.
*
* @param ResultInterface|\Exception $result
* @param array $event
* @return array
*/
protected function populateResultEventData(
$result,
array $event
) {
$dataFormat = static::getResponseData($result);
foreach ($dataFormat as $eventKey => $value) {
if ($value !== null) {
$event[$eventKey] = $value;
}
}
return $event;
}
/**
* Creates a UDP socket resource and stores it with the class, or retrieves
* it if already instantiated and connected. Handles error-checking and
* re-connecting if necessary. If $forceNewConnection is set to true, a new
* socket will be created.
*
* @param bool $forceNewConnection
* @return Resource
*/
private function prepareSocket($forceNewConnection = false)
{
if (!is_resource(self::$socket)
|| $forceNewConnection
|| socket_last_error(self::$socket)
) {
self::$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_clear_error(self::$socket);
socket_connect(self::$socket, '127.0.0.1', $this->getPort());
}
return self::$socket;
}
/**
* Sends formatted monitoring event data via the UDP socket connection to
* the CSM agent endpoint.
*
* @param array $eventData
* @return int
*/
private function sendEventData(array $eventData)
{
$socket = $this->prepareSocket();
$datagram = json_encode($eventData);
$result = socket_write($socket, $datagram, strlen($datagram));
if ($result === false) {
$this->prepareSocket(true);
}
return $result;
}
/**
* Unwraps options, if needed, and returns them.
*
* @return ConfigurationInterface
*/
private function unwrappedOptions()
{
if (!($this->options instanceof ConfigurationInterface)) {
$this->options = ConfigurationProvider::unwrap($this->options);
}
return $this->options;
}
}

View File

@@ -0,0 +1,267 @@
<?php
namespace Aws\ClientSideMonitoring;
use Aws\CommandInterface;
use Aws\Credentials\CredentialsInterface;
use Aws\Exception\AwsException;
use Aws\ResponseContainerInterface;
use Aws\ResultInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
/**
* @internal
*/
class ApiCallAttemptMonitoringMiddleware extends AbstractMonitoringMiddleware
{
/**
* Standard middleware wrapper function with CSM options passed in.
*
* @param callable $credentialProvider
* @param mixed $options
* @param string $region
* @param string $service
* @return callable
*/
public static function wrap(
callable $credentialProvider,
$options,
$region,
$service
) {
return function (callable $handler) use (
$credentialProvider,
$options,
$region,
$service
) {
return new static(
$handler,
$credentialProvider,
$options,
$region,
$service
);
};
}
/**
* {@inheritdoc}
*/
public static function getRequestData(RequestInterface $request)
{
return [
'Fqdn' => $request->getUri()->getHost(),
'UserAgent' => substr(
$request->getHeaderLine('User-Agent') . ' ' . \Aws\default_user_agent(),
0,
256
),
];
}
/**
* {@inheritdoc}
*/
public static function getResponseData($klass)
{
if ($klass instanceof ResultInterface) {
return [
'AttemptLatency' => self::getResultAttemptLatency($klass),
'DestinationIp' => self::getResultDestinationIp($klass),
'DnsLatency' => self::getResultDnsLatency($klass),
'HttpStatusCode' => self::getResultHttpStatusCode($klass),
'XAmzId2' => self::getResultHeader($klass, 'x-amz-id-2'),
'XAmzRequestId' => self::getResultHeader($klass, 'x-amz-request-id'),
'XAmznRequestId' => self::getResultHeader($klass, 'x-amzn-RequestId'),
];
}
if ($klass instanceof AwsException) {
return [
'AttemptLatency' => self::getAwsExceptionAttemptLatency($klass),
'AwsException' => substr(
self::getAwsExceptionErrorCode($klass),
0,
128
),
'AwsExceptionMessage' => substr(
self::getAwsExceptionMessage($klass),
0,
512
),
'DestinationIp' => self::getAwsExceptionDestinationIp($klass),
'DnsLatency' => self::getAwsExceptionDnsLatency($klass),
'HttpStatusCode' => self::getAwsExceptionHttpStatusCode($klass),
'XAmzId2' => self::getAwsExceptionHeader($klass, 'x-amz-id-2'),
'XAmzRequestId' => self::getAwsExceptionHeader(
$klass,
'x-amz-request-id'
),
'XAmznRequestId' => self::getAwsExceptionHeader(
$klass,
'x-amzn-RequestId'
),
];
}
if ($klass instanceof \Exception) {
return [
'HttpStatusCode' => self::getExceptionHttpStatusCode($klass),
'SdkException' => substr(
self::getExceptionCode($klass),
0,
128
),
'SdkExceptionMessage' => substr(
self::getExceptionMessage($klass),
0,
512
),
'XAmzId2' => self::getExceptionHeader($klass, 'x-amz-id-2'),
'XAmzRequestId' => self::getExceptionHeader($klass, 'x-amz-request-id'),
'XAmznRequestId' => self::getExceptionHeader($klass, 'x-amzn-RequestId'),
];
}
throw new \InvalidArgumentException('Parameter must be an instance of ResultInterface, AwsException or Exception.');
}
private static function getResultAttemptLatency(ResultInterface $result)
{
if (isset($result['@metadata']['transferStats']['http'])) {
$attempt = end($result['@metadata']['transferStats']['http']);
if (isset($attempt['total_time'])) {
return (int) floor($attempt['total_time'] * 1000);
}
}
return null;
}
private static function getResultDestinationIp(ResultInterface $result)
{
if (isset($result['@metadata']['transferStats']['http'])) {
$attempt = end($result['@metadata']['transferStats']['http']);
if (isset($attempt['primary_ip'])) {
return $attempt['primary_ip'];
}
}
return null;
}
private static function getResultDnsLatency(ResultInterface $result)
{
if (isset($result['@metadata']['transferStats']['http'])) {
$attempt = end($result['@metadata']['transferStats']['http']);
if (isset($attempt['namelookup_time'])) {
return (int) floor($attempt['namelookup_time'] * 1000);
}
}
return null;
}
private static function getResultHttpStatusCode(ResultInterface $result)
{
return $result['@metadata']['statusCode'];
}
private static function getAwsExceptionAttemptLatency(AwsException $e) {
$attempt = $e->getTransferInfo();
if (isset($attempt['total_time'])) {
return (int) floor($attempt['total_time'] * 1000);
}
return null;
}
private static function getAwsExceptionErrorCode(AwsException $e) {
return $e->getAwsErrorCode();
}
private static function getAwsExceptionMessage(AwsException $e) {
return $e->getAwsErrorMessage();
}
private static function getAwsExceptionDestinationIp(AwsException $e) {
$attempt = $e->getTransferInfo();
if (isset($attempt['primary_ip'])) {
return $attempt['primary_ip'];
}
return null;
}
private static function getAwsExceptionDnsLatency(AwsException $e) {
$attempt = $e->getTransferInfo();
if (isset($attempt['namelookup_time'])) {
return (int) floor($attempt['namelookup_time'] * 1000);
}
return null;
}
private static function getAwsExceptionHttpStatusCode(AwsException $e) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode();
}
return null;
}
private static function getExceptionHttpStatusCode(\Exception $e) {
if ($e instanceof ResponseContainerInterface) {
$response = $e->getResponse();
if ($response instanceof ResponseInterface) {
return $response->getStatusCode();
}
}
return null;
}
private static function getExceptionCode(\Exception $e) {
if (!($e instanceof AwsException)) {
return get_class($e);
}
return null;
}
private static function getExceptionMessage(\Exception $e) {
if (!($e instanceof AwsException)) {
return $e->getMessage();
}
return null;
}
/**
* {@inheritdoc}
*/
protected function populateRequestEventData(
CommandInterface $cmd,
RequestInterface $request,
array $event
) {
$event = parent::populateRequestEventData($cmd, $request, $event);
$event['Type'] = 'ApiCallAttempt';
return $event;
}
/**
* {@inheritdoc}
*/
protected function populateResultEventData(
$result,
array $event
) {
$event = parent::populateResultEventData($result, $event);
$provider = $this->credentialProvider;
/** @var CredentialsInterface $credentials */
$credentials = $provider()->wait();
$event['AccessKey'] = $credentials->getAccessKeyId();
$sessionToken = $credentials->getSecurityToken();
if ($sessionToken !== null) {
$event['SessionToken'] = $sessionToken;
}
if (empty($event['AttemptLatency'])) {
$event['AttemptLatency'] = (int) (floor(microtime(true) * 1000) - $event['Timestamp']);
}
return $event;
}
}

View File

@@ -0,0 +1,131 @@
<?php
namespace Aws\ClientSideMonitoring;
use Aws\CommandInterface;
use Aws\Exception\AwsException;
use Aws\MonitoringEventsInterface;
use Aws\ResultInterface;
use Psr\Http\Message\RequestInterface;
/**
* @internal
*/
class ApiCallMonitoringMiddleware extends AbstractMonitoringMiddleware
{
/**
* Standard middleware wrapper function with CSM options passed in.
*
* @param callable $credentialProvider
* @param mixed $options
* @param string $region
* @param string $service
* @return callable
*/
public static function wrap(
callable $credentialProvider,
$options,
$region,
$service
) {
return function (callable $handler) use (
$credentialProvider,
$options,
$region,
$service
) {
return new static(
$handler,
$credentialProvider,
$options,
$region,
$service
);
};
}
/**
* {@inheritdoc}
*/
public static function getRequestData(RequestInterface $request)
{
return [];
}
/**
* {@inheritdoc}
*/
public static function getResponseData($klass)
{
if ($klass instanceof ResultInterface) {
return [
'AttemptCount' => self::getResultAttemptCount($klass),
'MaxRetriesExceeded' => 0,
];
}
if ($klass instanceof \Exception) {
return [
'AttemptCount' => self::getExceptionAttemptCount($klass),
'MaxRetriesExceeded' => self::getMaxRetriesExceeded($klass),
];
}
throw new \InvalidArgumentException('Parameter must be an instance of ResultInterface or Exception.');
}
private static function getResultAttemptCount(ResultInterface $result) {
if (isset($result['@metadata']['transferStats']['http'])) {
return count($result['@metadata']['transferStats']['http']);
}
return 1;
}
private static function getExceptionAttemptCount(\Exception $e) {
$attemptCount = 0;
if ($e instanceof MonitoringEventsInterface) {
foreach ($e->getMonitoringEvents() as $event) {
if (isset($event['Type']) &&
$event['Type'] === 'ApiCallAttempt') {
$attemptCount++;
}
}
}
return $attemptCount;
}
private static function getMaxRetriesExceeded($klass)
{
if ($klass instanceof AwsException && $klass->isMaxRetriesExceeded()) {
return 1;
}
return 0;
}
/**
* {@inheritdoc}
*/
protected function populateRequestEventData(
CommandInterface $cmd,
RequestInterface $request,
array $event
) {
$event = parent::populateRequestEventData($cmd, $request, $event);
$event['Type'] = 'ApiCall';
return $event;
}
/**
* {@inheritdoc}
*/
protected function populateResultEventData(
$result,
array $event
) {
$event = parent::populateResultEventData($result, $event);
$event['Latency'] = (int) (floor(microtime(true) * 1000) - $event['Timestamp']);
return $event;
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace Aws\ClientSideMonitoring;
class Configuration implements ConfigurationInterface
{
private $clientId;
private $enabled;
private $port;
/**
* Constructs a new Configuration object with the specified CSM options set.
*
* @param mixed $enabled
* @param string|int $port
* @param string $clientId
*/
public function __construct($enabled, $port, $clientId = '')
{
$this->port = filter_var($port, FILTER_VALIDATE_INT);
if ($this->port === false) {
throw new \InvalidArgumentException(
"CSM 'port' value must be an integer!");
}
// Unparsable $enabled flag errors on the side of disabling CSM
$this->enabled = filter_var($enabled, FILTER_VALIDATE_BOOLEAN);
$this->clientId = trim($clientId);
}
/**
* {@inheritdoc}
*/
public function isEnabled()
{
return $this->enabled;
}
/**
* {@inheritdoc}
*/
public function getClientId()
{
return $this->clientId;
}
/**
* {@inheritdoc}
*/
public function getPort()
{
return $this->port;
}
/**
* {@inheritdoc}
*/
public function toArray()
{
return [
'client_id' => $this->getClientId(),
'enabled' => $this->isEnabled(),
'port' => $this->getPort()
];
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace Aws\ClientSideMonitoring;
/**
* Provides access to client-side monitoring configuration options:
* 'client_id', 'enabled', 'port'
*/
interface ConfigurationInterface
{
/**
* Checks whether or not client-side monitoring is enabled.
*
* @return bool
*/
public function isEnabled();
/**
* Returns the Client ID, if available.
*
* @return string|null
*/
public function getClientId();
/**
* Returns the configured port.
*
* @return int|null
*/
public function getPort();
/**
* Returns the configuration as an associative array.
*
* @return array
*/
public function toArray();
}

View File

@@ -0,0 +1,342 @@
<?php
namespace Aws\ClientSideMonitoring;
use Aws\CacheInterface;
use Aws\ClientSideMonitoring\Exception\ConfigurationException;
use GuzzleHttp\Promise;
use GuzzleHttp\Promise\PromiseInterface;
/**
* A configuration provider is a function that accepts no arguments and returns
* a promise that is fulfilled with a {@see \Aws\ClientSideMonitoring\ConfigurationInterface}
* or rejected with an {@see \Aws\ClientSideMonitoring\Exception\ConfigurationException}.
*
* <code>
* use Aws\ClientSideMonitoring\ConfigurationProvider;
* $provider = ConfigurationProvider::defaultProvider();
* // Returns a ConfigurationInterface or throws.
* $config = $provider()->wait();
* </code>
*
* Configuration providers can be composed to create configuration using
* conditional logic that can create different configurations in different
* environments. You can compose multiple providers into a single provider using
* {@see Aws\ClientSideMonitoring\ConfigurationProvider::chain}. This function
* accepts providers as variadic arguments and returns a new function that will
* invoke each provider until a successful configuration is returned.
*
* <code>
* // First try an INI file at this location.
* $a = ConfigurationProvider::ini(null, '/path/to/file.ini');
* // Then try an INI file at this location.
* $b = ConfigurationProvider::ini(null, '/path/to/other-file.ini');
* // Then try loading from environment variables.
* $c = ConfigurationProvider::env();
* // Combine the three providers together.
* $composed = ConfigurationProvider::chain($a, $b, $c);
* // Returns a promise that is fulfilled with a configuration or throws.
* $promise = $composed();
* // Wait on the configuration to resolve.
* $config = $promise->wait();
* </code>
*/
class ConfigurationProvider
{
const CACHE_KEY = 'aws_cached_csm_config';
const DEFAULT_CLIENT_ID = '';
const DEFAULT_ENABLED = false;
const DEFAULT_PORT = 31000;
const ENV_CLIENT_ID = 'AWS_CSM_CLIENT_ID';
const ENV_ENABLED = 'AWS_CSM_ENABLED';
const ENV_PORT = 'AWS_CSM_PORT';
const ENV_PROFILE = 'AWS_PROFILE';
/**
* Wraps a credential provider and saves provided credentials in an
* instance of Aws\CacheInterface. Forwards calls when no credentials found
* in cache and updates cache with the results.
*
* @param callable $provider Credentials provider function to wrap
* @param CacheInterface $cache Cache to store credentials
* @param string|null $cacheKey (optional) Cache key to use
*
* @return callable
*/
public static function cache(
callable $provider,
CacheInterface $cache,
$cacheKey = null
) {
$cacheKey = $cacheKey ?: self::CACHE_KEY;
return function () use ($provider, $cache, $cacheKey) {
$found = $cache->get($cacheKey);
if ($found instanceof ConfigurationInterface) {
return Promise\promise_for($found);
}
return $provider()
->then(function (ConfigurationInterface $config) use (
$cache,
$cacheKey
) {
$cache->set(
$cacheKey,
$config
);
return $config;
});
};
}
/**
* Creates an aggregate credentials provider that invokes the provided
* variadic providers one after the other until a provider returns
* credentials.
*
* @return callable
*/
public static function chain()
{
$links = func_get_args();
if (empty($links)) {
throw new \InvalidArgumentException('No providers in chain');
}
return function () use ($links) {
/** @var callable $parent */
$parent = array_shift($links);
$promise = $parent();
while ($next = array_shift($links)) {
$promise = $promise->otherwise($next);
}
return $promise;
};
}
/**
* Create a default CSM config provider that first checks for environment
* variables, then checks for a specified profile in ~/.aws/config, then
* checks for the "aws_csm" profile in ~/.aws/config, and failing those uses
* a default fallback set of configuration options.
*
* This provider is automatically wrapped in a memoize function that caches
* previously provided config options.
*
* @param array $config Optional array of ecs/instance profile credentials
* provider options.
*
* @return callable
*/
public static function defaultProvider(array $config = [])
{
$configProviders = [
self::env(),
self::ini(),
self::fallback()
];
$memo = self::memoize(
call_user_func_array('self::chain', $configProviders)
);
if (isset($config['csm']) && $config['csm'] instanceof CacheInterface) {
return self::cache($memo, $config['csm'], self::CACHE_KEY);
}
return $memo;
}
/**
* Provider that creates CSM config from environment variables.
*
* @return callable
*/
public static function env()
{
return function () {
// Use credentials from environment variables, if available
$enabled = getenv(self::ENV_ENABLED);
if ($enabled !== false) {
return Promise\promise_for(
new Configuration(
$enabled,
getenv(self::ENV_PORT) ?: self::DEFAULT_PORT,
getenv(self:: ENV_CLIENT_ID) ?: self::DEFAULT_CLIENT_ID
)
);
}
return self::reject('Could not find environment variable CSM config'
. ' in ' . self::ENV_ENABLED. '/' . self::ENV_PORT . '/'
. self::ENV_CLIENT_ID);
};
}
/**
* Fallback config options when other sources are not set.
*
* @return callable
*/
public static function fallback()
{
return function() {
return Promise\promise_for(
new Configuration(
self::DEFAULT_ENABLED,
self::DEFAULT_PORT,
self::DEFAULT_CLIENT_ID
)
);
};
}
/**
* Gets the environment's HOME directory if available.
*
* @return null|string
*/
private static function getHomeDir()
{
// On Linux/Unix-like systems, use the HOME environment variable
if ($homeDir = getenv('HOME')) {
return $homeDir;
}
// Get the HOMEDRIVE and HOMEPATH values for Windows hosts
$homeDrive = getenv('HOMEDRIVE');
$homePath = getenv('HOMEPATH');
return ($homeDrive && $homePath) ? $homeDrive . $homePath : null;
}
/**
* CSM config provider that creates CSM config using an ini file stored
* in the current user's home directory.
*
* @param string|null $profile Profile to use. If not specified will use
* the "aws_csm" profile in "~/.aws/config".
* @param string|null $filename If provided, uses a custom filename rather
* than looking in the home directory.
*
* @return callable
*/
public static function ini($profile = null, $filename = null)
{
$filename = $filename ?: (self::getHomeDir() . '/.aws/config');
$profile = $profile ?: (getenv(self::ENV_PROFILE) ?: 'aws_csm');
return function () use ($profile, $filename) {
if (!is_readable($filename)) {
return self::reject("Cannot read CSM config from $filename");
}
$data = parse_ini_file($filename, true);
if ($data === false) {
return self::reject("Invalid config file: $filename");
}
if (!isset($data[$profile])) {
return self::reject("'$profile' not found in config file");
}
if (!isset($data[$profile]['csm_enabled'])) {
return self::reject("Required CSM config values not present in
INI profile '{$profile}' ({$filename})");
}
// port is optional
if (empty($data[$profile]['csm_port'])) {
$data[$profile]['csm_port'] = self::DEFAULT_PORT;
}
// client_id is optional
if (empty($data[$profile]['csm_client_id'])) {
$data[$profile]['csm_client_id'] = self::DEFAULT_CLIENT_ID;
}
return Promise\promise_for(
new Configuration(
$data[$profile]['csm_enabled'],
$data[$profile]['csm_port'],
$data[$profile]['csm_client_id']
)
);
};
}
/**
* Wraps a CSM config provider and caches previously provided configuration.
*
* Ensures that cached configuration is refreshed when it expires.
*
* @param callable $provider CSM config provider function to wrap.
*
* @return callable
*/
public static function memoize(callable $provider)
{
return function () use ($provider) {
static $result;
static $isConstant;
// Constant config will be returned constantly.
if ($isConstant) {
return $result;
}
// Create the initial promise that will be used as the cached value
// until it expires.
if (null === $result) {
$result = $provider();
}
// Return config and set flag that provider is already set
return $result
->then(function (ConfigurationInterface $config) use (&$isConstant) {
$isConstant = true;
return $config;
});
};
}
/**
* Reject promise with standardized exception.
*
* @param $msg
* @return Promise\RejectedPromise
*/
private static function reject($msg)
{
return new Promise\RejectedPromise(new ConfigurationException($msg));
}
/**
* Unwraps a configuration object in whatever valid form it is in,
* always returning a ConfigurationInterface object.
*
* @param mixed $config
* @return ConfigurationInterface
* @throws \InvalidArgumentException
*/
public static function unwrap($config)
{
if (is_callable($config)) {
$config = $config();
}
if ($config instanceof PromiseInterface) {
$config = $config->wait();
}
if ($config instanceof ConfigurationInterface) {
return $config;
} elseif (is_array($config) && isset($config['enabled'])) {
$client_id = isset($config['client_id']) ? $config['client_id']
: self::DEFAULT_CLIENT_ID;
$port = isset($config['port']) ? $config['port']
: self::DEFAULT_PORT;
return new Configuration($config['enabled'], $port, $client_id);
}
throw new \InvalidArgumentException('Not a valid CSM configuration '
. 'argument.');
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace Aws\ClientSideMonitoring\Exception;
use Aws\HasMonitoringEventsTrait;
use Aws\MonitoringEventsInterface;
/**
* Represents an error interacting with configuration for client-side monitoring.
*/
class ConfigurationException extends \RuntimeException implements
MonitoringEventsInterface
{
use HasMonitoringEventsTrait;
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Aws\ClientSideMonitoring;
use Aws\CommandInterface;
use Aws\Exception\AwsException;
use Aws\ResultInterface;
use GuzzleHttp\Psr7\Request;
use Psr\Http\Message\RequestInterface;
/**
* @internal
*/
interface MonitoringMiddlewareInterface
{
/**
* Data for event properties to be sent to the monitoring agent.
*
* @param RequestInterface $request
* @return array
*/
public static function getRequestData(RequestInterface $request);
/**
* Data for event properties to be sent to the monitoring agent.
*
* @param ResultInterface|AwsException|\Exception $klass
* @return array
*/
public static function getResponseData($klass);
public function __invoke(CommandInterface $cmd, RequestInterface $request);
}

View File

@@ -30,12 +30,16 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise describeAccountLimitsAsync(array $args = [])
* @method \Aws\Result describeChangeSet(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeChangeSetAsync(array $args = [])
* @method \Aws\Result describeStackDriftDetectionStatus(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStackDriftDetectionStatusAsync(array $args = [])
* @method \Aws\Result describeStackEvents(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStackEventsAsync(array $args = [])
* @method \Aws\Result describeStackInstance(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStackInstanceAsync(array $args = [])
* @method \Aws\Result describeStackResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStackResourceAsync(array $args = [])
* @method \Aws\Result describeStackResourceDrifts(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStackResourceDriftsAsync(array $args = [])
* @method \Aws\Result describeStackResources(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStackResourcesAsync(array $args = [])
* @method \Aws\Result describeStackSet(array $args = [])
@@ -44,6 +48,10 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise describeStackSetOperationAsync(array $args = [])
* @method \Aws\Result describeStacks(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStacksAsync(array $args = [])
* @method \Aws\Result detectStackDrift(array $args = [])
* @method \GuzzleHttp\Promise\Promise detectStackDriftAsync(array $args = [])
* @method \Aws\Result detectStackResourceDrift(array $args = [])
* @method \GuzzleHttp\Promise\Promise detectStackResourceDriftAsync(array $args = [])
* @method \Aws\Result estimateTemplateCost(array $args = [])
* @method \GuzzleHttp\Promise\Promise estimateTemplateCostAsync(array $args = [])
* @method \Aws\Result executeChangeSet(array $args = [])

View File

@@ -50,54 +50,54 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise updateDistributionAsync(array $args = [])
* @method \Aws\Result updateStreamingDistribution(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateStreamingDistributionAsync(array $args = [])
* @method \Aws\Result createDistributionWithTags(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise createDistributionWithTagsAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \Aws\Result createStreamingDistributionWithTags(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise createStreamingDistributionWithTagsAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \Aws\Result listTagsForResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \Aws\Result tagResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \Aws\Result untagResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18)
* @method \Aws\Result createDistributionWithTags(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise createDistributionWithTagsAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result createStreamingDistributionWithTags(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise createStreamingDistributionWithTagsAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result listTagsForResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result tagResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result untagResource(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = []) (supported in versions 2016-08-01, 2016-08-20, 2016-09-07, 2016-09-29, 2016-11-25, 2017-03-25, 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result deleteServiceLinkedRole(array $args = []) (supported in versions 2017-03-25)
* @method \GuzzleHttp\Promise\Promise deleteServiceLinkedRoleAsync(array $args = []) (supported in versions 2017-03-25)
* @method \Aws\Result createFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise createFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result createFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise createFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result createPublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise createPublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result deleteFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise deleteFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result deleteFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise deleteFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result deletePublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise deletePublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result getFieldLevelEncryption(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result getFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result getFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result getFieldLevelEncryptionProfileConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionProfileConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result getPublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise getPublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result getPublicKeyConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise getPublicKeyConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result listFieldLevelEncryptionConfigs(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise listFieldLevelEncryptionConfigsAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result listFieldLevelEncryptionProfiles(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise listFieldLevelEncryptionProfilesAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result listPublicKeys(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise listPublicKeysAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result updateFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise updateFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result updateFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise updateFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result updatePublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \GuzzleHttp\Promise\Promise updatePublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18)
* @method \Aws\Result createFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise createFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result createFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise createFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result createPublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise createPublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result deleteFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise deleteFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result deleteFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise deleteFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result deletePublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise deletePublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result getFieldLevelEncryption(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result getFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result getFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result getFieldLevelEncryptionProfileConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise getFieldLevelEncryptionProfileConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result getPublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise getPublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result getPublicKeyConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise getPublicKeyConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result listFieldLevelEncryptionConfigs(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise listFieldLevelEncryptionConfigsAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result listFieldLevelEncryptionProfiles(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise listFieldLevelEncryptionProfilesAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result listPublicKeys(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise listPublicKeysAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result updateFieldLevelEncryptionConfig(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise updateFieldLevelEncryptionConfigAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result updateFieldLevelEncryptionProfile(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise updateFieldLevelEncryptionProfileAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \Aws\Result updatePublicKey(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
* @method \GuzzleHttp\Promise\Promise updatePublicKeyAsync(array $args = []) (supported in versions 2017-10-30, 2018-06-18, 2018-11-05)
*/
class CloudFrontClient extends AwsClient
{

View File

@@ -26,6 +26,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getMetricDataAsync(array $args = [])
* @method \Aws\Result getMetricStatistics(array $args = [])
* @method \GuzzleHttp\Promise\Promise getMetricStatisticsAsync(array $args = [])
* @method \Aws\Result getMetricWidgetImage(array $args = [])
* @method \GuzzleHttp\Promise\Promise getMetricWidgetImageAsync(array $args = [])
* @method \Aws\Result listDashboards(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDashboardsAsync(array $args = [])
* @method \Aws\Result listMetrics(array $args = [])

View File

@@ -40,6 +40,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise describeLogStreamsAsync(array $args = [])
* @method \Aws\Result describeMetricFilters(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeMetricFiltersAsync(array $args = [])
* @method \Aws\Result describeQueries(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeQueriesAsync(array $args = [])
* @method \Aws\Result describeResourcePolicies(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeResourcePoliciesAsync(array $args = [])
* @method \Aws\Result describeSubscriptionFilters(array $args = [])
@@ -50,6 +52,12 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise filterLogEventsAsync(array $args = [])
* @method \Aws\Result getLogEvents(array $args = [])
* @method \GuzzleHttp\Promise\Promise getLogEventsAsync(array $args = [])
* @method \Aws\Result getLogGroupFields(array $args = [])
* @method \GuzzleHttp\Promise\Promise getLogGroupFieldsAsync(array $args = [])
* @method \Aws\Result getLogRecord(array $args = [])
* @method \GuzzleHttp\Promise\Promise getLogRecordAsync(array $args = [])
* @method \Aws\Result getQueryResults(array $args = [])
* @method \GuzzleHttp\Promise\Promise getQueryResultsAsync(array $args = [])
* @method \Aws\Result listTagsLogGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsLogGroupAsync(array $args = [])
* @method \Aws\Result putDestination(array $args = [])
@@ -66,6 +74,10 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise putRetentionPolicyAsync(array $args = [])
* @method \Aws\Result putSubscriptionFilter(array $args = [])
* @method \GuzzleHttp\Promise\Promise putSubscriptionFilterAsync(array $args = [])
* @method \Aws\Result startQuery(array $args = [])
* @method \GuzzleHttp\Promise\Promise startQueryAsync(array $args = [])
* @method \Aws\Result stopQuery(array $args = [])
* @method \GuzzleHttp\Promise\Promise stopQueryAsync(array $args = [])
* @method \Aws\Result tagLogGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise tagLogGroupAsync(array $args = [])
* @method \Aws\Result testMetricFilter(array $args = [])

View File

@@ -18,6 +18,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise deleteBranchAsync(array $args = [])
* @method \Aws\Result deleteCommentContent(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteCommentContentAsync(array $args = [])
* @method \Aws\Result deleteFile(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteFileAsync(array $args = [])
* @method \Aws\Result deleteRepository(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRepositoryAsync(array $args = [])
* @method \Aws\Result describePullRequestEvents(array $args = [])
@@ -36,6 +38,10 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getCommitAsync(array $args = [])
* @method \Aws\Result getDifferences(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDifferencesAsync(array $args = [])
* @method \Aws\Result getFile(array $args = [])
* @method \GuzzleHttp\Promise\Promise getFileAsync(array $args = [])
* @method \Aws\Result getFolder(array $args = [])
* @method \GuzzleHttp\Promise\Promise getFolderAsync(array $args = [])
* @method \Aws\Result getMergeConflicts(array $args = [])
* @method \GuzzleHttp\Promise\Promise getMergeConflictsAsync(array $args = [])
* @method \Aws\Result getPullRequest(array $args = [])

Some files were not shown because too many files have changed in this diff Show More