1
0
Fork 0
mirror of https://github.com/DanielnetoDotCom/YouPHPTube synced 2025-10-03 01:39:24 +02:00

You can now upload images to the comments. and select where the live row will appear in the gallery

This commit is contained in:
Daniel Neto 2024-08-19 17:02:02 -03:00
parent 3cc9e2f572
commit e38b1aea36
831 changed files with 32035 additions and 2085 deletions

View file

@ -48,6 +48,7 @@
"vimeo/vimeo-api": "^3.0",
"phpseclib/phpseclib": "^3.0",
"bunnycdn/storage": "^3.0",
"chillerlan/php-qrcode": "^5.0"
"chillerlan/php-qrcode": "^5.0",
"erusev/parsedown": "^1.7"
}
}

54
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "d533d634209cdb9c65482b398f123942",
"content-hash": "22871f414bd488b32e41ae64c4ac12e2",
"packages": [
{
"name": "abraham/twitteroauth",
@ -987,6 +987,56 @@
"abandoned": true,
"time": "2019-02-15T01:32:20+00:00"
},
{
"name": "erusev/parsedown",
"version": "1.7.4",
"source": {
"type": "git",
"url": "https://github.com/erusev/parsedown.git",
"reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3",
"reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
},
"type": "library",
"autoload": {
"psr-0": {
"Parsedown": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Emanuil Rusev",
"email": "hello@erusev.com",
"homepage": "http://erusev.com"
}
],
"description": "Parser for Markdown.",
"homepage": "http://parsedown.org",
"keywords": [
"markdown",
"parser"
],
"support": {
"issues": "https://github.com/erusev/parsedown/issues",
"source": "https://github.com/erusev/parsedown/tree/1.7.x"
},
"time": "2019-12-30T22:54:17+00:00"
},
{
"name": "evenement/evenement",
"version": "v3.0.2",
@ -6219,5 +6269,5 @@
"platform-overrides": {
"php": "8"
},
"plugin-api-version": "2.6.0"
"plugin-api-version": "2.3.0"
}

View file

@ -240,7 +240,7 @@ class Comment {
$row = cleanUpRowFromDatabase($row);
$row['comment'] = str_replace('\n', "\n", $row['comment']);
$row['commentPlain'] = xss_esc_back($row['comment']);
$row['commentHTML'] = nl2br($row['commentPlain']);
$row['commentHTML'] = markDownToHTML($row['commentPlain']);
$row['responses'] = array();
if($includeResponses){
$row['responses'] = self::getAllComments($videoId, $row['id'], $video_owner_users_id, $includeResponses);
@ -412,7 +412,7 @@ class Comment {
if(empty($row['commentHTML'])){
$row['comment'] = str_replace('\n', "\n", $row['comment']);
$row['commentPlain'] = xss_esc_back($row['comment']);
$row['commentHTML'] = nl2br($row['commentPlain']);
$row['commentHTML'] = markDownToHTML($row['commentPlain']);
}
$row['identification'] = User::getNameIdentificationById($row['users_id']);

View file

@ -134,7 +134,7 @@ function requestComesFromSafePlace()
/**
* for security clean all non secure files from directory
* @param string $dir
* @param string $allowedExtensions
* @param array $allowedExtensions
* @return string
*/
function cleanDirectory($dir, $allowedExtensions = ['key', 'm3u8', 'ts', 'vtt', 'jpg', 'gif', 'mp3', 'webm', 'webp'])
@ -288,3 +288,29 @@ function isBot($returnTrueIfNoUserAgent=true)
}
return $_isBot;
}
function markDownToHTML($text) {
$parsedown = new Parsedown();
// Convert Markdown to HTML
$html = $parsedown->text($text);
// Convert new lines to <br> tags
$html = nl2br($html);
// Convert URLs to clickable links with target="_blank"
$html = preg_replace(
'/\b[^"\']https?:\/\/[^\s<]+/i',
'<a href="$0" target="_blank" rel="noopener noreferrer">$0</a>',
$html
);
// Add classes to images
$html = preg_replace(
'/<img([^>]+)>/i',
'<img$1 class="img img-responsive">',
$html
);
return $html;
}

View file

@ -73,6 +73,7 @@ class Gallery extends PluginAbstract
$obj->MainContainerFluid = true;
$obj->hidePrivateVideos = false;
$obj->BigVideo = true;
$obj->showLivesAboveBigVideo = false;

View file

@ -1,4 +1,7 @@
<?php
use Fhaculty\Graph\Edge\Base;
saveRequestVars();
?>
<link href="<?php echo getURL('plugin/Gallery/style.css'); ?>" rel="stylesheet" type="text/css"/>
@ -37,6 +40,9 @@ saveRequestVars();
}
}
if (empty($_GET['search']) && !isInfiniteScroll()) {
if ($obj->showLivesAboveBigVideo) {
include $global['systemRootPath'] . 'plugin/Gallery/view/mainAreaLiveRow.php';
}
include $global['systemRootPath'] . 'plugin/Gallery/view/BigVideoLive.php';
}
//var_dump(!empty($video), debug_backtrace());exit;
@ -48,24 +54,9 @@ saveRequestVars();
include $global['systemRootPath'] . 'plugin/Gallery/view/BigVideo.php';
}
echo '<center style="margin:5px;">' . getAdsLeaderBoardTop2() . '</center>';
if (empty($_REQUEST['catName'])) {
$objLive = AVideoPlugin::getDataObject('Live');
if (empty($objLive->doNotShowLiveOnVideosList)) {
?>
<!-- For Live Videos mainArea -->
<div id="liveVideos" class="clear clearfix" style="display: none;">
<h3 class="galleryTitle text-danger"> <i class="fas fa-play-circle"></i> <?php echo __("Live"); ?></h3>
<div class="extraVideos"></div>
</div>
<!-- For Live Schedule Videos -->
<div id="liveScheduleVideos" class="clear clearfix" style="display: none;">
<h3 class="galleryTitle"> <i class="far fa-calendar-alt"></i> <?php echo __($objLive->live_schedule_label); ?></h3>
<div class="extraVideos"></div>
</div>
<!-- For Live Videos End -->
<?php
}
}
include $global['systemRootPath'] . 'plugin/Gallery/view/mainAreaLiveRow.php';
echo AVideoPlugin::getGallerySection();
$sections = Gallery::getSectionsOrder();

View file

@ -23,7 +23,7 @@ $_page = new Page(array('Live'));
<h3 class="galleryTitle text-danger"> <i class="fas fa-play-circle"></i> <?php echo __("Live"); ?></h3>
<div class="extraVideos"></div>
</div>
<!-- For Live Schedule Videos -->
<!-- For Live Schedule Videos <?php echo basename(__FILE__); ?> -->
<div id="liveScheduleVideos" class="clear clearfix" style="display: none;">
<h3 class="galleryTitle"> <i class="far fa-calendar-alt"></i> <?php echo __($objLive->live_schedule_label); ?></h3>
<div class="extraVideos"></div>

View file

@ -0,0 +1,24 @@
<?php
global $global;
if(!empty($global['mainAreaLiveRow'])){
return;
}
if (empty($_REQUEST['catName'])) {
$objLive = AVideoPlugin::getDataObject('Live');
if (empty($objLive->doNotShowLiveOnVideosList)) {
?>
<!-- For Live Videos mainArea -->
<div id="liveVideos" class="clear clearfix" style="display: none;">
<h3 class="galleryTitle text-danger"> <i class="fas fa-play-circle"></i> <?php echo __("Live"); ?></h3>
<div class="extraVideos"></div>
</div>
<!-- For Live Schedule Videos <?php echo basename(__FILE__); ?> -->
<div id="liveScheduleVideos" class="clear clearfix" style="display: none;">
<h3 class="galleryTitle"> <i class="far fa-calendar-alt"></i> <?php echo __($objLive->live_schedule_label); ?></h3>
<div class="extraVideos"></div>
</div>
<!-- For Live Videos End -->
<?php
}
}
$global['mainAreaLiveRow'] = 1;

View file

@ -17,8 +17,8 @@
},
"require": {
"php": ">=7.2.5",
"guzzlehttp/guzzle": "^6.5.8 || ^7.4.5 <7.9.0",
"guzzlehttp/psr7": "^1.9.1 || ^2.4.5 <2.7.0",
"guzzlehttp/guzzle": "^6.5.8 || ^7.4.5",
"guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
"guzzlehttp/promises": "^1.4.0 || ^2.0",
"mtdowling/jmespath.php": "^2.6",
"ext-pcre": "*",
@ -57,7 +57,8 @@
"psr-4": {
"Aws\\": "src/"
},
"files": ["src/functions.php"]
"files": ["src/functions.php"],
"exclude-from-classmap": ["src/data/"]
},
"autoload-dev": {
"psr-4": {

View file

@ -13,6 +13,8 @@ use Exception;
*/
class DateTimeResult extends \DateTime implements \JsonSerializable
{
private const ISO8601_NANOSECOND_REGEX = '/^(.*\.\d{6})(\d{1,3})(Z|[+-]\d{2}:\d{2})?$/';
/**
* Create a new DateTimeResult from a unix timestamp.
* The Unix epoch (or Unix time or POSIX time or Unix
@ -60,6 +62,14 @@ class DateTimeResult extends \DateTime implements \JsonSerializable
throw new ParserException('Invalid timestamp value passed to DateTimeResult::fromISO8601');
}
// Prior to 8.0.10, nanosecond precision is not supported
// Reduces to microsecond precision if nanosecond precision is detected
if (PHP_VERSION_ID < 80010
&& preg_match(self::ISO8601_NANOSECOND_REGEX, $iso8601Timestamp, $matches)
) {
$iso8601Timestamp = $matches[1] . ($matches[3] ?? '');
}
return new DateTimeResult($iso8601Timestamp);
}

View file

@ -284,7 +284,7 @@ class Service extends AbstractModel
$this->definition['operations'][$name],
$this->shapeMap
);
} else if ($this->modifiedModel) {
} elseif ($this->modifiedModel) {
$this->operations[$name] = new Operation(
$this->definition['operations'][$name],
$this->shapeMap
@ -517,6 +517,7 @@ class Service extends AbstractModel
public function setDefinition($definition)
{
$this->definition = $definition;
$this->shapeMap = new ShapeMap($definition['shapes']);
$this->modifiedModel = true;
}

View file

@ -9,6 +9,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise createApplicationAsync(array $args = [])
* @method \Aws\Result createDataIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDataIntegrationAsync(array $args = [])
* @method \Aws\Result createDataIntegrationAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDataIntegrationAssociationAsync(array $args = [])
* @method \Aws\Result createEventIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise createEventIntegrationAsync(array $args = [])
* @method \Aws\Result deleteApplication(array $args = [])
@ -45,6 +47,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise updateApplicationAsync(array $args = [])
* @method \Aws\Result updateDataIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDataIntegrationAsync(array $args = [])
* @method \Aws\Result updateDataIntegrationAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDataIntegrationAssociationAsync(array $args = [])
* @method \Aws\Result updateEventIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateEventIntegrationAsync(array $args = [])
*/

View file

@ -41,6 +41,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 createThemeForStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise createThemeForStackAsync(array $args = [])
* @method \Aws\Result createUpdatedImage(array $args = [])
* @method \GuzzleHttp\Promise\Promise createUpdatedImageAsync(array $args = [])
* @method \Aws\Result createUsageReportSubscription(array $args = [])
@ -67,6 +69,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 deleteThemeForStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteThemeForStackAsync(array $args = [])
* @method \Aws\Result deleteUsageReportSubscription(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteUsageReportSubscriptionAsync(array $args = [])
* @method \Aws\Result deleteUser(array $args = [])
@ -97,6 +101,8 @@ 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 describeThemeForStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeThemeForStackAsync(array $args = [])
* @method \Aws\Result describeUsageReportSubscriptions(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeUsageReportSubscriptionsAsync(array $args = [])
* @method \Aws\Result describeUserStackAssociations(array $args = [])
@ -155,5 +161,7 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise updateImagePermissionsAsync(array $args = [])
* @method \Aws\Result updateStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateStackAsync(array $args = [])
* @method \Aws\Result updateThemeForStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateThemeForStackAsync(array $args = [])
*/
class AppstreamClient extends AwsClient {}

View file

@ -29,6 +29,9 @@ class AwsClient implements AwsClientInterface
/** @var string */
private $region;
/** @var string */
private $signingRegionSet;
/** @var string */
private $endpoint;
@ -208,6 +211,16 @@ class AwsClient implements AwsClientInterface
* client-side parameter validation.
* - version: (string, required) The version of the webservice to
* utilize (e.g., 2006-03-01).
* - account_id_endpoint_mode: (string, default(preferred)) this option
* decides whether credentials should resolve an accountId value,
* which is going to be used as part of the endpoint resolution.
* The valid values for this option are:
* - preferred: when this value is set then, a warning is logged when
* accountId is empty in the resolved identity.
* - required: when this value is set then, an exception is thrown when
* accountId is empty in the resolved identity.
* - disabled: when this value is set then, the validation for if accountId
* was resolved or not, is ignored.
* - ua_append: (string, array) To pass custom user agent parameters.
* - app_id: (string) an optional application specific identifier that can be set.
* When set it will be appended to the User-Agent header of every request
@ -240,8 +253,9 @@ class AwsClient implements AwsClientInterface
$this->credentialProvider = $config['credentials'];
$this->tokenProvider = $config['token'];
$this->region = $config['region'] ?? null;
$this->signingRegionSet = $config['sigv4a_signing_region_set'] ?? null;
$this->config = $config['config'];
$this->setClientBuiltIns($args);
$this->setClientBuiltIns($args, $config);
$this->clientContextParams = $this->setClientContextParams($args);
$this->defaultRequestOptions = $config['http'];
$this->endpointProvider = $config['endpoint_provider'];
@ -422,6 +436,7 @@ class AwsClient implements AwsClientInterface
$signatureVersion = $this->config['signature_version'];
$name = $this->config['signing_name'];
$region = $this->config['signing_region'];
$signingRegionSet = $this->signingRegionSet;
if (isset($args['signature_version'])
|| isset($this->config['configured_signature_version'])
@ -433,7 +448,15 @@ class AwsClient implements AwsClientInterface
$resolver = static function (
CommandInterface $c
) use ($api, $provider, $name, $region, $signatureVersion, $configuredSignatureVersion) {
) use (
$api,
$provider,
$name,
$region,
$signatureVersion,
$configuredSignatureVersion,
$signingRegionSet
) {
if (!$configuredSignatureVersion) {
if (!empty($c['@context']['signing_region'])) {
$region = $c['@context']['signing_region'];
@ -459,6 +482,16 @@ class AwsClient implements AwsClientInterface
}
}
if ($signatureVersion === 'v4a') {
$commandSigningRegionSet = !empty($c['@context']['signing_region_set'])
? implode(', ', $c['@context']['signing_region_set'])
: null;
$region = $signingRegionSet
?? $commandSigningRegionSet
?? $region;
}
return SignatureProvider::resolve($provider, $signatureVersion, $name, $region);
};
$this->handlerList->appendSign(
@ -555,7 +588,8 @@ class AwsClient implements AwsClientInterface
EndpointV2Middleware::wrap(
$this->endpointProvider,
$this->getApi(),
$endpointArgs
$endpointArgs,
$this->credentialProvider
),
'endpoint-resolution'
);
@ -585,10 +619,10 @@ class AwsClient implements AwsClientInterface
/**
* Retrieves and sets default values used for endpoint resolution.
*/
private function setClientBuiltIns($args)
private function setClientBuiltIns($args, $resolvedConfig)
{
$builtIns = [];
$config = $this->getConfig();
$config = $resolvedConfig['config'];
$service = $args['service'];
$builtIns['SDK::Endpoint'] = null;
@ -609,6 +643,8 @@ class AwsClient implements AwsClientInterface
$builtIns['AWS::S3::ForcePathStyle'] = $config['use_path_style_endpoint'];
$builtIns['AWS::S3::DisableMultiRegionAccessPoints'] = $config['disable_multiregion_access_points'];
}
$builtIns['AWS::Auth::AccountIdEndpointMode'] = $resolvedConfig['account_id_endpoint_mode'];
$this->clientBuiltIns += $builtIns;
}
@ -648,6 +684,11 @@ class AwsClient implements AwsClientInterface
}
public static function emitDeprecationWarning() {
trigger_error(
"This method is deprecated. It will be removed in an upcoming release."
, E_USER_DEPRECATED
);
$phpVersion = PHP_VERSION_ID;
if ($phpVersion < 70205) {
$phpVersionString = phpversion();

View file

@ -11,6 +11,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise createGuardrailAsync(array $args = [])
* @method \Aws\Result createGuardrailVersion(array $args = [])
* @method \GuzzleHttp\Promise\Promise createGuardrailVersionAsync(array $args = [])
* @method \Aws\Result createModelCopyJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise createModelCopyJobAsync(array $args = [])
* @method \Aws\Result createModelCustomizationJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise createModelCustomizationJobAsync(array $args = [])
* @method \Aws\Result createProvisionedModelThroughput(array $args = [])
@ -31,6 +33,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getFoundationModelAsync(array $args = [])
* @method \Aws\Result getGuardrail(array $args = [])
* @method \GuzzleHttp\Promise\Promise getGuardrailAsync(array $args = [])
* @method \Aws\Result getModelCopyJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise getModelCopyJobAsync(array $args = [])
* @method \Aws\Result getModelCustomizationJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise getModelCustomizationJobAsync(array $args = [])
* @method \Aws\Result getModelInvocationLoggingConfiguration(array $args = [])
@ -45,6 +49,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listFoundationModelsAsync(array $args = [])
* @method \Aws\Result listGuardrails(array $args = [])
* @method \GuzzleHttp\Promise\Promise listGuardrailsAsync(array $args = [])
* @method \Aws\Result listModelCopyJobs(array $args = [])
* @method \GuzzleHttp\Promise\Promise listModelCopyJobsAsync(array $args = [])
* @method \Aws\Result listModelCustomizationJobs(array $args = [])
* @method \GuzzleHttp\Promise\Promise listModelCustomizationJobsAsync(array $args = [])
* @method \Aws\Result listProvisionedModelThroughputs(array $args = [])

View file

@ -23,6 +23,12 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise createConfiguredTableAnalysisRuleAsync(array $args = [])
* @method \Aws\Result createConfiguredTableAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise createConfiguredTableAssociationAsync(array $args = [])
* @method \Aws\Result createConfiguredTableAssociationAnalysisRule(array $args = [])
* @method \GuzzleHttp\Promise\Promise createConfiguredTableAssociationAnalysisRuleAsync(array $args = [])
* @method \Aws\Result createIdMappingTable(array $args = [])
* @method \GuzzleHttp\Promise\Promise createIdMappingTableAsync(array $args = [])
* @method \Aws\Result createIdNamespaceAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise createIdNamespaceAssociationAsync(array $args = [])
* @method \Aws\Result createMembership(array $args = [])
* @method \GuzzleHttp\Promise\Promise createMembershipAsync(array $args = [])
* @method \Aws\Result createPrivacyBudgetTemplate(array $args = [])
@ -39,6 +45,12 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise deleteConfiguredTableAnalysisRuleAsync(array $args = [])
* @method \Aws\Result deleteConfiguredTableAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteConfiguredTableAssociationAsync(array $args = [])
* @method \Aws\Result deleteConfiguredTableAssociationAnalysisRule(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteConfiguredTableAssociationAnalysisRuleAsync(array $args = [])
* @method \Aws\Result deleteIdMappingTable(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteIdMappingTableAsync(array $args = [])
* @method \Aws\Result deleteIdNamespaceAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteIdNamespaceAssociationAsync(array $args = [])
* @method \Aws\Result deleteMember(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteMemberAsync(array $args = [])
* @method \Aws\Result deleteMembership(array $args = [])
@ -53,6 +65,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getCollaborationAnalysisTemplateAsync(array $args = [])
* @method \Aws\Result getCollaborationConfiguredAudienceModelAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise getCollaborationConfiguredAudienceModelAssociationAsync(array $args = [])
* @method \Aws\Result getCollaborationIdNamespaceAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise getCollaborationIdNamespaceAssociationAsync(array $args = [])
* @method \Aws\Result getCollaborationPrivacyBudgetTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise getCollaborationPrivacyBudgetTemplateAsync(array $args = [])
* @method \Aws\Result getConfiguredAudienceModelAssociation(array $args = [])
@ -63,6 +77,12 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getConfiguredTableAnalysisRuleAsync(array $args = [])
* @method \Aws\Result getConfiguredTableAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise getConfiguredTableAssociationAsync(array $args = [])
* @method \Aws\Result getConfiguredTableAssociationAnalysisRule(array $args = [])
* @method \GuzzleHttp\Promise\Promise getConfiguredTableAssociationAnalysisRuleAsync(array $args = [])
* @method \Aws\Result getIdMappingTable(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIdMappingTableAsync(array $args = [])
* @method \Aws\Result getIdNamespaceAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIdNamespaceAssociationAsync(array $args = [])
* @method \Aws\Result getMembership(array $args = [])
* @method \GuzzleHttp\Promise\Promise getMembershipAsync(array $args = [])
* @method \Aws\Result getPrivacyBudgetTemplate(array $args = [])
@ -79,6 +99,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listCollaborationAnalysisTemplatesAsync(array $args = [])
* @method \Aws\Result listCollaborationConfiguredAudienceModelAssociations(array $args = [])
* @method \GuzzleHttp\Promise\Promise listCollaborationConfiguredAudienceModelAssociationsAsync(array $args = [])
* @method \Aws\Result listCollaborationIdNamespaceAssociations(array $args = [])
* @method \GuzzleHttp\Promise\Promise listCollaborationIdNamespaceAssociationsAsync(array $args = [])
* @method \Aws\Result listCollaborationPrivacyBudgetTemplates(array $args = [])
* @method \GuzzleHttp\Promise\Promise listCollaborationPrivacyBudgetTemplatesAsync(array $args = [])
* @method \Aws\Result listCollaborationPrivacyBudgets(array $args = [])
@ -91,6 +113,10 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listConfiguredTableAssociationsAsync(array $args = [])
* @method \Aws\Result listConfiguredTables(array $args = [])
* @method \GuzzleHttp\Promise\Promise listConfiguredTablesAsync(array $args = [])
* @method \Aws\Result listIdMappingTables(array $args = [])
* @method \GuzzleHttp\Promise\Promise listIdMappingTablesAsync(array $args = [])
* @method \Aws\Result listIdNamespaceAssociations(array $args = [])
* @method \GuzzleHttp\Promise\Promise listIdNamespaceAssociationsAsync(array $args = [])
* @method \Aws\Result listMembers(array $args = [])
* @method \GuzzleHttp\Promise\Promise listMembersAsync(array $args = [])
* @method \Aws\Result listMemberships(array $args = [])
@ -105,6 +131,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listSchemasAsync(array $args = [])
* @method \Aws\Result listTagsForResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
* @method \Aws\Result populateIdMappingTable(array $args = [])
* @method \GuzzleHttp\Promise\Promise populateIdMappingTableAsync(array $args = [])
* @method \Aws\Result previewPrivacyImpact(array $args = [])
* @method \GuzzleHttp\Promise\Promise previewPrivacyImpactAsync(array $args = [])
* @method \Aws\Result startProtectedQuery(array $args = [])
@ -125,6 +153,12 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise updateConfiguredTableAnalysisRuleAsync(array $args = [])
* @method \Aws\Result updateConfiguredTableAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateConfiguredTableAssociationAsync(array $args = [])
* @method \Aws\Result updateConfiguredTableAssociationAnalysisRule(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateConfiguredTableAssociationAnalysisRuleAsync(array $args = [])
* @method \Aws\Result updateIdMappingTable(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateIdMappingTableAsync(array $args = [])
* @method \Aws\Result updateIdNamespaceAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateIdNamespaceAssociationAsync(array $args = [])
* @method \Aws\Result updateMembership(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateMembershipAsync(array $args = [])
* @method \Aws\Result updatePrivacyBudgetTemplate(array $args = [])

View file

@ -308,6 +308,27 @@ class ClientResolver
'doc' => 'Set to false to disable checking for shared aws config files usually located in \'~/.aws/config\' and \'~/.aws/credentials\'. This will be ignored if you set the \'profile\' setting.',
'default' => true,
],
'suppress_php_deprecation_warning' => [
'type' => 'value',
'valid' => ['bool'],
'doc' => 'Set to true to suppress PHP runtime deprecation warnings. The current deprecation campaign is PHP versions 8.0.x and below, taking effect on 1/13/2025.',
'default' => false,
'fn' => [__CLASS__, '_apply_suppress_php_deprecation_warning']
],
'account_id_endpoint_mode' => [
'type' => 'value',
'valid' => ['string'],
'doc' => 'Decides whether account_id must a be a required resolved credentials property. If this configuration is set to disabled, then account_id is not required. If set to preferred a warning will be logged when account_id is not resolved, and when set to required an exception will be thrown if account_id is not resolved.',
'default' => [__CLASS__, '_default_account_id_endpoint_mode'],
'fn' => [__CLASS__, '_apply_account_id_endpoint_mode']
],
'sigv4a_signing_region_set' => [
'type' => 'value',
'valid' => ['array', 'string'],
'doc' => 'A comma-delimited list of supported regions sent in sigv4a requests.',
'fn' => [__CLASS__, '_apply_sigv4a_signing_region_set'],
'default' => [__CLASS__, '_default_sigv4a_signing_region_set']
]
];
/**
@ -618,7 +639,8 @@ class ClientResolver
$value['key'],
$value['secret'],
$value['token'] ?? null,
$value['expires'] ?? null
$value['expires'] ?? null,
$value['accountId'] ?? null
)
);
} elseif ($value === false) {
@ -1088,6 +1110,29 @@ class ClientResolver
}
}
public static function _default_account_id_endpoint_mode($args)
{
return ConfigurationResolver::resolve(
'account_id_endpoint_mode',
'preferred',
'string',
$args
);
}
public static function _apply_account_id_endpoint_mode($value, array &$args)
{
static $accountIdEndpointModes = ['disabled', 'required', 'preferred'];
if (!in_array($value, $accountIdEndpointModes)) {
throw new IAE(
"The value provided for the config account_id_endpoint_mode is invalid."
."Valid values are: " . implode(", ", $accountIdEndpointModes)
);
}
$args['account_id_endpoint_mode'] = $value;
}
public static function _default_endpoint_provider(array $args)
{
$service = $args['api'] ?? null;
@ -1192,6 +1237,28 @@ class ClientResolver
$args['config']['ignore_configured_endpoint_urls'] = $value;
}
public static function _apply_suppress_php_deprecation_warning($value, &$args)
{
if ($value) {
$args['suppress_php_deprecation_warning'] = true;
} elseif (!empty(getenv("AWS_SUPPRESS_PHP_DEPRECATION_WARNING"))) {
$args['suppress_php_deprecation_warning']
= \Aws\boolean_value(getenv("AWS_SUPPRESS_PHP_DEPRECATION_WARNING"));
} elseif (!empty($_SERVER["AWS_SUPPRESS_PHP_DEPRECATION_WARNING"])) {
$args['suppress_php_deprecation_warning'] =
\Aws\boolean_value($_SERVER["AWS_SUPPRESS_PHP_DEPRECATION_WARNING"]);
} elseif (!empty($_ENV["AWS_SUPPRESS_PHP_DEPRECATION_WARNING"])) {
$args['suppress_php_deprecation_warning'] =
\Aws\boolean_value($_SERVER["AWS_SUPPRESS_PHP_DEPRECATION_WARNING"]);
}
if ($args['suppress_php_deprecation_warning'] === false
&& PHP_VERSION_ID < 80100
) {
self::emitDeprecationWarning();
}
}
public static function _default_ignore_configured_endpoint_urls(array &$args)
{
return ConfigurationResolver::resolve(
@ -1240,6 +1307,26 @@ class ClientResolver
return $value;
}
public static function _apply_sigv4a_signing_region_set($value, array &$args)
{
if (empty($value)) {
$args['sigv4a_signing_region_set'] = null;
} elseif (is_array($value)) {
$args['sigv4a_signing_region_set'] = implode(', ', $value);
} else {
$args['sigv4a_signing_region_set'] = $value;
}
}
public static function _default_sigv4a_signing_region_set(array &$args)
{
return ConfigurationResolver::resolve(
'sigv4a_signing_region_set',
'',
'string'
);
}
public static function _apply_region($value, array &$args)
{
if (empty($value)) {
@ -1334,7 +1421,8 @@ EOT;
}
}
private static function isValidService($service) {
private static function isValidService($service)
{
if (is_null($service)) {
return false;
}
@ -1342,7 +1430,8 @@ EOT;
return isset($services[$service]);
}
private static function isValidApiVersion($service, $apiVersion) {
private static function isValidApiVersion($service, $apiVersion)
{
if (is_null($apiVersion)) {
return false;
}
@ -1350,4 +1439,21 @@ EOT;
__DIR__ . "/data/{$service}/$apiVersion"
);
}
private static function emitDeprecationWarning()
{
$phpVersionString = phpversion();
trigger_error(
"This installation of the SDK is using PHP version"
. " {$phpVersionString}, which will be deprecated on January"
. " 13th, 2025.\nPlease upgrade your PHP version to a minimum of"
. " 8.1.x to continue receiving updates for the AWS"
. " SDK for PHP.\nTo disable this warning, set"
. " suppress_php_deprecation_warning to true on the client constructor"
. " or set the environment variable AWS_SUPPRESS_PHP_DEPRECATION_WARNING"
. " to true.\nMore information can be found at: "
. "https://aws.amazon.com/blogs/developer/announcing-the-end-of-support-for-php-runtimes-8-0-x-and-below-in-the-aws-sdk-for-php/\n",
E_USER_WARNING
);
}
}

View file

@ -46,10 +46,16 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listPipelineExecutionsAsync(array $args = [])
* @method \Aws\Result listPipelines(array $args = [])
* @method \GuzzleHttp\Promise\Promise listPipelinesAsync(array $args = [])
* @method \Aws\Result listRuleExecutions(array $args = [])
* @method \GuzzleHttp\Promise\Promise listRuleExecutionsAsync(array $args = [])
* @method \Aws\Result listRuleTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listRuleTypesAsync(array $args = [])
* @method \Aws\Result listTagsForResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
* @method \Aws\Result listWebhooks(array $args = [])
* @method \GuzzleHttp\Promise\Promise listWebhooksAsync(array $args = [])
* @method \Aws\Result overrideStageCondition(array $args = [])
* @method \GuzzleHttp\Promise\Promise overrideStageConditionAsync(array $args = [])
* @method \Aws\Result pollForJobs(array $args = [])
* @method \GuzzleHttp\Promise\Promise pollForJobsAsync(array $args = [])
* @method \Aws\Result pollForThirdPartyJobs(array $args = [])

View file

@ -5,8 +5,12 @@ use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Control Catalog** service.
* @method \Aws\Result getControl(array $args = [])
* @method \GuzzleHttp\Promise\Promise getControlAsync(array $args = [])
* @method \Aws\Result listCommonControls(array $args = [])
* @method \GuzzleHttp\Promise\Promise listCommonControlsAsync(array $args = [])
* @method \Aws\Result listControls(array $args = [])
* @method \GuzzleHttp\Promise\Promise listControlsAsync(array $args = [])
* @method \Aws\Result listDomains(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDomainsAsync(array $args = [])
* @method \Aws\Result listObjectives(array $args = [])

View file

@ -48,6 +48,7 @@ class CredentialProvider
const ENV_PROFILE = 'AWS_PROFILE';
const ENV_ROLE_SESSION_NAME = 'AWS_ROLE_SESSION_NAME';
const ENV_SECRET = 'AWS_SECRET_ACCESS_KEY';
const ENV_ACCOUNT_ID = 'AWS_ACCOUNT_ID';
const ENV_SESSION = 'AWS_SESSION_TOKEN';
const ENV_TOKEN_FILE = 'AWS_WEB_IDENTITY_TOKEN_FILE';
const ENV_SHARED_CREDENTIALS_FILE = 'AWS_SHARED_CREDENTIALS_FILE';
@ -291,9 +292,18 @@ class CredentialProvider
// Use credentials from environment variables, if available
$key = getenv(self::ENV_KEY);
$secret = getenv(self::ENV_SECRET);
$accountId = getenv(self::ENV_ACCOUNT_ID) ?: null;
$token = getenv(self::ENV_SESSION) ?: null;
if ($key && $secret) {
return Promise\Create::promiseFor(
new Credentials($key, $secret, getenv(self::ENV_SESSION) ?: NULL)
new Credentials(
$key,
$secret,
$token,
null,
$accountId
)
);
}
@ -541,7 +551,9 @@ class CredentialProvider
new Credentials(
$data[$profile]['aws_access_key_id'],
$data[$profile]['aws_secret_access_key'],
$data[$profile]['aws_session_token']
$data[$profile]['aws_session_token'],
null,
!empty($data[$profile]['aws_account_id']) ? $data[$profile]['aws_account_id'] : null
)
);
};
@ -616,12 +628,20 @@ class CredentialProvider
$processData['SessionToken'] = null;
}
$accountId = null;
if (!empty($processData['AccountId'])) {
$accountId = $processData['AccountId'];
} elseif (!empty($data[$profile]['aws_account_id'])) {
$accountId = $data[$profile]['aws_account_id'];
}
return Promise\Create::promiseFor(
new Credentials(
$processData['AccessKeyId'],
$processData['SecretAccessKey'],
$processData['SessionToken'],
$expires
$expires,
$accountId
)
);
};
@ -704,8 +724,8 @@ class CredentialProvider
'RoleArn' => $roleArn,
'RoleSessionName' => $roleSessionName
]);
$credentials = $stsClient->createCredentials($result);
return Promise\Create::promiseFor($credentials);
}
@ -897,7 +917,8 @@ class CredentialProvider
$ssoCredentials['accessKeyId'],
$ssoCredentials['secretAccessKey'],
$ssoCredentials['sessionToken'],
$expiration
$expiration,
$ssoProfile['sso_account_id']
)
);
}
@ -956,7 +977,8 @@ class CredentialProvider
$ssoCredentials['accessKeyId'],
$ssoCredentials['secretAccessKey'],
$ssoCredentials['sessionToken'],
$expiration
$expiration,
$ssoProfile['sso_account_id']
)
);
}

View file

@ -15,6 +15,7 @@ class Credentials extends AwsCredentialIdentity implements
private $secret;
private $token;
private $expires;
private $accountId;
/**
* Constructs a new BasicAWSCredentials object, with the specified AWS
@ -25,12 +26,13 @@ class Credentials extends AwsCredentialIdentity implements
* @param string $token Security token to use
* @param int $expires UNIX timestamp for when credentials expire
*/
public function __construct($key, $secret, $token = null, $expires = null)
public function __construct($key, $secret, $token = null, $expires = null, $accountId = null)
{
$this->key = trim((string) $key);
$this->secret = trim((string) $secret);
$this->token = $token;
$this->expires = $expires;
$this->accountId = $accountId;
}
public static function __set_state(array $state)
@ -39,7 +41,8 @@ class Credentials extends AwsCredentialIdentity implements
$state['key'],
$state['secret'],
$state['token'],
$state['expires']
$state['expires'],
$state['accountId']
);
}
@ -68,13 +71,19 @@ class Credentials extends AwsCredentialIdentity implements
return $this->expires !== null && time() >= $this->expires;
}
public function getAccountId()
{
return $this->accountId;
}
public function toArray()
{
return [
'key' => $this->key,
'secret' => $this->secret,
'token' => $this->token,
'expires' => $this->expires
'expires' => $this->expires,
'accountId' => $this->accountId
];
}
@ -101,6 +110,7 @@ class Credentials extends AwsCredentialIdentity implements
$this->secret = $data['secret'];
$this->token = $data['token'];
$this->expires = $data['expires'];
$this->accountId = $data['accountId'];
}
/**

View file

@ -69,18 +69,13 @@ class EcsCredentialProvider
public function __invoke()
{
$this->attempts = 0;
$uri = $this->getEcsUri();
if ($this->isCompatibleUri($uri)) {
return Promise\Coroutine::of(function () {
$client = $this->client;
$request = new Request('GET', $this->getEcsUri());
$headers = $this->getHeadersForAuthToken();
$credentials = null;
while ($credentials === null) {
$credentials = (yield $client(
$request,
@ -95,7 +90,8 @@ class EcsCredentialProvider
$result['AccessKeyId'],
$result['SecretAccessKey'],
$result['Token'],
strtotime($result['Expiration'])
strtotime($result['Expiration']),
$result['AccountId'] ?? null
);
})->otherwise(function ($reason) {
$reason = is_array($reason) ? $reason['exception'] : $reason;

View file

@ -226,7 +226,8 @@ class InstanceProfileProvider
$result['AccessKeyId'],
$result['SecretAccessKey'],
$result['Token'],
strtotime($result['Expiration'])
strtotime($result['Expiration']),
$result['AccountId'] ?? null
);
}

View file

@ -17,10 +17,16 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise cancelSubscriptionAsync(array $args = [])
* @method \Aws\Result createAsset(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAssetAsync(array $args = [])
* @method \Aws\Result createAssetFilter(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAssetFilterAsync(array $args = [])
* @method \Aws\Result createAssetRevision(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAssetRevisionAsync(array $args = [])
* @method \Aws\Result createAssetType(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAssetTypeAsync(array $args = [])
* @method \Aws\Result createDataProduct(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDataProductAsync(array $args = [])
* @method \Aws\Result createDataProductRevision(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDataProductRevisionAsync(array $args = [])
* @method \Aws\Result createDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDataSourceAsync(array $args = [])
* @method \Aws\Result createDomain(array $args = [])
@ -55,8 +61,12 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise createUserProfileAsync(array $args = [])
* @method \Aws\Result deleteAsset(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAssetAsync(array $args = [])
* @method \Aws\Result deleteAssetFilter(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAssetFilterAsync(array $args = [])
* @method \Aws\Result deleteAssetType(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAssetTypeAsync(array $args = [])
* @method \Aws\Result deleteDataProduct(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDataProductAsync(array $args = [])
* @method \Aws\Result deleteDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDataSourceAsync(array $args = [])
* @method \Aws\Result deleteDomain(array $args = [])
@ -93,8 +103,12 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise disassociateEnvironmentRoleAsync(array $args = [])
* @method \Aws\Result getAsset(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAssetAsync(array $args = [])
* @method \Aws\Result getAssetFilter(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAssetFilterAsync(array $args = [])
* @method \Aws\Result getAssetType(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAssetTypeAsync(array $args = [])
* @method \Aws\Result getDataProduct(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDataProductAsync(array $args = [])
* @method \Aws\Result getDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDataSourceAsync(array $args = [])
* @method \Aws\Result getDataSourceRun(array $args = [])
@ -109,6 +123,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getEnvironmentBlueprintAsync(array $args = [])
* @method \Aws\Result getEnvironmentBlueprintConfiguration(array $args = [])
* @method \GuzzleHttp\Promise\Promise getEnvironmentBlueprintConfigurationAsync(array $args = [])
* @method \Aws\Result getEnvironmentCredentials(array $args = [])
* @method \GuzzleHttp\Promise\Promise getEnvironmentCredentialsAsync(array $args = [])
* @method \Aws\Result getEnvironmentProfile(array $args = [])
* @method \GuzzleHttp\Promise\Promise getEnvironmentProfileAsync(array $args = [])
* @method \Aws\Result getFormType(array $args = [])
@ -141,8 +157,12 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getTimeSeriesDataPointAsync(array $args = [])
* @method \Aws\Result getUserProfile(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUserProfileAsync(array $args = [])
* @method \Aws\Result listAssetFilters(array $args = [])
* @method \GuzzleHttp\Promise\Promise listAssetFiltersAsync(array $args = [])
* @method \Aws\Result listAssetRevisions(array $args = [])
* @method \GuzzleHttp\Promise\Promise listAssetRevisionsAsync(array $args = [])
* @method \Aws\Result listDataProductRevisions(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDataProductRevisionsAsync(array $args = [])
* @method \Aws\Result listDataSourceRunActivities(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDataSourceRunActivitiesAsync(array $args = [])
* @method \Aws\Result listDataSourceRuns(array $args = [])
@ -213,6 +233,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
* @method \Aws\Result untagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
* @method \Aws\Result updateAssetFilter(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAssetFilterAsync(array $args = [])
* @method \Aws\Result updateDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDataSourceAsync(array $args = [])
* @method \Aws\Result updateDomain(array $args = [])

View file

@ -78,6 +78,8 @@ use Aws\PresignUrlMiddleware;
* @method \GuzzleHttp\Promise\Promise describePendingMaintenanceActionsAsync(array $args = [])
* @method \Aws\Result failoverDBCluster(array $args = [])
* @method \GuzzleHttp\Promise\Promise failoverDBClusterAsync(array $args = [])
* @method \Aws\Result failoverGlobalCluster(array $args = [])
* @method \GuzzleHttp\Promise\Promise failoverGlobalClusterAsync(array $args = [])
* @method \Aws\Result listTagsForResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
* @method \Aws\Result modifyDBCluster(array $args = [])

View file

@ -18,6 +18,9 @@ class DoctrineCacheAdapter implements CacheInterface, Cache
return $this->cache->fetch($key);
}
/**
* @return mixed
*/
public function fetch($key)
{
return $this->get($key);
@ -28,6 +31,9 @@ class DoctrineCacheAdapter implements CacheInterface, Cache
return $this->cache->save($key, $value, $ttl);
}
/**
* @return bool
*/
public function save($key, $value, $ttl = 0)
{
return $this->set($key, $value, $ttl);
@ -38,16 +44,25 @@ class DoctrineCacheAdapter implements CacheInterface, Cache
return $this->cache->delete($key);
}
/**
* @return bool
*/
public function delete($key)
{
return $this->remove($key);
}
/**
* @return bool
*/
public function contains($key)
{
return $this->cache->contains($key);
}
/**
* @return mixed[]|null
*/
public function getStats()
{
return $this->cache->getStats();

View file

@ -494,6 +494,8 @@ use Aws\PresignUrlMiddleware;
* @method \GuzzleHttp\Promise\Promise copyFpgaImageAsync(array $args = []) (supported in versions 2016-11-15)
* @method \Aws\Result createCapacityReservation(array $args = []) (supported in versions 2016-11-15)
* @method \GuzzleHttp\Promise\Promise createCapacityReservationAsync(array $args = []) (supported in versions 2016-11-15)
* @method \Aws\Result createCapacityReservationBySplitting(array $args = []) (supported in versions 2016-11-15)
* @method \GuzzleHttp\Promise\Promise createCapacityReservationBySplittingAsync(array $args = []) (supported in versions 2016-11-15)
* @method \Aws\Result createCapacityReservationFleet(array $args = []) (supported in versions 2016-11-15)
* @method \GuzzleHttp\Promise\Promise createCapacityReservationFleetAsync(array $args = []) (supported in versions 2016-11-15)
* @method \Aws\Result createCarrierGateway(array $args = []) (supported in versions 2016-11-15)
@ -1184,6 +1186,8 @@ use Aws\PresignUrlMiddleware;
* @method \GuzzleHttp\Promise\Promise modifyVpnTunnelOptionsAsync(array $args = []) (supported in versions 2016-11-15)
* @method \Aws\Result moveByoipCidrToIpam(array $args = []) (supported in versions 2016-11-15)
* @method \GuzzleHttp\Promise\Promise moveByoipCidrToIpamAsync(array $args = []) (supported in versions 2016-11-15)
* @method \Aws\Result moveCapacityReservationInstances(array $args = []) (supported in versions 2016-11-15)
* @method \GuzzleHttp\Promise\Promise moveCapacityReservationInstancesAsync(array $args = []) (supported in versions 2016-11-15)
* @method \Aws\Result provisionByoipCidr(array $args = []) (supported in versions 2016-11-15)
* @method \GuzzleHttp\Promise\Promise provisionByoipCidrAsync(array $args = []) (supported in versions 2016-11-15)
* @method \Aws\Result provisionIpamByoasn(array $args = []) (supported in versions 2016-11-15)

View file

@ -20,6 +20,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise createPullThroughCacheRuleAsync(array $args = [])
* @method \Aws\Result createRepository(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRepositoryAsync(array $args = [])
* @method \Aws\Result createRepositoryCreationTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRepositoryCreationTemplateAsync(array $args = [])
* @method \Aws\Result deleteLifecyclePolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteLifecyclePolicyAsync(array $args = [])
* @method \Aws\Result deletePullThroughCacheRule(array $args = [])
@ -28,6 +30,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise deleteRegistryPolicyAsync(array $args = [])
* @method \Aws\Result deleteRepository(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRepositoryAsync(array $args = [])
* @method \Aws\Result deleteRepositoryCreationTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRepositoryCreationTemplateAsync(array $args = [])
* @method \Aws\Result deleteRepositoryPolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRepositoryPolicyAsync(array $args = [])
* @method \Aws\Result describeImageReplicationStatus(array $args = [])
@ -42,6 +46,10 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise describeRegistryAsync(array $args = [])
* @method \Aws\Result describeRepositories(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeRepositoriesAsync(array $args = [])
* @method \Aws\Result describeRepositoryCreationTemplates(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeRepositoryCreationTemplatesAsync(array $args = [])
* @method \Aws\Result getAccountSetting(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAccountSettingAsync(array $args = [])
* @method \Aws\Result getAuthorizationToken(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAuthorizationTokenAsync(array $args = [])
* @method \Aws\Result getDownloadUrlForLayer(array $args = [])
@ -62,6 +70,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listImagesAsync(array $args = [])
* @method \Aws\Result listTagsForResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
* @method \Aws\Result putAccountSetting(array $args = [])
* @method \GuzzleHttp\Promise\Promise putAccountSettingAsync(array $args = [])
* @method \Aws\Result putImage(array $args = [])
* @method \GuzzleHttp\Promise\Promise putImageAsync(array $args = [])
* @method \Aws\Result putImageScanningConfiguration(array $args = [])
@ -88,6 +98,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
* @method \Aws\Result updatePullThroughCacheRule(array $args = [])
* @method \GuzzleHttp\Promise\Promise updatePullThroughCacheRuleAsync(array $args = [])
* @method \Aws\Result updateRepositoryCreationTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRepositoryCreationTemplateAsync(array $args = [])
* @method \Aws\Result uploadLayerPart(array $args = [])
* @method \GuzzleHttp\Promise\Promise uploadLayerPartAsync(array $args = [])
* @method \Aws\Result validatePullThroughCacheRule(array $args = [])

View file

@ -27,6 +27,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise deleteLoadBalancerAsync(array $args = [])
* @method \Aws\Result deleteRule(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRuleAsync(array $args = [])
* @method \Aws\Result deleteSharedTrustStoreAssociation(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteSharedTrustStoreAssociationAsync(array $args = [])
* @method \Aws\Result deleteTargetGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteTargetGroupAsync(array $args = [])
* @method \Aws\Result deleteTrustStore(array $args = [])
@ -61,6 +63,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise describeTrustStoreRevocationsAsync(array $args = [])
* @method \Aws\Result describeTrustStores(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeTrustStoresAsync(array $args = [])
* @method \Aws\Result getResourcePolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise getResourcePolicyAsync(array $args = [])
* @method \Aws\Result getTrustStoreCaCertificatesBundle(array $args = [])
* @method \GuzzleHttp\Promise\Promise getTrustStoreCaCertificatesBundleAsync(array $args = [])
* @method \Aws\Result getTrustStoreRevocationContent(array $args = [])

View file

@ -18,6 +18,8 @@ use GuzzleHttp\Promise\Promise;
*/
class EndpointV2Middleware
{
const ACCOUNT_ID_PARAM = 'AccountId';
const ACCOUNT_ID_ENDPOINT_MODE_PARAM = 'AccountIdEndpointMode';
private static $validAuthSchemes = [
'sigv4' => 'v4',
'sigv4a' => 'v4a',
@ -38,23 +40,28 @@ class EndpointV2Middleware
/** @var array */
private $clientArgs;
/** @var Closure */
private $credentialProvider;
/**
* Create a middleware wrapper function
*
* @param EndpointProviderV2 $endpointProvider
* @param Service $api
* @param array $args
* @param callable $credentialProvider
*
* @return Closure
*/
public static function wrap(
EndpointProviderV2 $endpointProvider,
Service $api,
array $args
): Closure
array $args,
callable $credentialProvider
) : Closure
{
return function (callable $handler) use ($endpointProvider, $api, $args) {
return new self($handler, $endpointProvider, $api, $args);
return function (callable $handler) use ($endpointProvider, $api, $args, $credentialProvider) {
return new self($handler, $endpointProvider, $api, $args, $credentialProvider);
};
}
@ -68,13 +75,15 @@ class EndpointV2Middleware
callable $nextHandler,
EndpointProviderV2 $endpointProvider,
Service $api,
array $args
array $args,
callable $credentialProvider = null
)
{
$this->nextHandler = $nextHandler;
$this->endpointProvider = $endpointProvider;
$this->api = $api;
$this->clientArgs = $args;
$this->credentialProvider = $credentialProvider;
}
/**
@ -87,7 +96,6 @@ class EndpointV2Middleware
$nextHandler = $this->nextHandler;
$operation = $this->api->getOperation($command->getName());
$commandArgs = $command->toArray();
$providerArgs = $this->resolveArgs($commandArgs, $operation);
$endpoint = $this->endpointProvider->resolveEndpoint($providerArgs);
@ -113,6 +121,12 @@ class EndpointV2Middleware
private function resolveArgs(array $commandArgs, Operation $operation): array
{
$rulesetParams = $this->endpointProvider->getRuleset()->getParameters();
if (isset($rulesetParams[self::ACCOUNT_ID_PARAM])
&& isset($rulesetParams[self::ACCOUNT_ID_ENDPOINT_MODE_PARAM])) {
$this->clientArgs[self::ACCOUNT_ID_PARAM] = $this->resolveAccountId();
}
$endpointCommandArgs = $this->filterEndpointCommandArgs(
$rulesetParams,
$commandArgs
@ -320,6 +334,31 @@ class EndpointV2Middleware
}
return true;
}
return false;
}
/**
* This method tries to resolve an `AccountId` parameter from a resolved identity.
* We will just perform this operation if the parameter `AccountId` is part of the ruleset parameters and
* `AccountIdEndpointMode` is not disabled, otherwise, we will ignore it.
*
* @return null|string
*/
private function resolveAccountId(): ?string
{
if (isset($this->clientArgs[self::ACCOUNT_ID_ENDPOINT_MODE_PARAM])
&& $this->clientArgs[self::ACCOUNT_ID_ENDPOINT_MODE_PARAM] === 'disabled') {
return null;
}
if (is_null($this->credentialProvider)) {
return null;
}
$identityProviderFn = $this->credentialProvider;
$identity = $identityProviderFn()->wait();
return $identity->getAccountId();
}
}

View file

@ -35,6 +35,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise batchGetTriggersAsync(array $args = [])
* @method \Aws\Result batchGetWorkflows(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchGetWorkflowsAsync(array $args = [])
* @method \Aws\Result batchPutDataQualityStatisticAnnotation(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchPutDataQualityStatisticAnnotationAsync(array $args = [])
* @method \Aws\Result batchStopJobRun(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchStopJobRunAsync(array $args = [])
* @method \Aws\Result batchUpdatePartition(array $args = [])
@ -183,6 +185,10 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise getCustomEntityTypeAsync(array $args = [])
* @method \Aws\Result getDataCatalogEncryptionSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDataCatalogEncryptionSettingsAsync(array $args = [])
* @method \Aws\Result getDataQualityModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDataQualityModelAsync(array $args = [])
* @method \Aws\Result getDataQualityModelResult(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDataQualityModelResultAsync(array $args = [])
* @method \Aws\Result getDataQualityResult(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDataQualityResultAsync(array $args = [])
* @method \Aws\Result getDataQualityRuleRecommendationRun(array $args = [])
@ -307,6 +313,10 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listDataQualityRulesetEvaluationRunsAsync(array $args = [])
* @method \Aws\Result listDataQualityRulesets(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDataQualityRulesetsAsync(array $args = [])
* @method \Aws\Result listDataQualityStatisticAnnotations(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDataQualityStatisticAnnotationsAsync(array $args = [])
* @method \Aws\Result listDataQualityStatistics(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDataQualityStatisticsAsync(array $args = [])
* @method \Aws\Result listDevEndpoints(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDevEndpointsAsync(array $args = [])
* @method \Aws\Result listJobs(array $args = [])
@ -333,6 +343,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listWorkflowsAsync(array $args = [])
* @method \Aws\Result putDataCatalogEncryptionSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise putDataCatalogEncryptionSettingsAsync(array $args = [])
* @method \Aws\Result putDataQualityProfileAnnotation(array $args = [])
* @method \GuzzleHttp\Promise\Promise putDataQualityProfileAnnotationAsync(array $args = [])
* @method \Aws\Result putResourcePolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise putResourcePolicyAsync(array $args = [])
* @method \Aws\Result putSchemaVersionMetadata(array $args = [])

View file

@ -72,5 +72,4 @@ class InputValidationMiddleware
}
return $nextHandler($cmd);
}
}

View file

@ -7,5 +7,7 @@ use Aws\AwsClient;
* This client is used to interact with the **Amazon Kinesis Video WebRTC Storage** service.
* @method \Aws\Result joinStorageSession(array $args = [])
* @method \GuzzleHttp\Promise\Promise joinStorageSessionAsync(array $args = [])
* @method \Aws\Result joinStorageSessionAsViewer(array $args = [])
* @method \GuzzleHttp\Promise\Promise joinStorageSessionAsViewerAsync(array $args = [])
*/
class KinesisVideoWebRTCStorageClient extends AwsClient {}

View file

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

View file

@ -1,27 +0,0 @@
<?php
namespace Aws\Mobile;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Mobile** service.
* @method \Aws\Result createProject(array $args = [])
* @method \GuzzleHttp\Promise\Promise createProjectAsync(array $args = [])
* @method \Aws\Result deleteProject(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteProjectAsync(array $args = [])
* @method \Aws\Result describeBundle(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBundleAsync(array $args = [])
* @method \Aws\Result describeProject(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeProjectAsync(array $args = [])
* @method \Aws\Result exportBundle(array $args = [])
* @method \GuzzleHttp\Promise\Promise exportBundleAsync(array $args = [])
* @method \Aws\Result exportProject(array $args = [])
* @method \GuzzleHttp\Promise\Promise exportProjectAsync(array $args = [])
* @method \Aws\Result listBundles(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBundlesAsync(array $args = [])
* @method \Aws\Result listProjects(array $args = [])
* @method \GuzzleHttp\Promise\Promise listProjectsAsync(array $args = [])
* @method \Aws\Result updateProject(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateProjectAsync(array $args = [])
*/
class MobileClient extends AwsClient {}

View file

@ -5,6 +5,8 @@ use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Resilience Hub** service.
* @method \Aws\Result acceptResourceGroupingRecommendations(array $args = [])
* @method \GuzzleHttp\Promise\Promise acceptResourceGroupingRecommendationsAsync(array $args = [])
* @method \Aws\Result addDraftAppVersionResourceMappings(array $args = [])
* @method \GuzzleHttp\Promise\Promise addDraftAppVersionResourceMappingsAsync(array $args = [])
* @method \Aws\Result batchUpdateRecommendationStatus(array $args = [])
@ -51,6 +53,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise describeDraftAppVersionResourcesImportStatusAsync(array $args = [])
* @method \Aws\Result describeResiliencyPolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeResiliencyPolicyAsync(array $args = [])
* @method \Aws\Result describeResourceGroupingRecommendationTask(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeResourceGroupingRecommendationTaskAsync(array $args = [])
* @method \Aws\Result importResourcesToDraftAppVersion(array $args = [])
* @method \GuzzleHttp\Promise\Promise importResourcesToDraftAppVersionAsync(array $args = [])
* @method \Aws\Result listAlarmRecommendations(array $args = [])
@ -81,6 +85,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listRecommendationTemplatesAsync(array $args = [])
* @method \Aws\Result listResiliencyPolicies(array $args = [])
* @method \GuzzleHttp\Promise\Promise listResiliencyPoliciesAsync(array $args = [])
* @method \Aws\Result listResourceGroupingRecommendations(array $args = [])
* @method \GuzzleHttp\Promise\Promise listResourceGroupingRecommendationsAsync(array $args = [])
* @method \Aws\Result listSopRecommendations(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSopRecommendationsAsync(array $args = [])
* @method \Aws\Result listSuggestedResiliencyPolicies(array $args = [])
@ -95,12 +101,16 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise publishAppVersionAsync(array $args = [])
* @method \Aws\Result putDraftAppVersionTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise putDraftAppVersionTemplateAsync(array $args = [])
* @method \Aws\Result rejectResourceGroupingRecommendations(array $args = [])
* @method \GuzzleHttp\Promise\Promise rejectResourceGroupingRecommendationsAsync(array $args = [])
* @method \Aws\Result removeDraftAppVersionResourceMappings(array $args = [])
* @method \GuzzleHttp\Promise\Promise removeDraftAppVersionResourceMappingsAsync(array $args = [])
* @method \Aws\Result resolveAppVersionResources(array $args = [])
* @method \GuzzleHttp\Promise\Promise resolveAppVersionResourcesAsync(array $args = [])
* @method \Aws\Result startAppAssessment(array $args = [])
* @method \GuzzleHttp\Promise\Promise startAppAssessmentAsync(array $args = [])
* @method \Aws\Result startResourceGroupingRecommendationTask(array $args = [])
* @method \GuzzleHttp\Promise\Promise startResourceGroupingRecommendationTaskAsync(array $args = [])
* @method \Aws\Result tagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
* @method \Aws\Result untagResource(array $args = [])

View file

@ -0,0 +1,56 @@
<?php
namespace Aws\S3;
use Aws\CommandInterface;
use Aws\ResultInterface;
use Psr\Http\Message\RequestInterface;
/**
* Logs a warning when the `expires` header
* fails to be parsed.
*
* @internal
*/
class ExpiresParsingMiddleware
{
/** @var callable */
private $nextHandler;
/**
* Create a middleware wrapper function.
*
* @return callable
*/
public static function wrap()
{
return function (callable $handler) {
return new self($handler);
};
}
/**
* @param callable $nextHandler Next handler to invoke.
*/
public function __construct(callable $nextHandler)
{
$this->nextHandler = $nextHandler;
}
public function __invoke(CommandInterface $command, RequestInterface $request = null)
{
$next = $this->nextHandler;
return $next($command, $request)->then(
function (ResultInterface $result) {
if (empty($result['Expires']) && !empty($result['ExpiresString'])) {
trigger_error(
"Failed to parse the `expires` header as a timestamp due to "
. " an invalid timestamp format.\nPlease refer to `ExpiresString` "
. "for the unparsed string format of this header.\n"
, E_USER_WARNING
);
}
return $result;
}
);
}
}

View file

@ -0,0 +1,42 @@
<?php
namespace Aws\S3\Parser;
use Aws\CommandInterface;
use Aws\ResultInterface;
use Psr\Http\Message\ResponseInterface;
/**
* A custom mutator for a GetBucketLocation request, which
* extract the bucket location value and injects it into the
* result as the `LocationConstraint` field.
*
* @internal
*/
final class GetBucketLocationResultMutator implements S3ResultMutator
{
/**
* @inheritDoc
*/
public function __invoke(
ResultInterface $result,
CommandInterface $command,
ResponseInterface $response
): ResultInterface
{
if ($command->getName() !== 'GetBucketLocation') {
return $result;
}
static $location = 'us-east-1';
static $pattern = '/>(.+?)<\/LocationConstraint>/';
if (preg_match($pattern, $response->getBody(), $matches)) {
$location = $matches[1] === 'EU' ? 'eu-west-1' : $matches[1];
}
$result['LocationConstraint'] = $location;
$response->getBody()->rewind();
return $result;
}
}

View file

@ -0,0 +1,275 @@
<?php
namespace Aws\S3\Parser;
use Aws\Api\ErrorParser\XmlErrorParser;
use Aws\Api\Parser\AbstractParser;
use Aws\Api\Parser\Exception\ParserException;
use Aws\Api\Service;
use Aws\Api\StructureShape;
use Aws\CommandInterface;
use Aws\Exception\AwsException;
use Aws\ResultInterface;
use GuzzleHttp\Psr7\Utils;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
/**
* Custom S3 parser on top of the S3 protocol parser
* for handling specific S3 parsing scenarios.
*
* @internal
*/
final class S3Parser extends AbstractParser
{
/** @var AbstractParser */
private $protocolParser;
/** @var XmlErrorParser */
private $errorParser;
/** @var string */
private $exceptionClass;
/** @var array */
private $s3ResultMutators;
/**
* @param AbstractParser $protocolParser
* @param XmlErrorParser $errorParser
* @param Service $api
* @param string $exceptionClass
*/
public function __construct(
AbstractParser $protocolParser,
XmlErrorParser $errorParser,
Service $api,
string $exceptionClass = AwsException::class
)
{
parent::__construct($api);
$this->protocolParser = $protocolParser;
$this->errorParser = $errorParser;
$this->exceptionClass = $exceptionClass;
$this->s3ResultMutators = [];
}
/**
* Parses a S3 response.
*
* @param CommandInterface $command The command that originated the request.
* @param ResponseInterface $response The response received from the service.
*
* @return ResultInterface|null
*/
public function __invoke(
CommandInterface $command,
ResponseInterface $response
):? ResultInterface
{
// Check first if the response is an error
$this->parse200Error($command, $response);
try {
$parseFn = $this->protocolParser;
$result = $parseFn($command, $response);
} catch (ParserException $e) {
// Parsing errors will be considered retryable.
throw new $this->exceptionClass(
"Error parsing response for {$command->getName()}:"
. " AWS parsing error: {$e->getMessage()}",
$command,
['connection_error' => true, 'exception' => $e],
$e
);
}
return $this->executeS3ResultMutators($result, $command, $response);
}
/**
* Tries to parse a 200 response as an error from S3.
* If the parsed result contains a code and message then that means an error
* was found, and hence an exception is thrown with that error.
*
* @param CommandInterface $command
* @param ResponseInterface $response
*
* @return void
*/
private function parse200Error(
CommandInterface $command,
ResponseInterface $response
): void
{
// This error parsing should be just for 200 error responses
// and operations where its output shape does not have a streaming
// member.
if (200 !== $response->getStatusCode()
|| !$this->shouldBeConsidered200Error($command->getName())) {
return;
}
// To guarantee we try the error parsing just for an Error xml response.
if (!$this->isFirstRootElementError($response->getBody())) {
return;
}
try {
$errorParserFn = $this->errorParser;
$parsedError = $errorParserFn($response, $command);
} catch (ParserException $e) {
// Parsing errors will be considered retryable.
$parsedError = [
'code' => 'ConnectionError',
'message' => "An error connecting to the service occurred"
. " while performing the " . $command->getName()
. " operation."
];
}
if (isset($parsedError['code']) && isset($parsedError['message'])) {
throw new $this->exceptionClass(
$parsedError['message'],
$command,
[
'connection_error' => true,
'code' => $parsedError['code'],
'message' => $parsedError['message']
]
);
}
}
/**
* Checks if a specific operation should be considered
* a s3 200 error. Operations where any of its output members
* has a streaming or httpPayload trait should be not considered.
*
* @param $commandName
*
* @return bool
*/
private function shouldBeConsidered200Error($commandName): bool
{
$operation = $this->api->getOperation($commandName);
$output = $operation->getOutput();
foreach ($output->getMembers() as $_ => $memberProps) {
if (!empty($memberProps['eventstream']) || !empty($memberProps['streaming'])) {
return false;
}
}
return true;
}
/**
* Checks if the root element of the response body is "Error", which is
* when we should try to parse an error from a 200 response from s3.
* It is recommended to make sure the stream given is seekable, otherwise
* the rewind call will cause a user warning.
*
* @param StreamInterface $responseBody
*
* @return bool
*/
private function isFirstRootElementError(StreamInterface $responseBody): bool
{
static $pattern = '/<\?xml version="1\.0" encoding="UTF-8"\?>\s*<Error>/';
// To avoid performance overhead in large streams
$reducedBodyContent = $responseBody->read(64);
$foundErrorElement = preg_match($pattern, $reducedBodyContent);
// A rewind is needed because the stream is partially or entirely consumed
// in the previous read operation.
$responseBody->rewind();
return $foundErrorElement;
}
/**
* Execute mutator implementations over a result.
* Mutators are logics that modifies a result.
*
* @param ResultInterface $result
* @param CommandInterface $command
* @param ResponseInterface $response
*
* @return ResultInterface
*/
private function executeS3ResultMutators(
ResultInterface $result,
CommandInterface $command,
ResponseInterface $response
): ResultInterface
{
foreach ($this->s3ResultMutators as $mutator) {
$result = $mutator($result, $command, $response);
}
return $result;
}
/**
* Adds a mutator into the list of mutators.
*
* @param string $mutatorName
* @param S3ResultMutator $s3ResultMutator
* @return void
*/
public function addS3ResultMutator(
string $mutatorName,
S3ResultMutator $s3ResultMutator
): void
{
if (isset($this->s3ResultMutators[$mutatorName])) {
trigger_error(
"The S3 Result Mutator {$mutatorName} already exists!",
E_USER_WARNING
);
return;
}
$this->s3ResultMutators[$mutatorName] = $s3ResultMutator;
}
/**
* Removes a mutator from the mutator list.
*
* @param string $mutatorName
* @return void
*/
public function removeS3ResultMutator(string $mutatorName): void
{
if (!isset($this->s3ResultMutators[$mutatorName])) {
trigger_error(
"The S3 Result Mutator {$mutatorName} does not exist!",
E_USER_WARNING
);
return;
}
unset($this->s3ResultMutators[$mutatorName]);
}
/**
* Returns the list of result mutators available.
*
* @return array
*/
public function getS3ResultMutators(): array
{
return $this->s3ResultMutators;
}
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member,
$response
)
{
return $this->protocolParser->parseMemberFromStream(
$stream,
$member,
$response
);
}
}

View file

@ -0,0 +1,36 @@
<?php
namespace Aws\S3\Parser;
use Aws\CommandInterface;
use Aws\ResultInterface;
use Psr\Http\Message\ResponseInterface;
/**
* Interface for S3 result mutator implementations.
* A S3 result mutator is meant for modifying a request
* result before returning it to the user.
* One example is if a custom field is needed to be injected
* into the result or if an existent field needs to be modified.
* Since the command and the response itself are parameters when
* invoking the mutators then, this facilitates to make better
* decisions that may involve validations using the command parameters
* or response fields, etc.
*
* @internal
*/
interface S3ResultMutator
{
/**
* @param ResultInterface $result the result object to be modified.
* @param CommandInterface $command the command that originated the request.
* @param ResponseInterface $response the response resulting from the request.
*
* @return ResultInterface
*/
public function __invoke(
ResultInterface $result,
CommandInterface $command,
ResponseInterface $response
): ResultInterface;
}

View file

@ -0,0 +1,163 @@
<?php
namespace Aws\S3\Parser;
use Aws\Api\Service;
use Aws\CommandInterface;
use Aws\ResultInterface;
use Aws\S3\CalculatesChecksumTrait;
use Aws\S3\Exception\S3Exception;
use Psr\Http\Message\ResponseInterface;
/**
* A custom s3 result mutator that validates the response checksums.
*
* @internal
*/
final class ValidateResponseChecksumResultMutator implements S3ResultMutator
{
use CalculatesChecksumTrait;
/** @var Service $api */
private $api;
/**
* @param Service $api
*/
public function __construct(Service $api)
{
$this->api = $api;
}
/**
* @param ResultInterface $result
* @param CommandInterface|null $command
* @param ResponseInterface|null $response
*
* @return ResultInterface
*/
public function __invoke(
ResultInterface $result,
CommandInterface $command = null,
ResponseInterface $response = null
): ResultInterface
{
$operation = $this->api->getOperation($command->getName());
// Skip this middleware if the operation doesn't have an httpChecksum
$checksumInfo = empty($operation['httpChecksum'])
? null
: $operation['httpChecksum'];;
if (null === $checksumInfo) {
return $result;
}
// Skip this middleware if the operation doesn't send back a checksum,
// or the user doesn't opt in
$checksumModeEnabledMember = $checksumInfo['requestValidationModeMember'] ?? "";
$checksumModeEnabled = $command[$checksumModeEnabledMember] ?? "";
$responseAlgorithms = $checksumInfo['responseAlgorithms'] ?? [];
if (empty($responseAlgorithms)
|| strtolower($checksumModeEnabled) !== "enabled") {
return $result;
}
if (extension_loaded('awscrt')) {
$checksumPriority = ['CRC32C', 'CRC32', 'SHA1', 'SHA256'];
} else {
$checksumPriority = ['CRC32', 'SHA1', 'SHA256'];
}
$checksumsToCheck = array_intersect(
$responseAlgorithms,
$checksumPriority
);
$checksumValidationInfo = $this->validateChecksum(
$checksumsToCheck,
$response
);
if ($checksumValidationInfo['status'] == "SUCCEEDED") {
$result['ChecksumValidated'] = $checksumValidationInfo['checksum'];
} elseif ($checksumValidationInfo['status'] == "FAILED") {
// Ignore failed validations on GetObject if it's a multipart get
// which returned a full multipart object
if ($command->getName() === "GetObject"
&& !empty($checksumValidationInfo['checksumHeaderValue'])
) {
$headerValue = $checksumValidationInfo['checksumHeaderValue'];
$lastDashPos = strrpos($headerValue, '-');
$endOfChecksum = substr($headerValue, $lastDashPos + 1);
if (is_numeric($endOfChecksum)
&& intval($endOfChecksum) > 1
&& intval($endOfChecksum) < 10000) {
return $result;
}
}
throw new S3Exception(
"Calculated response checksum did not match the expected value",
$command
);
}
return $result;
}
/**
* @param $checksumPriority
* @param ResponseInterface $response
*
* @return array
*/
private function validateChecksum(
$checksumPriority,
ResponseInterface $response
): array
{
$checksumToValidate = $this->chooseChecksumHeaderToValidate(
$checksumPriority,
$response
);
$validationStatus = "SKIPPED";
$checksumHeaderValue = null;
if (!empty($checksumToValidate)) {
$checksumHeaderValue = $response->getHeader(
'x-amz-checksum-' . $checksumToValidate
);
if (isset($checksumHeaderValue)) {
$checksumHeaderValue = $checksumHeaderValue[0];
$calculatedChecksumValue = $this->getEncodedValue(
$checksumToValidate,
$response->getBody()
);
$validationStatus = $checksumHeaderValue == $calculatedChecksumValue
? "SUCCEEDED"
: "FAILED";
}
}
return [
"status" => $validationStatus,
"checksum" => $checksumToValidate,
"checksumHeaderValue" => $checksumHeaderValue,
];
}
/**
* @param $checksumPriority
* @param ResponseInterface $response
*
* @return string
*/
private function chooseChecksumHeaderToValidate(
$checksumPriority,
ResponseInterface $response
):? string
{
foreach ($checksumPriority as $checksum) {
$checksumHeader = 'x-amz-checksum-' . $checksum;
if ($response->hasHeader($checksumHeader)) {
return $checksum;
}
}
return null;
}
}

View file

@ -19,6 +19,9 @@ use Aws\ResultInterface;
use Aws\Retry\QuotaManager;
use Aws\RetryMiddleware;
use Aws\RetryMiddlewareV2;
use Aws\S3\Parser\GetBucketLocationResultMutator;
use Aws\S3\Parser\S3Parser;
use Aws\S3\Parser\ValidateResponseChecksumResultMutator;
use Aws\S3\RegionalEndpoint\ConfigurationProvider;
use Aws\S3\UseArnRegion\Configuration;
use Aws\S3\UseArnRegion\ConfigurationInterface;
@ -437,6 +440,7 @@ class S3Client extends AwsClient implements S3ClientInterface
InputValidationMiddleware::wrap($this->getApi(), self::$mandatoryAttributes),
'input_validation_middleware'
);
$stack->appendSign(ExpiresParsingMiddleware::wrap(), 's3.expires_parsing');
$stack->appendSign(PutObjectUrlMiddleware::wrap(), 's3.put_object_url');
$stack->appendSign(PermanentRedirectMiddleware::wrap(), 's3.permanent_redirect');
$stack->appendInit(Middleware::sourceFile($this->getApi()), 's3.source_file');
@ -444,8 +448,8 @@ class S3Client extends AwsClient implements S3ClientInterface
$stack->appendInit($this->getLocationConstraintMiddleware(), 's3.location');
$stack->appendInit($this->getEncodingTypeMiddleware(), 's3.auto_encode');
$stack->appendInit($this->getHeadObjectMiddleware(), 's3.head_object');
$this->processModel($this->isUseEndpointV2());
if ($this->isUseEndpointV2()) {
$this->processEndpointV2Model();
$stack->after('builder',
's3.check_empty_path_with_query',
$this->getEmptyPathWithQuery());
@ -763,28 +767,51 @@ class S3Client extends AwsClient implements S3ClientInterface
}
/**
* Modifies API definition to remove `Bucket` from request URIs.
* If EndpointProviderV2 is used, removes `Bucket` from request URIs.
* This is now handled by the endpoint ruleset.
*
* Additionally adds a synthetic shape `ExpiresString` and modifies
* `Expires` type to ensure it remains set to `timestamp`.
*
* @param array $args
* @return void
*
* @internal
*/
private function processEndpointV2Model()
private function processModel(bool $isUseEndpointV2): void
{
$definition = $this->getApi()->getDefinition();
foreach($definition['operations'] as &$operation) {
if (isset($operation['http']['requestUri'])) {
$requestUri = $operation['http']['requestUri'];
if ($requestUri === "/{Bucket}") {
$requestUri = str_replace('/{Bucket}', '/', $requestUri);
} else {
$requestUri = str_replace('/{Bucket}', '', $requestUri);
if ($isUseEndpointV2) {
foreach($definition['operations'] as &$operation) {
if (isset($operation['http']['requestUri'])) {
$requestUri = $operation['http']['requestUri'];
if ($requestUri === "/{Bucket}") {
$requestUri = str_replace('/{Bucket}', '/', $requestUri);
} else {
$requestUri = str_replace('/{Bucket}', '', $requestUri);
}
$operation['http']['requestUri'] = $requestUri;
}
$operation['http']['requestUri'] = $requestUri;
}
}
foreach ($definition['shapes'] as $key => &$value) {
$suffix = 'Output';
if (substr($key, -strlen($suffix)) === $suffix) {
if (isset($value['members']['Expires'])) {
$value['members']['Expires']['deprecated'] = true;
$value['members']['ExpiresString'] = [
'shape' => 'ExpiresString',
'location' => 'header',
'locationName' => 'Expires'
];
}
}
}
$definition['shapes']['ExpiresString']['type'] = 'string';
$definition['shapes']['Expires']['type'] = 'timestamp';
$this->getApi()->setDefinition($definition);
}
@ -923,19 +950,21 @@ class S3Client extends AwsClient implements S3ClientInterface
public static function _applyApiProvider($value, array &$args, HandlerList $list)
{
ClientResolver::_apply_api_provider($value, $args);
$args['parser'] = new GetBucketLocationParser(
new ValidateResponseChecksumParser(
new AmbiguousSuccessParser(
new RetryableMalformedResponseParser(
$args['parser'],
$args['exception_class']
),
$args['error_parser'],
$args['exception_class']
),
$args['api']
)
$s3Parser = new S3Parser(
$args['parser'],
$args['error_parser'],
$args['api'],
$args['exception_class']
);
$s3Parser->addS3ResultMutator(
'get-bucket-location',
new GetBucketLocationResultMutator()
);
$s3Parser->addS3ResultMutator(
'validate-response-checksum',
new ValidateResponseChecksumResultMutator($args['api'])
);
$args['parser'] = $s3Parser;
}
/**
@ -1035,6 +1064,29 @@ class S3Client extends AwsClient implements S3ClientInterface
'shapes' => ['PutObjectRequest', 'UploadPartRequest']
];
// Add `ExpiresString` shape to output structures which contain `Expires`
// Deprecate existing `Expires` shapes in output structures
// Add/Update documentation for both `ExpiresString` and `Expires`
// Ensure `Expires` type remains timestamp
foreach ($api['shapes'] as $key => &$value) {
$suffix = 'Output';
if (substr($key, -strlen($suffix)) === $suffix) {
if (isset($value['members']['Expires'])) {
$value['members']['Expires']['deprecated'] = true;
$value['members']['ExpiresString'] = [
'shape' => 'ExpiresString',
'location' => 'header',
'locationName' => 'Expires'
];
$docs['shapes']['Expires']['refs'][$key . '$Expires']
.= '<p>This output shape has been deprecated. Please refer to <code>ExpiresString</code> instead.</p>.';
}
}
}
$api['shapes']['ExpiresString']['type'] = 'string';
$docs['shapes']['ExpiresString']['base'] = 'The unparsed string value of the <code>Expires</code> output member.';
$api['shapes']['Expires']['type'] = 'timestamp';
return [
new Service($api, ApiProvider::defaultProvider()),
new DocModel($docs)

View file

@ -321,7 +321,8 @@ class S3MultiRegionClient extends BaseClient implements S3ClientInterface
);
return $client->createPresignedRequest(
$client->getCommand($command->getName(), $command->toArray()),
$expires
$expires,
$options
);
}

View file

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

View file

@ -0,0 +1,33 @@
<?php
namespace Aws\SSMQuickSetup;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Systems Manager QuickSetup** service.
* @method \Aws\Result createConfigurationManager(array $args = [])
* @method \GuzzleHttp\Promise\Promise createConfigurationManagerAsync(array $args = [])
* @method \Aws\Result deleteConfigurationManager(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteConfigurationManagerAsync(array $args = [])
* @method \Aws\Result getConfigurationManager(array $args = [])
* @method \GuzzleHttp\Promise\Promise getConfigurationManagerAsync(array $args = [])
* @method \Aws\Result getServiceSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise getServiceSettingsAsync(array $args = [])
* @method \Aws\Result listConfigurationManagers(array $args = [])
* @method \GuzzleHttp\Promise\Promise listConfigurationManagersAsync(array $args = [])
* @method \Aws\Result listQuickSetupTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listQuickSetupTypesAsync(array $args = [])
* @method \Aws\Result listTagsForResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(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 updateConfigurationDefinition(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateConfigurationDefinitionAsync(array $args = [])
* @method \Aws\Result updateConfigurationManager(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateConfigurationManagerAsync(array $args = [])
* @method \Aws\Result updateServiceSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateServiceSettingsAsync(array $args = [])
*/
class SSMQuickSetupClient extends AwsClient {}

View file

@ -496,8 +496,6 @@ namespace Aws;
* @method \Aws\MultiRegionClient createMultiRegionMigrationHubRefactorSpaces(array $args = [])
* @method \Aws\MigrationHubStrategyRecommendations\MigrationHubStrategyRecommendationsClient createMigrationHubStrategyRecommendations(array $args = [])
* @method \Aws\MultiRegionClient createMultiRegionMigrationHubStrategyRecommendations(array $args = [])
* @method \Aws\Mobile\MobileClient createMobile(array $args = [])
* @method \Aws\MultiRegionClient createMultiRegionMobile(array $args = [])
* @method \Aws\Neptune\NeptuneClient createNeptune(array $args = [])
* @method \Aws\MultiRegionClient createMultiRegionNeptune(array $args = [])
* @method \Aws\NeptuneGraph\NeptuneGraphClient createNeptuneGraph(array $args = [])
@ -634,6 +632,8 @@ namespace Aws;
* @method \Aws\MultiRegionClient createMultiRegionSSMContacts(array $args = [])
* @method \Aws\SSMIncidents\SSMIncidentsClient createSSMIncidents(array $args = [])
* @method \Aws\MultiRegionClient createMultiRegionSSMIncidents(array $args = [])
* @method \Aws\SSMQuickSetup\SSMQuickSetupClient createSSMQuickSetup(array $args = [])
* @method \Aws\MultiRegionClient createMultiRegionSSMQuickSetup(array $args = [])
* @method \Aws\SSO\SSOClient createSSO(array $args = [])
* @method \Aws\MultiRegionClient createMultiRegionSSO(array $args = [])
* @method \Aws\SSOAdmin\SSOAdminClient createSSOAdmin(array $args = [])
@ -777,7 +777,7 @@ namespace Aws;
*/
class Sdk
{
const VERSION = '3.316.4';
const VERSION = '3.320.2';
/** @var array Arguments for creating clients */
private $args;

View file

@ -67,7 +67,7 @@ class S3SignatureV4 extends SignatureV4
'signature_type' => SignatureType::HTTP_REQUEST_HEADERS,
'credentials_provider' => $credentials_provider,
'signed_body_value' => $this->getPayload($request),
'region' => "*",
'region' => $this->region,
'should_normalize_uri_path' => false,
'use_double_uri_encode' => false,
'service' => $signingService,

View file

@ -518,7 +518,7 @@ class SignatureV4 implements SignatureInterface
'signed_body_value' => $this->getPayload($request),
'should_normalize_uri_path' => true,
'use_double_uri_encode' => true,
'region' => "*",
'region' => $this->region,
'service' => $signingService,
'date' => time(),
]);

View file

@ -1,6 +1,7 @@
<?php
namespace Aws\Sts;
use Aws\Arn\ArnParser;
use Aws\AwsClient;
use Aws\CacheInterface;
use Aws\Credentials\Credentials;
@ -75,15 +76,26 @@ class StsClient extends AwsClient
throw new \InvalidArgumentException('Result contains no credentials');
}
$c = $result['Credentials'];
$accountId = null;
if ($result->hasKey('AssumedRoleUser')) {
$parsedArn = ArnParser::parse($result->get('AssumedRoleUser')['Arn']);
$accountId = $parsedArn->getAccountId();
} elseif ($result->hasKey('FederatedUser')) {
$parsedArn = ArnParser::parse($result->get('FederatedUser')['Arn']);
$accountId = $parsedArn->getAccountId();
}
$credentials = $result['Credentials'];
$expiration = isset($credentials['Expiration']) && $credentials['Expiration'] instanceof \DateTimeInterface
? (int) $credentials['Expiration']->format('U')
: null;
return new Credentials(
$c['AccessKeyId'],
$c['SecretAccessKey'],
isset($c['SessionToken']) ? $c['SessionToken'] : null,
isset($c['Expiration']) && $c['Expiration'] instanceof \DateTimeInterface
? (int) $c['Expiration']->format('U')
: null
$credentials['AccessKeyId'],
$credentials['SecretAccessKey'],
isset($credentials['SessionToken']) ? $credentials['SessionToken'] : null,
$expiration,
$accountId
);
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/appsync/2017-07-25/paginators-1.json
return [ 'pagination' => [],];
return [ 'pagination' => [ 'ListApiKeys' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'apiKeys', ], 'ListDataSources' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'dataSources', ], 'ListDomainNames' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'domainNameConfigs', ], 'ListFunctions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'functions', ], 'ListGraphqlApis' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'graphqlApis', ], 'ListResolvers' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'resolvers', ], 'ListResolversByFunction' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'resolvers', ], 'ListSourceApiAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'sourceApiAssociationSummaries', ], 'ListTypes' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'types', ], 'ListTypesByAssociation' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'types', ], ],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/bedrock/2023-04-20/paginators-1.json
return [ 'pagination' => [ 'ListCustomModels' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'modelSummaries', ], 'ListEvaluationJobs' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'jobSummaries', ], 'ListGuardrails' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'guardrails', ], 'ListModelCustomizationJobs' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'modelCustomizationJobSummaries', ], 'ListProvisionedModelThroughputs' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'provisionedModelSummaries', ], ],];
return [ 'pagination' => [ 'ListCustomModels' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'modelSummaries', ], 'ListEvaluationJobs' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'jobSummaries', ], 'ListGuardrails' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'guardrails', ], 'ListModelCopyJobs' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'modelCopyJobSummaries', ], 'ListModelCustomizationJobs' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'modelCustomizationJobSummaries', ], 'ListProvisionedModelThroughputs' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'provisionedModelSummaries', ], ],];

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/cleanrooms/2022-02-17/paginators-1.json
return [ 'pagination' => [ 'ListAnalysisTemplates' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'analysisTemplateSummaries', ], 'ListCollaborationAnalysisTemplates' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationAnalysisTemplateSummaries', ], 'ListCollaborationConfiguredAudienceModelAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationConfiguredAudienceModelAssociationSummaries', ], 'ListCollaborationPrivacyBudgetTemplates' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationPrivacyBudgetTemplateSummaries', ], 'ListCollaborationPrivacyBudgets' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationPrivacyBudgetSummaries', ], 'ListCollaborations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationList', ], 'ListConfiguredAudienceModelAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'configuredAudienceModelAssociationSummaries', ], 'ListConfiguredTableAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'configuredTableAssociationSummaries', ], 'ListConfiguredTables' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'configuredTableSummaries', ], 'ListMembers' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'memberSummaries', ], 'ListMemberships' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'membershipSummaries', ], 'ListPrivacyBudgetTemplates' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'privacyBudgetTemplateSummaries', ], 'ListPrivacyBudgets' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'privacyBudgetSummaries', ], 'ListProtectedQueries' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'protectedQueries', ], 'ListSchemas' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'schemaSummaries', ], ],];
return [ 'pagination' => [ 'ListAnalysisTemplates' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'analysisTemplateSummaries', ], 'ListCollaborationAnalysisTemplates' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationAnalysisTemplateSummaries', ], 'ListCollaborationConfiguredAudienceModelAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationConfiguredAudienceModelAssociationSummaries', ], 'ListCollaborationIdNamespaceAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationIdNamespaceAssociationSummaries', ], 'ListCollaborationPrivacyBudgetTemplates' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationPrivacyBudgetTemplateSummaries', ], 'ListCollaborationPrivacyBudgets' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationPrivacyBudgetSummaries', ], 'ListCollaborations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'collaborationList', ], 'ListConfiguredAudienceModelAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'configuredAudienceModelAssociationSummaries', ], 'ListConfiguredTableAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'configuredTableAssociationSummaries', ], 'ListConfiguredTables' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'configuredTableSummaries', ], 'ListIdMappingTables' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'idMappingTableSummaries', ], 'ListIdNamespaceAssociations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'idNamespaceAssociationSummaries', ], 'ListMembers' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'memberSummaries', ], 'ListMemberships' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'membershipSummaries', ], 'ListPrivacyBudgetTemplates' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'privacyBudgetTemplateSummaries', ], 'ListPrivacyBudgets' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'privacyBudgetSummaries', ], 'ListProtectedQueries' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'protectedQueries', ], 'ListSchemas' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'schemaSummaries', ], ],];

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/cleanroomsml/2023-09-06/smoke.json
return [ 'version' => 1, 'defaultRegion' => 'us-west-2', 'testCases' => [],];

View file

@ -0,0 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/cleanroomsml/2023-09-06/waiters-2.json
return [ 'version' => 2, 'waiters' => [],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/codepipeline/2015-07-09/paginators-1.json
return [ 'pagination' => [ 'ListActionExecutions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'actionExecutionDetails', ], 'ListActionTypes' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'result_key' => 'actionTypes', ], 'ListPipelineExecutions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'pipelineExecutionSummaries', ], 'ListPipelines' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'pipelines', ], 'ListTagsForResource' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'tags', ], 'ListWebhooks' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'webhooks', ], ],];
return [ 'pagination' => [ 'ListActionExecutions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'actionExecutionDetails', ], 'ListActionTypes' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'result_key' => 'actionTypes', ], 'ListPipelineExecutions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'pipelineExecutionSummaries', ], 'ListPipelines' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'pipelines', ], 'ListRuleExecutions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'ruleExecutionDetails', ], 'ListTagsForResource' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'tags', ], 'ListWebhooks' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'webhooks', ], ],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/connect-contact-lens/2020-08-21/endpoint-rule-set-1.json
return [ 'version' => '1.0', 'parameters' => [ 'Region' => [ 'builtIn' => 'AWS::Region', 'required' => false, 'documentation' => 'The AWS region used to dispatch the request.', 'type' => 'String', ], 'UseDualStack' => [ 'builtIn' => 'AWS::UseDualStack', 'required' => true, 'default' => false, 'documentation' => 'When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.', 'type' => 'Boolean', ], 'UseFIPS' => [ 'builtIn' => 'AWS::UseFIPS', 'required' => true, 'default' => false, 'documentation' => 'When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.', 'type' => 'Boolean', ], 'Endpoint' => [ 'builtIn' => 'SDK::Endpoint', 'required' => false, 'documentation' => 'Override the endpoint used to send this request', 'type' => 'String', ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'isSet', 'argv' => [ [ 'ref' => 'Endpoint', ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], ], 'error' => 'Invalid Configuration: FIPS and custom endpoint are not supported', 'type' => 'error', ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'error' => 'Invalid Configuration: Dualstack and custom endpoint are not supported', 'type' => 'error', ], [ 'conditions' => [], 'endpoint' => [ 'url' => [ 'ref' => 'Endpoint', ], 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], [ 'conditions' => [ [ 'fn' => 'isSet', 'argv' => [ [ 'ref' => 'Region', ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'aws.partition', 'argv' => [ [ 'ref' => 'Region', ], ], 'assign' => 'PartitionResult', ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsFIPS', ], ], ], ], [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsDualStack', ], ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://contact-lens-fips.{Region}.{PartitionResult#dualStackDnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], [ 'conditions' => [], 'error' => 'FIPS and DualStack are enabled, but this partition does not support one or both', 'type' => 'error', ], ], ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsFIPS', ], ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://contact-lens-fips.{Region}.{PartitionResult#dnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], [ 'conditions' => [], 'error' => 'FIPS is enabled but this partition does not support FIPS', 'type' => 'error', ], ], ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsDualStack', ], ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://contact-lens.{Region}.{PartitionResult#dualStackDnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], [ 'conditions' => [], 'error' => 'DualStack is enabled but this partition does not support DualStack', 'type' => 'error', ], ], ], [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://contact-lens.{Region}.{PartitionResult#dnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], ], ], [ 'conditions' => [], 'error' => 'Invalid Configuration: Missing Region', 'type' => 'error', ], ],];
return [ 'version' => '1.0', 'parameters' => [ 'Region' => [ 'builtIn' => 'AWS::Region', 'required' => false, 'documentation' => 'The AWS region used to dispatch the request.', 'type' => 'String', ], 'UseDualStack' => [ 'builtIn' => 'AWS::UseDualStack', 'required' => true, 'default' => false, 'documentation' => 'When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.', 'type' => 'Boolean', ], 'UseFIPS' => [ 'builtIn' => 'AWS::UseFIPS', 'required' => true, 'default' => false, 'documentation' => 'When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.', 'type' => 'Boolean', ], 'Endpoint' => [ 'builtIn' => 'SDK::Endpoint', 'required' => false, 'documentation' => 'Override the endpoint used to send this request', 'type' => 'String', ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'isSet', 'argv' => [ [ 'ref' => 'Endpoint', ], ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], ], 'error' => 'Invalid Configuration: FIPS and custom endpoint are not supported', 'type' => 'error', ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'error' => 'Invalid Configuration: Dualstack and custom endpoint are not supported', 'type' => 'error', ], [ 'conditions' => [], 'endpoint' => [ 'url' => [ 'ref' => 'Endpoint', ], 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], [ 'conditions' => [ [ 'fn' => 'isSet', 'argv' => [ [ 'ref' => 'Region', ], ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'aws.partition', 'argv' => [ [ 'ref' => 'Region', ], ], 'assign' => 'PartitionResult', ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsFIPS', ], ], ], ], [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsDualStack', ], ], ], ], ], 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://contact-lens-fips.{Region}.{PartitionResult#dualStackDnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'error' => 'FIPS and DualStack are enabled, but this partition does not support one or both', 'type' => 'error', ], ], 'type' => 'tree', ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsFIPS', ], ], true, ], ], ], 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://contact-lens-fips.{Region}.{PartitionResult#dnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'error' => 'FIPS is enabled but this partition does not support FIPS', 'type' => 'error', ], ], 'type' => 'tree', ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsDualStack', ], ], ], ], ], 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://contact-lens.{Region}.{PartitionResult#dualStackDnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'error' => 'DualStack is enabled but this partition does not support DualStack', 'type' => 'error', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://contact-lens.{Region}.{PartitionResult#dnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'error' => 'Invalid Configuration: Missing Region', 'type' => 'error', ], ],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/controlcatalog/2018-05-10/paginators-1.json
return [ 'pagination' => [ 'ListCommonControls' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'CommonControls', ], 'ListDomains' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'Domains', ], 'ListObjectives' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'Objectives', ], ],];
return [ 'pagination' => [ 'ListCommonControls' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'CommonControls', ], 'ListControls' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'Controls', ], 'ListDomains' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'Domains', ], 'ListObjectives' => [ 'input_token' => 'NextToken', 'output_token' => 'NextToken', 'limit_key' => 'MaxResults', 'result_key' => 'Objectives', ], ],];

View file

@ -0,0 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/controlcatalog/2018-05-10/smoke.json
return [ 'version' => 1, 'defaultRegion' => 'us-west-2', 'testCases' => [],];

View file

@ -0,0 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/controlcatalog/2018-05-10/waiters-2.json
return [ 'version' => 2, 'waiters' => [],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/datazone/2018-05-10/paginators-1.json
return [ 'pagination' => [ 'ListAssetRevisions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDataSourceRunActivities' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDataSourceRuns' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDataSources' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDomains' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironmentActions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironmentBlueprintConfigurations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironmentBlueprints' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironmentProfiles' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironments' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListLineageNodeHistory' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'nodes', ], 'ListMetadataGenerationRuns' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListNotifications' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'notifications', ], 'ListProjectMemberships' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'members', ], 'ListProjects' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListSubscriptionGrants' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListSubscriptionRequests' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListSubscriptionTargets' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListSubscriptions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListTimeSeriesDataPoints' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'Search' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'SearchGroupProfiles' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'SearchListings' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'SearchTypes' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'SearchUserProfiles' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], ],];
return [ 'pagination' => [ 'ListAssetFilters' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListAssetRevisions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDataProductRevisions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDataSourceRunActivities' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDataSourceRuns' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDataSources' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListDomains' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironmentActions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironmentBlueprintConfigurations' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironmentBlueprints' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironmentProfiles' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListEnvironments' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListLineageNodeHistory' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'nodes', ], 'ListMetadataGenerationRuns' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListNotifications' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'notifications', ], 'ListProjectMemberships' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'members', ], 'ListProjects' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListSubscriptionGrants' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListSubscriptionRequests' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListSubscriptionTargets' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListSubscriptions' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'ListTimeSeriesDataPoints' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'Search' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'SearchGroupProfiles' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'SearchListings' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'SearchTypes' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], 'SearchUserProfiles' => [ 'input_token' => 'nextToken', 'output_token' => 'nextToken', 'limit_key' => 'maxResults', 'result_key' => 'items', ], ],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/ecr/2015-09-21/paginators-1.json
return [ 'pagination' => [ 'DescribeImageScanFindings' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'non_aggregate_keys' => [ 'registryId', 'repositoryName', 'imageId', 'imageScanStatus', 'imageScanFindings', ], 'output_token' => 'nextToken', 'result_key' => [ 'imageScanFindings.findings', 'imageScanFindings.enhancedFindings', ], ], 'DescribeImages' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'output_token' => 'nextToken', 'result_key' => 'imageDetails', ], 'DescribePullThroughCacheRules' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'output_token' => 'nextToken', 'result_key' => 'pullThroughCacheRules', ], 'DescribeRepositories' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'output_token' => 'nextToken', 'result_key' => 'repositories', ], 'GetLifecyclePolicyPreview' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'non_aggregate_keys' => [ 'registryId', 'repositoryName', 'lifecyclePolicyText', 'status', 'summary', ], 'output_token' => 'nextToken', 'result_key' => 'previewResults', ], 'ListImages' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'output_token' => 'nextToken', 'result_key' => 'imageIds', ], ],];
return [ 'pagination' => [ 'DescribeImageScanFindings' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'non_aggregate_keys' => [ 'registryId', 'repositoryName', 'imageId', 'imageScanStatus', 'imageScanFindings', ], 'output_token' => 'nextToken', 'result_key' => [ 'imageScanFindings.findings', 'imageScanFindings.enhancedFindings', ], ], 'DescribeImages' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'output_token' => 'nextToken', 'result_key' => 'imageDetails', ], 'DescribePullThroughCacheRules' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'output_token' => 'nextToken', 'result_key' => 'pullThroughCacheRules', ], 'DescribeRepositories' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'output_token' => 'nextToken', 'result_key' => 'repositories', ], 'DescribeRepositoryCreationTemplates' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'non_aggregate_keys' => [ 'registryId', ], 'output_token' => 'nextToken', 'result_key' => 'repositoryCreationTemplates', ], 'GetLifecyclePolicyPreview' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'non_aggregate_keys' => [ 'registryId', 'repositoryName', 'lifecyclePolicyText', 'status', 'summary', ], 'output_token' => 'nextToken', 'result_key' => 'previewResults', ], 'ListImages' => [ 'input_token' => 'nextToken', 'limit_key' => 'maxResults', 'output_token' => 'nextToken', 'result_key' => 'imageIds', ], ],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/elasticloadbalancing/2012-06-01/endpoint-rule-set-1.json
return [ 'version' => '1.0', 'parameters' => [ 'Region' => [ 'builtIn' => 'AWS::Region', 'required' => false, 'documentation' => 'The AWS region used to dispatch the request.', 'type' => 'String', ], 'UseDualStack' => [ 'builtIn' => 'AWS::UseDualStack', 'required' => true, 'default' => false, 'documentation' => 'When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.', 'type' => 'Boolean', ], 'UseFIPS' => [ 'builtIn' => 'AWS::UseFIPS', 'required' => true, 'default' => false, 'documentation' => 'When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.', 'type' => 'Boolean', ], 'Endpoint' => [ 'builtIn' => 'SDK::Endpoint', 'required' => false, 'documentation' => 'Override the endpoint used to send this request', 'type' => 'String', ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'isSet', 'argv' => [ [ 'ref' => 'Endpoint', ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], ], 'error' => 'Invalid Configuration: FIPS and custom endpoint are not supported', 'type' => 'error', ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'error' => 'Invalid Configuration: Dualstack and custom endpoint are not supported', 'type' => 'error', ], [ 'conditions' => [], 'endpoint' => [ 'url' => [ 'ref' => 'Endpoint', ], 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], [ 'conditions' => [ [ 'fn' => 'isSet', 'argv' => [ [ 'ref' => 'Region', ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'aws.partition', 'argv' => [ [ 'ref' => 'Region', ], ], 'assign' => 'PartitionResult', ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsFIPS', ], ], ], ], [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsDualStack', ], ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://elasticloadbalancing-fips.{Region}.{PartitionResult#dualStackDnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], [ 'conditions' => [], 'error' => 'FIPS and DualStack are enabled, but this partition does not support one or both', 'type' => 'error', ], ], ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsFIPS', ], ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'stringEquals', 'argv' => [ 'aws-us-gov', [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'name', ], ], ], ], ], 'endpoint' => [ 'url' => 'https://elasticloadbalancing.{Region}.amazonaws.com', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://elasticloadbalancing-fips.{Region}.{PartitionResult#dnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], [ 'conditions' => [], 'error' => 'FIPS is enabled but this partition does not support FIPS', 'type' => 'error', ], ], ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsDualStack', ], ], ], ], ], 'type' => 'tree', 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://elasticloadbalancing.{Region}.{PartitionResult#dualStackDnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], [ 'conditions' => [], 'error' => 'DualStack is enabled but this partition does not support DualStack', 'type' => 'error', ], ], ], [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://elasticloadbalancing.{Region}.{PartitionResult#dnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], ], ], ], [ 'conditions' => [], 'error' => 'Invalid Configuration: Missing Region', 'type' => 'error', ], ],];
return [ 'version' => '1.0', 'parameters' => [ 'Region' => [ 'builtIn' => 'AWS::Region', 'required' => false, 'documentation' => 'The AWS region used to dispatch the request.', 'type' => 'String', ], 'UseDualStack' => [ 'builtIn' => 'AWS::UseDualStack', 'required' => true, 'default' => false, 'documentation' => 'When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.', 'type' => 'Boolean', ], 'UseFIPS' => [ 'builtIn' => 'AWS::UseFIPS', 'required' => true, 'default' => false, 'documentation' => 'When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.', 'type' => 'Boolean', ], 'Endpoint' => [ 'builtIn' => 'SDK::Endpoint', 'required' => false, 'documentation' => 'Override the endpoint used to send this request', 'type' => 'String', ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'isSet', 'argv' => [ [ 'ref' => 'Endpoint', ], ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], ], 'error' => 'Invalid Configuration: FIPS and custom endpoint are not supported', 'type' => 'error', ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'error' => 'Invalid Configuration: Dualstack and custom endpoint are not supported', 'type' => 'error', ], [ 'conditions' => [], 'endpoint' => [ 'url' => [ 'ref' => 'Endpoint', ], 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], [ 'conditions' => [ [ 'fn' => 'isSet', 'argv' => [ [ 'ref' => 'Region', ], ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'aws.partition', 'argv' => [ [ 'ref' => 'Region', ], ], 'assign' => 'PartitionResult', ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsFIPS', ], ], ], ], [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsDualStack', ], ], ], ], ], 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://elasticloadbalancing-fips.{Region}.{PartitionResult#dualStackDnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'error' => 'FIPS and DualStack are enabled, but this partition does not support one or both', 'type' => 'error', ], ], 'type' => 'tree', ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseFIPS', ], true, ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsFIPS', ], ], true, ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'stringEquals', 'argv' => [ [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'name', ], ], 'aws-us-gov', ], ], ], 'endpoint' => [ 'url' => 'https://elasticloadbalancing.{Region}.amazonaws.com', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://elasticloadbalancing-fips.{Region}.{PartitionResult#dnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'error' => 'FIPS is enabled but this partition does not support FIPS', 'type' => 'error', ], ], 'type' => 'tree', ], [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ [ 'ref' => 'UseDualStack', ], true, ], ], ], 'rules' => [ [ 'conditions' => [ [ 'fn' => 'booleanEquals', 'argv' => [ true, [ 'fn' => 'getAttr', 'argv' => [ [ 'ref' => 'PartitionResult', ], 'supportsDualStack', ], ], ], ], ], 'rules' => [ [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://elasticloadbalancing.{Region}.{PartitionResult#dualStackDnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'error' => 'DualStack is enabled but this partition does not support DualStack', 'type' => 'error', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'endpoint' => [ 'url' => 'https://elasticloadbalancing.{Region}.{PartitionResult#dnsSuffix}', 'properties' => [], 'headers' => [], ], 'type' => 'endpoint', ], ], 'type' => 'tree', ], ], 'type' => 'tree', ], [ 'conditions' => [], 'error' => 'Invalid Configuration: Missing Region', 'type' => 'error', ], ],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
<?php
// This file was auto-generated from sdk-root/src/data/grandfathered-services.json
return [ 'grandfathered-services' => [ 'AccessAnalyzer', 'Account', 'ACMPCA', 'ACM', 'PrometheusService', 'Amplify', 'AmplifyBackend', 'AmplifyUIBuilder', 'APIGateway', 'ApiGatewayManagementApi', 'ApiGatewayV2', 'AppConfig', 'AppConfigData', 'Appflow', 'AppIntegrationsService', 'ApplicationAutoScaling', 'ApplicationInsights', 'ApplicationCostProfiler', 'AppMesh', 'AppRunner', 'AppStream', 'AppSync', 'Athena', 'AuditManager', 'AutoScalingPlans', 'AutoScaling', 'BackupGateway', 'Backup', 'Batch', 'BillingConductor', 'Braket', 'Budgets', 'CostExplorer', 'ChimeSDKIdentity', 'ChimeSDKMediaPipelines', 'ChimeSDKMeetings', 'ChimeSDKMessaging', 'Chime', 'Cloud9', 'CloudControlApi', 'CloudDirectory', 'CloudFormation', 'CloudFront', 'CloudHSM', 'CloudHSMV2', 'CloudSearch', 'CloudSearchDomain', 'CloudTrail', 'CodeArtifact', 'CodeBuild', 'CodeCommit', 'CodeDeploy', 'CodeGuruReviewer', 'CodeGuruProfiler', 'CodePipeline', 'CodeStarconnections', 'CodeStarNotifications', 'CodeStar', 'CognitoIdentity', 'CognitoIdentityProvider', 'CognitoSync', 'Comprehend', 'ComprehendMedical', 'ComputeOptimizer', 'ConfigService', 'ConnectContactLens', 'Connect', 'ConnectCampaignService', 'ConnectParticipant', 'CostandUsageReportService', 'CustomerProfiles', 'IoTDataPlane', 'GlueDataBrew', 'DataExchange', 'DataPipeline', 'DataSync', 'DAX', 'Detective', 'DeviceFarm', 'DevOpsGuru', 'DirectConnect', 'ApplicationDiscoveryService', 'DLM', 'DatabaseMigrationService', 'DocDB', 'drs', 'DirectoryService', 'DynamoDB', 'EBS', 'EC2InstanceConnect', 'EC2', 'ECRPublic', 'ECR', 'ECS', 'EKS', 'ElasticInference', 'ElastiCache', 'ElasticBeanstalk', 'EFS', 'ElasticLoadBalancing', 'ElasticLoadBalancingv2', 'EMR', 'ElasticTranscoder', 'SES', 'EMRContainers', 'EMRServerless', 'MarketplaceEntitlementService', 'ElasticsearchService', 'EventBridge', 'CloudWatchEvents', 'CloudWatchEvidently', 'FinSpaceData', 'finspace', 'Firehose', 'FIS', 'FMS', 'ForecastService', 'ForecastQueryService', 'FraudDetector', 'FSx', 'GameLift', 'Glacier', 'GlobalAccelerator', 'Glue', 'ManagedGrafana', 'Greengrass', 'GreengrassV2', 'GroundStation', 'GuardDuty', 'Health', 'HealthLake', 'IAM', 'IdentityStore', 'imagebuilder', 'ImportExport', 'Inspector', 'Inspector2', 'IoTJobsDataPlane', 'IoT', 'IoT1ClickDevicesService', 'IoT1ClickProjects', 'IoTAnalytics', 'IoTDeviceAdvisor', 'IoTEventsData', 'IoTEvents', 'IoTFleetHub', 'IoTSecureTunneling', 'IoTSiteWise', 'IoTThingsGraph', 'IoTTwinMaker', 'IoTWireless', 'IVS', 'ivschat', 'Kafka', 'KafkaConnect', 'kendra', 'Keyspaces', 'KinesisVideoArchivedMedia', 'KinesisVideoMedia', 'KinesisVideoSignalingChannels', 'Kinesis', 'KinesisAnalytics', 'KinesisAnalyticsV2', 'KinesisVideo', 'KMS', 'LakeFormation', 'Lambda', 'LexModelBuildingService', 'LicenseManager', 'Lightsail', 'LocationService', 'CloudWatchLogs', 'LookoutEquipment', 'LookoutMetrics', 'LookoutforVision', 'MainframeModernization', 'MachineLearning', 'Macie2', 'ManagedBlockchain', 'MarketplaceCatalog', 'MarketplaceCommerceAnalytics', 'MediaConnect', 'MediaConvert', 'MediaLive', 'MediaPackageVod', 'MediaPackage', 'MediaStoreData', 'MediaStore', 'MediaTailor', 'MemoryDB', 'MarketplaceMetering', 'MigrationHub', 'mgn', 'MigrationHubRefactorSpaces', 'MigrationHubConfig', 'MigrationHubStrategyRecommendations', 'Mobile', 'LexModelsV2', 'CloudWatch', 'MQ', 'MTurk', 'MWAA', 'Neptune', 'NetworkFirewall', 'NetworkManager', 'NimbleStudio', 'OpenSearchService', 'OpsWorks', 'OpsWorksCM', 'Organizations', 'Outposts', 'Panorama', 'PersonalizeEvents', 'PersonalizeRuntime', 'Personalize', 'PI', 'PinpointEmail', 'PinpointSMSVoiceV2', 'Pinpoint', 'Polly', 'Pricing', 'Proton', 'QLDBSession', 'QLDB', 'QuickSight', 'RAM', 'RecycleBin', 'RDSDataService', 'RDS', 'RedshiftDataAPIService', 'RedshiftServerless', 'Redshift', 'Rekognition', 'ResilienceHub', 'ResourceGroups', 'ResourceGroupsTaggingAPI', 'RoboMaker', 'Route53RecoveryCluster', 'Route53RecoveryControlConfig', 'Route53RecoveryReadiness', 'Route53', 'Route53Domains', 'Route53Resolver', 'CloudWatchRUM', 'LexRuntimeV2', 'LexRuntimeService', 'SageMakerRuntime', 'S3', 'S3Control', 'S3Outposts', 'AugmentedAIRuntime', 'SagemakerEdgeManager', 'SageMakerFeatureStoreRuntime', 'SageMaker', 'SavingsPlans', 'Schemas', 'SecretsManager', 'SecurityHub', 'ServerlessApplicationRepository', 'ServiceQuotas', 'AppRegistry', 'ServiceCatalog', 'ServiceDiscovery', 'SESV2', 'Shield', 'signer', 'PinpointSMSVoice', 'SMS', 'SnowDeviceManagement', 'Snowball', 'SNS', 'SQS', 'SSMContacts', 'SSMIncidents', 'SSM', 'SSOAdmin', 'SSOOIDC', 'SSO', 'SFN', 'StorageGateway', 'DynamoDBStreams', 'STS', 'Support', 'SWF', 'Synthetics', 'Textract', 'TimestreamQuery', 'TimestreamWrite', 'TranscribeService', 'Transfer', 'Translate', 'VoiceID', 'WAFRegional', 'WAF', 'WAFV2', 'WellArchitected', 'ConnectWisdomService', 'WorkDocs', 'WorkLink', 'WorkMail', 'WorkMailMessageFlow', 'WorkSpacesWeb', 'WorkSpaces', 'XRay', ],];
return [ 'grandfathered-services' => [ 'AccessAnalyzer', 'Account', 'ACMPCA', 'ACM', 'PrometheusService', 'Amplify', 'AmplifyBackend', 'AmplifyUIBuilder', 'APIGateway', 'ApiGatewayManagementApi', 'ApiGatewayV2', 'AppConfig', 'AppConfigData', 'Appflow', 'AppIntegrationsService', 'ApplicationAutoScaling', 'ApplicationInsights', 'ApplicationCostProfiler', 'AppMesh', 'AppRunner', 'AppStream', 'AppSync', 'Athena', 'AuditManager', 'AutoScalingPlans', 'AutoScaling', 'BackupGateway', 'Backup', 'Batch', 'BillingConductor', 'Braket', 'Budgets', 'CostExplorer', 'ChimeSDKIdentity', 'ChimeSDKMediaPipelines', 'ChimeSDKMeetings', 'ChimeSDKMessaging', 'Chime', 'Cloud9', 'CloudControlApi', 'CloudDirectory', 'CloudFormation', 'CloudFront', 'CloudHSM', 'CloudHSMV2', 'CloudSearch', 'CloudSearchDomain', 'CloudTrail', 'CodeArtifact', 'CodeBuild', 'CodeCommit', 'CodeDeploy', 'CodeGuruReviewer', 'CodeGuruProfiler', 'CodePipeline', 'CodeStarconnections', 'CodeStarNotifications', 'CodeStar', 'CognitoIdentity', 'CognitoIdentityProvider', 'CognitoSync', 'Comprehend', 'ComprehendMedical', 'ComputeOptimizer', 'ConfigService', 'ConnectContactLens', 'Connect', 'ConnectCampaignService', 'ConnectParticipant', 'CostandUsageReportService', 'CustomerProfiles', 'IoTDataPlane', 'GlueDataBrew', 'DataExchange', 'DataPipeline', 'DataSync', 'DAX', 'Detective', 'DeviceFarm', 'DevOpsGuru', 'DirectConnect', 'ApplicationDiscoveryService', 'DLM', 'DatabaseMigrationService', 'DocDB', 'drs', 'DirectoryService', 'DynamoDB', 'EBS', 'EC2InstanceConnect', 'EC2', 'ECRPublic', 'ECR', 'ECS', 'EKS', 'ElasticInference', 'ElastiCache', 'ElasticBeanstalk', 'EFS', 'ElasticLoadBalancing', 'ElasticLoadBalancingv2', 'EMR', 'ElasticTranscoder', 'SES', 'EMRContainers', 'EMRServerless', 'MarketplaceEntitlementService', 'ElasticsearchService', 'EventBridge', 'CloudWatchEvents', 'CloudWatchEvidently', 'FinSpaceData', 'finspace', 'Firehose', 'FIS', 'FMS', 'ForecastService', 'ForecastQueryService', 'FraudDetector', 'FSx', 'GameLift', 'Glacier', 'GlobalAccelerator', 'Glue', 'ManagedGrafana', 'Greengrass', 'GreengrassV2', 'GroundStation', 'GuardDuty', 'Health', 'HealthLake', 'IAM', 'IdentityStore', 'imagebuilder', 'ImportExport', 'Inspector', 'Inspector2', 'IoTJobsDataPlane', 'IoT', 'IoT1ClickDevicesService', 'IoT1ClickProjects', 'IoTAnalytics', 'IoTDeviceAdvisor', 'IoTEventsData', 'IoTEvents', 'IoTFleetHub', 'IoTSecureTunneling', 'IoTSiteWise', 'IoTThingsGraph', 'IoTTwinMaker', 'IoTWireless', 'IVS', 'ivschat', 'Kafka', 'KafkaConnect', 'kendra', 'Keyspaces', 'KinesisVideoArchivedMedia', 'KinesisVideoMedia', 'KinesisVideoSignalingChannels', 'Kinesis', 'KinesisAnalytics', 'KinesisAnalyticsV2', 'KinesisVideo', 'KMS', 'LakeFormation', 'Lambda', 'LexModelBuildingService', 'LicenseManager', 'Lightsail', 'LocationService', 'CloudWatchLogs', 'LookoutEquipment', 'LookoutMetrics', 'LookoutforVision', 'MainframeModernization', 'MachineLearning', 'Macie2', 'ManagedBlockchain', 'MarketplaceCatalog', 'MarketplaceCommerceAnalytics', 'MediaConnect', 'MediaConvert', 'MediaLive', 'MediaPackageVod', 'MediaPackage', 'MediaStoreData', 'MediaStore', 'MediaTailor', 'MemoryDB', 'MarketplaceMetering', 'MigrationHub', 'mgn', 'MigrationHubRefactorSpaces', 'MigrationHubConfig', 'MigrationHubStrategyRecommendations', 'LexModelsV2', 'CloudWatch', 'MQ', 'MTurk', 'MWAA', 'Neptune', 'NetworkFirewall', 'NetworkManager', 'NimbleStudio', 'OpenSearchService', 'OpsWorks', 'OpsWorksCM', 'Organizations', 'Outposts', 'Panorama', 'PersonalizeEvents', 'PersonalizeRuntime', 'Personalize', 'PI', 'PinpointEmail', 'PinpointSMSVoiceV2', 'Pinpoint', 'Polly', 'Pricing', 'Proton', 'QLDBSession', 'QLDB', 'QuickSight', 'RAM', 'RecycleBin', 'RDSDataService', 'RDS', 'RedshiftDataAPIService', 'RedshiftServerless', 'Redshift', 'Rekognition', 'ResilienceHub', 'ResourceGroups', 'ResourceGroupsTaggingAPI', 'RoboMaker', 'Route53RecoveryCluster', 'Route53RecoveryControlConfig', 'Route53RecoveryReadiness', 'Route53', 'Route53Domains', 'Route53Resolver', 'CloudWatchRUM', 'LexRuntimeV2', 'LexRuntimeService', 'SageMakerRuntime', 'S3', 'S3Control', 'S3Outposts', 'AugmentedAIRuntime', 'SagemakerEdgeManager', 'SageMakerFeatureStoreRuntime', 'SageMaker', 'SavingsPlans', 'Schemas', 'SecretsManager', 'SecurityHub', 'ServerlessApplicationRepository', 'ServiceQuotas', 'AppRegistry', 'ServiceCatalog', 'ServiceDiscovery', 'SESV2', 'Shield', 'signer', 'PinpointSMSVoice', 'SMS', 'SnowDeviceManagement', 'Snowball', 'SNS', 'SQS', 'SSMContacts', 'SSMIncidents', 'SSM', 'SSOAdmin', 'SSOOIDC', 'SSO', 'SFN', 'StorageGateway', 'DynamoDBStreams', 'STS', 'Support', 'SWF', 'Synthetics', 'Textract', 'TimestreamQuery', 'TimestreamWrite', 'TranscribeService', 'Transfer', 'Translate', 'VoiceID', 'WAFRegional', 'WAF', 'WAFV2', 'WellArchitected', 'ConnectWisdomService', 'WorkDocs', 'WorkLink', 'WorkMail', 'WorkMailMessageFlow', 'WorkSpacesWeb', 'WorkSpaces', 'XRay', ],];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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