移除版本库

mobile-first
LMR 5 years ago
parent 883009ad9c
commit ee65bc72e6

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,39 +0,0 @@
CKEditor 4
==========
Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
http://ckeditor.com - See LICENSE.md for license information.
CKEditor is a text editor to be used inside web pages. It's not a replacement
for desktop text editors like Word or OpenOffice, but a component to be used as
part of web applications and websites.
## Documentation
The full editor documentation is available online at the following address:
http://docs.ckeditor.com
## Installation
Installing CKEditor is an easy task. Just follow these simple steps:
1. **Download** the latest version from the CKEditor website:
http://ckeditor.com. You should have already completed this step, but be
sure you have the very latest version.
2. **Extract** (decompress) the downloaded file into the root of your website.
**Note:** CKEditor is by default installed in the `ckeditor` folder. You can
place the files in whichever you want though.
## Checking Your Installation
The editor comes with a few sample pages that can be used to verify that
installation proceeded properly. Take a look at the `samples` directory.
To test your installation, just call the following page at your website:
http://<your site>/<CKEditor installation path>/samples/index.html
For example:
http://www.example.com/ckeditor/samples/index.html

@ -1,10 +0,0 @@
/*
Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
(function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},
ckeditor:function(g,e){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g)){var m=e;e=g;g=m}var k=[];e=e||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function d(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(d,100)},0)},null,null,9999);
else{if(e.autoUpdateElement||"undefined"==typeof e.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)e.autoUpdateElementJquery=!0;e.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,e):CKEDITOR.inline(h,e);b.data("ckeditorInstance",c);c.on("instanceReady",function(e){var d=e.editor;setTimeout(function n(){if(d.element){e.removeListener();d.on("dataReady",function(){b.trigger("dataReady.ckeditor",[d])});d.on("setData",function(a){b.trigger("setData.ckeditor",
[d,a.data])});d.on("getData",function(a){b.trigger("getData.ckeditor",[d,a.data])},999);d.on("destroy",function(){b.trigger("destroy.ckeditor",[d])});d.on("save",function(){a(h.form).submit();return!1},null,null,20);if(d.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){d.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",
c)})}d.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[d]);g&&g.apply(d,[h]);l.resolve()}else setTimeout(n,100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,k).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}});CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(e){if(arguments.length){var m=
this,k=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(e,function(){f.resolve()});k.push(f.promise());return!0}return g.call(b,e)});if(k.length){var b=new a.Deferred;a.when.apply(this,k).done(function(){b.resolveWith(m)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}}))})(window.jQuery);

@ -1,190 +0,0 @@
/**
* @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/license
*/
/**
* This file was added automatically by CKEditor builder.
* You may re-use it at any time to build CKEditor again.
*
* If you would like to build CKEditor online again
* (for example to upgrade), visit one the following links:
*
* (1) https://ckeditor.com/cke4/builder
* Visit online builder to build CKEditor from scratch.
*
* (2) https://ckeditor.com/cke4/builder/c3fc0dcaa9c80d707aab3e60fdcddbfb
* Visit online builder to build CKEditor, starting with the same setup as before.
*
* (3) https://ckeditor.com/cke4/builder/download/c3fc0dcaa9c80d707aab3e60fdcddbfb
* Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.
*
* NOTE:
* This file is not used by CKEditor, you may remove it.
* Changing this file will not change your CKEditor configuration.
*/
var CKBUILDER_CONFIG = {
skin: 'moono-lisa',
preset: 'full',
ignore: [
'.DS_Store',
'.bender',
'.editorconfig',
'.gitattributes',
'.gitignore',
'.idea',
'.jscsrc',
'.jshintignore',
'.jshintrc',
'.mailmap',
'.npm',
'.travis.yml',
'bender-err.log',
'bender-out.log',
'bender.ci.js',
'bender.js',
'dev',
'gruntfile.js',
'less',
'node_modules',
'package.json',
'tests'
],
plugins : {
'a11yhelp' : 1,
'about' : 1,
'basicstyles' : 1,
'bidi' : 1,
'blockquote' : 1,
'clipboard' : 1,
'colorbutton' : 1,
'colordialog' : 1,
'contextmenu' : 1,
'copyformatting' : 1,
'dialogadvtab' : 1,
'div' : 1,
'elementspath' : 1,
'enterkey' : 1,
'entities' : 1,
'filebrowser' : 1,
'find' : 1,
'flash' : 1,
'floatingspace' : 1,
'font' : 1,
'format' : 1,
'forms' : 1,
'horizontalrule' : 1,
'htmlwriter' : 1,
'iframe' : 1,
'image' : 1,
'indentblock' : 1,
'indentlist' : 1,
'justify' : 1,
'language' : 1,
'link' : 1,
'list' : 1,
'liststyle' : 1,
'magicline' : 1,
'maximize' : 1,
'newpage' : 1,
'pagebreak' : 1,
'pastefromword' : 1,
'pastetext' : 1,
'preview' : 1,
'print' : 1,
'removeformat' : 1,
'resize' : 1,
'save' : 1,
'scayt' : 1,
'selectall' : 1,
'showblocks' : 1,
'showborders' : 1,
'smiley' : 1,
'sourcearea' : 1,
'specialchar' : 1,
'stylescombo' : 1,
'tab' : 1,
'table' : 1,
'tableselection' : 1,
'tabletools' : 1,
'templates' : 1,
'toolbar' : 1,
'undo' : 1,
'uploadimage' : 1,
'wsc' : 1,
'wysiwygarea' : 1
},
languages : {
'af' : 1,
'ar' : 1,
'az' : 1,
'bg' : 1,
'bn' : 1,
'bs' : 1,
'ca' : 1,
'cs' : 1,
'cy' : 1,
'da' : 1,
'de' : 1,
'de-ch' : 1,
'el' : 1,
'en' : 1,
'en-au' : 1,
'en-ca' : 1,
'en-gb' : 1,
'eo' : 1,
'es' : 1,
'es-mx' : 1,
'et' : 1,
'eu' : 1,
'fa' : 1,
'fi' : 1,
'fo' : 1,
'fr' : 1,
'fr-ca' : 1,
'gl' : 1,
'gu' : 1,
'he' : 1,
'hi' : 1,
'hr' : 1,
'hu' : 1,
'id' : 1,
'is' : 1,
'it' : 1,
'ja' : 1,
'ka' : 1,
'km' : 1,
'ko' : 1,
'ku' : 1,
'lt' : 1,
'lv' : 1,
'mk' : 1,
'mn' : 1,
'ms' : 1,
'nb' : 1,
'nl' : 1,
'no' : 1,
'oc' : 1,
'pl' : 1,
'pt' : 1,
'pt-br' : 1,
'ro' : 1,
'ru' : 1,
'si' : 1,
'sk' : 1,
'sl' : 1,
'sq' : 1,
'sr' : 1,
'sr-latn' : 1,
'sv' : 1,
'th' : 1,
'tr' : 1,
'tt' : 1,
'ug' : 1,
'uk' : 1,
'vi' : 1,
'zh' : 1,
'zh-cn' : 1
}
};

1342
wysiwyg/ckeditor.js vendored

File diff suppressed because one or more lines are too long

@ -1,120 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CKFinder Changelog</title>
</head>
<body>
<h1 id="ckfinder-changelog">CKFinder Changelog</h1>
<p><a href="https://ckeditor.com/ckeditor-4/ckfinder/">CKFinder</a></p>
<p>Copyright (c) 2007-2019, CKSource - Frederico Knabben. All rights reserved.</p>
<h2 id="version-3-5-0">Version 3.5.0</h2>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Fixed issues related to loading language files in a CORS-enabled environment.</li><li>Fixed image editing in a CORS-enabled environment.</li><li>Fixed contrast issues in the &quot;Choose resized&quot; dialog.</li><li class="net">Fixed an issue with downloading large files that occurred on some IIS configurations.</li><li class="net">Fixed an issue with the <code>Proxy</code> command on an S3 backend.</li></ul>
<h3 id="localization-updates">Localization Updates</h3>
<ul>
<li>Updated: Japanese.</li></ul>
<h2 id="version-3-4-5">Version 3.4.5</h2>
<h3 id="new-features">New Features</h3>
<ul>
<li>New skin: Neko.</li><li>The language files can now be loaded in a CORS-enabled environment.</li><li>Improved the look &amp; feel of the image preview view.</li></ul>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Fixed performance issues in the folder tree view for folders that contain hundreds of subfolders.</li><li>Fixed focus issues in Compact and List view.</li><li>Fixed file panel auto scroll issue in Modal mode.</li><li>Fixed navigation issues in Compact and List views.</li><li class="net">Refactored Amazon S3 adapter, so it is now possible to pass a custom instance of <code>AmazonS3Client</code>.</li><li class="net">Fixed an issue with incorrect last file modification dates.</li></ul>
<h3 id="backward-incompatible-changes">Backward Incompatible Changes</h3>
<ul>
<li>Due to performance issues, the <code>view:FolderTreeNode</code> event is no longer emitted in the CKFinder JavaScript client.</li></ul>
<h2 id="version-3-4-4">Version 3.4.4</h2>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Fixed file selection issue that occurred when search filter was used.</li><li class="php">Fixed problem with dates on FTP adapter.</li><li class="net">Updated AWS SDK to version 3.</li></ul>
<h3 id="localization-updates">Localization Updates</h3>
<ul>
<li>Updated: Chinese, Dutch, Finnish, Persian.</li></ul>
<h2 id="version-3-4-3">Version 3.4.3</h2>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Fixed file upload issue in the latest version of Microsoft Edge (v42).</li><li>Fixed text selection issue in CKFinder UI.</li><li class="php">Added support for Unix symbolic links in the local filesystem backend adapter.</li><li class="net">Fixed URL generation in backends that use the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-net/commands.html#command_proxy">Proxy</a> command.</li><li class="net">Upgraded the ImageProcessor library to the latest version (v2.6.2).</li><li class="net">Added possibility to set license details per request.</li></ul>
<h2 id="version-3-4-2">Version 3.4.2</h2>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Fixed issues with resolving base path when <code>ckfinder.js</code> is loaded with query string parameters.</li><li>Fixed PDF preview for files with the &quot;pdf&quot; extension written in uppercase.</li><li class="php">Updated AWS SDK to version 3.</li><li class="php">Updated Dropbox API to version 2.</li><li class="net">Fixed <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-net/configuration.html#configuration_options_backends"><code>baseUrl</code></a> option which was ignored by some backend adapters.</li><li class="net">Fixed URL generation for resized images in backends that use the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-net/commands.html#command_proxy">Proxy</a> command.</li></ul>
<h3 id="localization-updates">Localization Updates</h3>
<ul>
<li>Added: Azerbaijani, Uzbek (Cyrillic and Latin versions).</li><li>Updated: Vietnamese.</li></ul>
<h2 id="version-3-4-1">Version 3.4.1</h2>
<h3 id="new-features">New Features</h3>
<ul>
<li class="net">Added support for FTP storage.</li></ul>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li class="net">Improved Thumbnail command performance.</li></ul>
<h3 id="localization-updates">Localization Updates</h3>
<ul>
<li>Updated: Greek and Turkish.</li></ul>
<h2 id="version-3-4">Version 3.4</h2>
<h3 id="new-features">New Features</h3>
<ul>
<li>The <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-settings_change_GROUP_NAME"><code>settings:change:GROUP:NAME</code></a> event has a new parameter: <code>previousValue</code>.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/demo/ckfinder3/samples/user-interface-compact.html">Compact View</a> for displaying files in columns (not supported in IE9).</li><li>The <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Config-cfg-defaultViewType"><code>defaultViewType</code></a> configuration option accepts a new value: <code>compact</code>.</li><li>Added the <code>width</code> parameter for columns defined for List View in the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-listView_columns"><code>listView:columns</code></a> event.</li><li>Added the &quot;OK&quot; button to information dialogs (those created using the <code>dialog:info</code> request).</li><li class="net">Improved configuration validation.</li><li class="net">Added progress tracking for time-consuming operations.</li><li class="net">Added support for IIS virtual directories in the local storage adapter.</li></ul>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Added the missing <code>command:before:FileUpload</code>, <code>command:ok:FileUpload</code> and <code>command:error:FileUpload</code> events for uploading files.</li><li>Fixed focus in the settings panel when changing the view type.</li><li>Fixed double <code>toolbar:reset:Main:folder</code> event in compact mode when the user selects a folder in the files pane.</li><li>Fixed keyboard navigation for disabled context menu items.</li><li>Removed the possibility to invoke the Delete File command by keyboard inside a folder with <code>ACL FILE_DELETE</code> set to <code>false</code>.</li><li>Removed the possibility to invoke the Rename File command by keyboard inside a folder with <code>ACL FILE_RENAME</code> set to <code>false</code>.</li><li>Fixed drag&amp;drop uploads in List View.</li><li>Updated Javascript code prettifier for samples.</li><li class="php">Fixed file permission issue occurring during file upload on some IIS server configurations.</li><li class="net">Fixed HTML file extension matching.</li><li class="net">Fixed URL generation for resized images in backends that use the Proxy command.</li><li class="net">Added missing file size field to the SaveImage command response.</li><li class="net">Improved thumbnail caching.</li></ul>
<h3 id="localization-updates">Localization Updates</h3>
<ul>
<li>Added: Swiss German (thanks to <a href="https://twitter.com/mirogrenda">Miro Grenda</a>!) and Ukrainian (thanks to Holovin Yevhen Nikolayevich!).</li><li>Updated: Chinese, Czech, Esperanto, French, German, Kurdish, Latvian, Polish, Russian, Slovakian, Spanish and Turkish.</li></ul>
<h2 id="version-3-3-1">Version 3.3.1</h2>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li class="net">Fixed performance issue in folders with more than 1000 files.</li></ul>
<h2 id="version-3-3">Version 3.3</h2>
<h3 id="new-features">New Features</h3>
<ul>
<li class="php">Added support for Microsoft Azure Storage.</li><li class="net">Added a stable version of the ASP.NET connector.</li><li class="net">Added support for Microsoft Azure Storage.</li><li class="net">Added support for Amazon S3 Storage.</li></ul>
<h3 id="backward-incompatible-changes">Backward Incompatible Changes</h3>
<ul>
<li>Language files have undergone a major reorganization. Obsolete keys were removed.</li><li>Events related to rendering columns in the files pane were changed: <code>listView:file:column:NAME</code>, <code>listView:folder:column:NAME</code>.</li></ul>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Performance improvements for rendering the files pane with thousands of items.</li><li>Thumbnail slider enabled in list view when loading CKFinder.</li><li>Choosing files with double click does not fetch the file URL for some remote backends.</li><li>Invalid time when parsing time in the 12-hour clock system.</li><li class="php">Image Edit: Saving an image that exceeds <code>maxWidth</code>/<code>maxHeight</code> throws an error.</li></ul>
<h3 id="localization-updates">Localization Updates</h3>
<ul>
<li>Added: Bosnian.</li><li>Updated: Brazilian Portuguese, Czech, Esperanto, French, German, Italian, Kurdish, Latvian, Persian, Polish, Russian, Spanish and Swedish.</li></ul>
<h2 id="version-3-2-1">Version 3.2.1</h2>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>In widget mode (in Internet Explorer/Edge only) the CSRF protection was too strict and did not allow for actions that should be allowed.</li></ul>
<h2 id="version-3-2">Version 3.2</h2>
<h3 id="new-features">New Features</h3>
<ul>
<li>Added new view for files pane: a list view with file details.</li><li>Added sorting of files in files pane by name, date and size.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Config-cfg-listViewIconSize"><code>listViewIconSize</code></a> configuration option.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Config-cfg-defaultSortBy"><code>defaultSortBy</code></a> configuration option.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Config-cfg-defaultSortByOrder"><code>defaultSortByOrder</code></a> configuration option.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Config-cfg-defaultViewType"><code>defaultViewType</code></a> configuration option.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-listView_columns"><code>listView:columns</code></a> event.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-listView_file_column_NAME"><code>listView:file:column:NAME</code></a> event.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-listView_folder_column_NAME"><code>listView:folder:column:NAME</code></a> event.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-resources_show_before"><code>resources:show:before</code></a> event.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-dialog_close_NAME"><code>dialog:close:NAME</code></a> event.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-request-file_getActive"><code>file:getActive</code></a> request.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-request-csrf_getToken"><code>csrf:getToken</code></a> request.</li><li>Added the <code>sendPostAsJson</code> parameter to the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-request-command_send"><code>command:send</code></a> request</li><li>The <code>view</code> parameter for the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-request-page_create"><code>page:create</code></a> request is now optional.</li></ul>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Individual settings views have a proper name in the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-view_NAME"><code>view:NAME</code></a> event instead of a single <code>Setting</code>.</li><li>Compact mode: Keyboard navigation in breadcrumbs is inverted for RTL languages.</li><li>Fixed an issue that prevented to move or copy over 250 files on a default PHP installation.</li><li>Fixed wrong error message for an empty file name.</li><li>Fixed detection of swipe direction when opening panels on touch screen devices.</li><li>Compact mode: Focus on filter box is lost when typing.</li><li>Thumbnails are not refreshed after editing an image.</li><li>Files filter is not refreshed after clicking a folder.</li><li>Focus is lost after moving files.</li><li>The toolbar is unnecessarily rendered when lazy loading of a folder finishes and a file was selected.</li></ul>
<h3 id="localization-updates">Localization Updates</h3>
<ul>
<li>Added: Esperanto.</li></ul>
<h2 id="version-3-1">Version 3.1</h2>
<h3 id="security-updates">Security Updates</h3>
<p>As a result of security testing and hacking that we did on CKFinder 3 we discovered some potential security concerns in the server-side part of the application.
These issues affected actions that only authenticated users could perform solely in locations specified in your CKFinder backends configuration, but since
in some cases it was possible to skip ACL checks or file extension checks, <strong>an upgrade is highly recommended</strong>.</p>
<h3 id="new-features">New Features</h3>
<ul>
<li>Improved accessibility. Added compatibility with screen readers.</li><li>Reworked keyboard navigation in the entire application. Implemented custom <kbd>Tab</kbd> key support to resolve inconsistency between browsers.</li><li>Added the Keyboard Shortcuts dialog window &mdash; press <kbd>?</kbd> to open it.</li><li>Greatly improved application performance when loading files from remote locations (e.g. Amazon S3).</li><li>Improved performance by reducing the number of situations when the entire files pane is reloaded.</li><li>Improved performance by caching files on subsequent clicks of the folder.</li><li>Added Microsoft Edge compatibility.</li><li>Added preview of PDF files in the gallery.</li><li>Added drag and drop support for files onto folders and breadcrumbs in compact mode.</li><li>Added busy dialog and progress tracking for time-consuming operations.</li><li>Added Proxy command support. It is now possible to view files stored outside the document root or in remote backends in the gallery.</li><li class="php">Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-php/commands.html#command_proxy"><code>Proxy</code></a> command and the corresponding <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#backend_option_useProxyCommand"><code>useProxyCommand</code></a> backend configuration option.</li><li>Reworked the Choose Scaled dialog window.</li><li>Edit Image feature now warns against closing without saving changes.</li><li>Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-request-folder_getIcon"><code>folder:getIcon</code></a> request.</li><li>Removed Maximize/Minimize buttons in popup mode as the browser provides native controls for it.</li><li class="php">Improved performance by caching file previews.</li><li class="php">Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_cache"><code>cache</code></a> option that configures cache lifetime for various CKFinder components.</li><li class="php">Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_tempDirectory"><code>tempDirectory</code></a> option that configures the path to the temporary files folder used by CKFinder.</li><li class="php">Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_sessionWriteClose"><code>sessionWriteClose</code></a> option that configures whether the connector should close write access to the session to avoid performance issues.</li><li class="php">Added the <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-php/commands.html#command_operation"><code>Operation</code></a> command that tracks the progress of operation in time-consuming connector commands.</li></ul>
<h3 id="backward-incompatible-changes">Backward Incompatible Changes</h3>
<ul>
<li>Context menu API has undergone major changes. See the updated <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/guide/dev_contextmenu-section-ckfinder-3.1%2B">context menu documentation</a>.</li><li>Toolbar API events <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-toolbar_reset_NAME"><code>toolbar:reset:NAME</code></a> and <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-event-toolbar_reset_NAME_EVENT"><code>toolbar:reset:NAME:EVENT</code></a> - <code>data.toolbar</code> is now a <code>Backbone.Collection</code>, not an array.</li><li>The <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Application-request-file_getIcon"><code>file:getIcon</code></a> request no longer has the <code>extension</code> parameter. Pass the <code>file</code> parameter instead.</li></ul>
<h3 id="fixed-issues">Fixed Issues</h3>
<ul>
<li>Compact mode: Breadcrumb was hidden when entering a folder with many files.</li><li>Compact mode: There was no way to enter a folder on Android.</li><li>Compact mode: Broken border around CKFinder when viewing the top level folder with resource types.</li><li>Edit Image: Loading an image was not working when the domain name contained a dash character.</li><li>Edit Image: Context menu item was enabled when the user had no permissions to edit the file.</li><li>Edit Image: Resize option was not available in compact mode.</li><li>Edit Image: Reset button should have been disabled if there was nothing to reset.</li><li>Edit Image: Fixed validation of provided values in the edit image controls.</li><li>Edit Image: There was no information about failing to save a file.</li><li>Edit Image: It was possible to crop an area bigger than the edited image.</li><li>Edit Image: Fixed progress bar behavior.</li><li>Filter input: Clearing filter input did not result in showing all files in IE9.</li><li>Filter input: Filter should remember its state if it is still active.</li><li>Focusing elements: Focus in context menu and toolbar did not cycle.</li><li>Focusing elements: Focus was lost after resizing an image.</li><li>Focusing elements: Focus was not remembered when returning to the files pane.</li><li>Focusing elements: Pressing <kbd>Tab</kbd> should focus the first item in a component (file, folder, toolbar button), not the container.</li><li>Focusing elements: Lock focus chain within the settings panel.</li><li>Scrolling files: Scrolling on mobile devices was troublesome and sometimes did not work at all.</li><li>Scrolling files: Files were unnecessarily selected on scroll on mobile devices.</li><li>Thumbnails: Problem with thumbnails in widgets/popups when <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/api/CKFinder.Config-cfg-connectorPath"><code>connectorPath</code></a> did not include the domain.</li><li>Thumbnails: Thumbnails loaded with a significant delay for a larger number of files.</li><li>Thumbnails: Thumbnails were not refreshed in certain scenarios.</li><li>iOS/Safari: Thumbnails were not shown.</li><li>iOS/Safari: Popup sample did not work.</li><li>iOS/Safari: The configured height of the widget was ignored, instead CKFinder height depended on the number of files inside.</li><li>iOS/Safari: Downloading files did not work.</li><li>Setting global configuration did not work for widgets and popups.</li><li>There was no Close button available after file upload.</li><li>It should not be possible to move dialog windows.</li><li>Fixed various UI glitches in the RTL interface.</li><li>Video or image sometimes overlapped file preview controls in file preview.</li><li>Delete files confirmation dialog did not appear when the files pane was scrolled.</li><li>Changed the confusing empty folder message in the read-only mode.</li><li>Removed the notification about correctly uploaded file in IE9.</li><li>Resolved an issue with validating license names that started with <code>www[0-9]</code> or that contained upper case letters.</li><li>In certain scenarios not all available toolbar buttons were shown in CKFinder.</li><li>Fixed the look of the &quot;More&quot; drop-down in the toolbar.</li><li class="php">Empty <code>directory</code> key in the backend definition resulted in a double slash in the file URL.</li></ul>
<h3 id="localization-updates">Localization Updates</h3>
<ul>
<li>Added: Basque, Kurdish.</li><li>Updated: Brazilian Portuguese, Chinese, Croatian, Czech, Danish, Esperanto, Estonian, French, German, Greek, Hungarian, Italian, Korean, Norwegian, Persian, Polish and Russian.</li></ul>
<h2 id="version-3-0">Version 3.0</h2>
<p>A brand new version of CKFinder, currently available only for PHP. For an overview of new features, see the <a href="http://cksource.com/blog/CKFinder-3.0-for-PHP-Released">announcement about CKFinder 3.0 for PHP</a>.</p>
<ul>
<li>New architecture based on jQuery, jQuery Mobile, Backbone, Marionette, and RequireJS.</li><li>Built-in image editor.</li><li>Customizable skins compatible with jQuery UI Themeroller.</li><li>Full responsiveness, great mobile support.</li><li>Cloud storage support (Amazon S3, Dropbox) and FTP connector.</li></ul>
</body>
</html>

@ -1,175 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CKFinder License</title>
</head>
<body>
<h2>CKFinder License Agreement, Version 4.0</h2>
<p>NOTICE:</p>
<p>PLEASE READ THIS AGREEMENT CAREFULLY BEFORE ACCEPTING IT. WHEN YOU CONFIRM THIS AGREEMENT YOU ACCEPT AND AGREE TO THE TERMS AND CONDITIONS SPECIFIED HEREIN. IF ANY PERSON OR LEGAL ENTITY USES OR INSTALLS THE SOFTWARE ON YOUR BEHALF PRIOR TO YOUR USE OF THE SOFTWARE, SUCH PERSON OR LEGAL ENTITY WILL BE DEEMED TO BE YOUR PROXY ACTING ON YOUR BEHALF AND YOU WILL BE DEEMED TO HAVE ACCEPTED ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT AS IF YOU HAD USED OR INSTALLED THE SOFTWARE. IF ANY PERSON OR LEGAL ENTITY ORDERS OR ACQUIRES THE SOFTWARE ON YOUR BEHALF, SUCH PERSON OR LEGAL ENTITY SHALL BE DEEMED AS DULY EMPOWERED TO ACCEPT THE TERMS AND CONDITIONS OF THIS AGREEMENT ON YOUR BEHALF AND YOU WILL BE DEEMED TO HAVE ACCEPTED ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT AS IF YOU HAD ORDERED OR ACQUIRED THE SOFTWARE DIRECTLY.</p>
<p>ANY PERSON OR LEGAL ENTITY WHO USES OR INSTALLS THE SOFTWARE ACTING ON YOUR BEHALF IS OBLIGED TO PROVIDE YOU ACCESS TO THE SOFTWARE NOT EARLIER THAN THE PROVIDING OF THIS AGREEMENT AND LEGAL EVIDENCE AND SHALL BE DEEMED TO BE A USER OF THE SOFTWARE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AS LONG AS THIS PERSON OR LEGAL ENTITY RETAINS A COPY OF THE SOFTWARE.</p>
<p>This document (“Agreement”) is a legal agreement between You, either an individual or a Legal Entity, and CKSource sp. z o.o. sp.k., with its registered office in Warsaw, at ul. Zygmunta Słomińskiego 15 lok. 508, 00-195 Warsaw, Poland, NIP number 5252621537, REGON: 361766395 (“CKSource”), covering Your permissions to reproduce and distribute the Software under the License terms defined hereby.</p>
<ol>
<li><h3>Definitions</h3>
<p>“Agreement Name” shall mean the name used to reference this Agreement in any context, which is “CKSource Software License Agreement 4.0” or “CKSource License 4.0”.</p>
<p>“Software” shall mean the copyrighted material owned by CKSource, subject to the terms of this License. The Software is publicly, uniquely, and in its entirety, recognizable by a trademark name owned by CKSource (“Software Name”).</p>
<p>“Software Release” or “Release” shall mean a set of files distributed by CKSource, or anyone authorized to distribute it, that represents the Software. A Release is uniquely identified by the Software Name and a code. Such code is generally referenced as the Software version or revision number, or a combination of both.</p>
<p>“Release Date” shall mean the day that CKSource started distributing a Release.</p>
<p>“Website” shall mean a website (i) owned by You, or (ii) produced by You and to which the owner grants You the permission to act on behalf of the owner and on which You, under terms of this Agreement intend to manage its content. For the purpose of this Agreement Website shall mean (i) collection of internet or intranet pages placed in a computer server-based file archive so that is available for the public or internal viewing by the Website's visitors. A website used for SaaS distribution is not a valid Website for the purposes of this Agreement.</p>
<p>“Application” shall mean a single software component (i) owned by You, or (ii) to which the owner grants You the permission to act on behalf of the owner. For the purpose of this Agreement Application shall be (i) a set of mathematical codes, programmes, routines, and other functions that control the functioning and operation of a computer's hardware and (ii) is utilized by You, your customers or contractors based on a predefined interaction plan between end users and Software Release and for the specific business process or processes which are not directly related to managing content on the Websites.</p>
<p>“SaaS” shall mean software that is based on one set of common code and data definitions that is consumed in a one-to-many model by all contracted customers at anytime on a pay-for-use basis or as a subscription based on use metrics.</p>
<p>“Server” shall mean a network computer with one or more computer central processing units (CPU's) that operates for the exclusive purpose of hosting Production Websites or Websites.</p>
<p>“Development Activity” shall mean the act of interacting with the Software or one of its Releases, in any number of Websites owned or produced by You, with the intent of installation, customization, configuration, testing, documentation, or any other software development activity related to the Software.</p>
<p>“Developer” shall mean an Employee designated by You to perform Development Activities.</p>
<p>“Production Website” shall mean a Website with the Software installed, which already had Development Activities performed, and that has been delivered to end-users for production usage. Maintenance activities performed on Production Websites, excluding software development activities related to the Software, are not considered Development Activities.</p>
<p>“Hostname” shall mean a unique name by which a website is reachable in a network. This includes, but is not limited to, a website IP address. (For example, if a website is reachable by the Internet address “http://www.example.com/”, the Hostname is “www.example.com”.) Subdomains of a Hostname are considered different Hostnames.</p>
<p>“Employee” shall mean a person who is hired for a wage, salary, fee or payment to perform work for You. This includes the common understanding for employees and contractors.</p>
<p>“Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control of that entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.</p>
<p>“Effective Date” means the date on which the Legal Evidence is made effective.</p>
<p>“You” (or “Your”) shall mean an individual or a Legal Entity exercising permissions granted by the License and accepting this Agreement.</p>
</li>
<li><h3>Grant of License</h3>
<p>Subject to the terms and conditions of this Agreement, CKSource hereby grants You, in accordance to any restriction, as defined in Section 4, a non-exclusive, perpetual, irrevocable, royalty free, worldwide license (“License”) to use, reproduce, modify, and distribute a Software Release in Websites. This license does not allow You to use, reproduce, modify, sublicense and distribute a Software as embedded into single or many Applications or/and SaaS. This license does not allow You to use, reproduce, modify and distribute a Software as a software component of any of your commercial software products including those that are used by your customers to manage content on their Websites.</p>
<p>You should carefully read the following terms and conditions before using, installing, copying, or distributing the Software. Unless otherwise agreed in writing by CKSource, your use, installation, copying, or distribution of the Software indicates your acceptance of this License.</p>
</li>
<li><h3>Scope of License</h3>
<p>You can use, install, copy, and distribute the Software as provided in this Agreement solely for the purpose of managing content on the Websites. You may not rent, lease, loan, sublicense, reverse engineer, decompile, disassemble, or create derivative works based on the Software, in whole or in part, nor permit anyone else to do so.</p>
<p>It is agreed that in exchange for the license set forth herein, you will pay a license fee (“License Fee”). The fee value will be specified by CKSource at the moment of the purchase.</p>
<p>All rights of any kind to the Software, which are not expressly granted by this Agreement, are entirely and exclusively reserved to and by CKSource. The Software is protected by applicable national and international laws and treaties.</p>
</li>
<li><h3>License Models and Restrictions</h3>
<p>This Agreement may be offered to You under different license options that imply specific restrictions to Your ability to enter this Agreement. Among others, the following are some of the restrictions that may apply:</p>
<ul class="sub">
<li class="sub"><span class="sub">a. </span>“Websites Limit”: assembling the Software into a maximum limited number of Websites (“Sites”). The Hostname of any or all the Sites may be specified at the moment of purchase or at any moment during the Upgrade Period. As an exception, Hostnames prefixed with “www.” are considered a single Hostname with a similar Hostname that misses that prefix only and both together count as one Website.</li>
<li class="sub"><span class="sub">b. </span>“Employees Limit”: the maximum limited number of Employees at the Effective Date. Automatic Renewals, as described in Section 12, are valid only if this limit is still valid at renewal date.</li>
<li class="sub"><span class="sub">c. </span>“Support Requests Limit”: the maximum limited number of Support Requests per each calendar month.</li>
</ul>
<p>Restrictions, or the absence of them, must be clearly specified in the Legal Evidence. Nonconformance with the restrictions constitutes a breach to this Agreement.</p>
</li>
<li><h3>Unlicensed Copies</h3>
<p>If You did not pay the License Fee, You may use unlicensed copies of the Software for the exclusive purpose of demonstration. In this case You will be using the Software in “demo mode”. Without derogating from the forgoing, You may not use the Software in “demo mode” for any of your business purposes. The Software in “demo mode” shall only be used for evaluation purposes and may not be used or disclosed for any other purposes, including, without limitation, for external distribution. You may not remove the demo notices, if any, from the user interface of the Software nor disable the ability to display such notices nor otherwise modify the Software. Product support, if any, is not offered for the Software in “demo mode”.</p>
</li>
<li><h3>Agreement Acceptance</h3>
<p>This Agreement is automatically accepted by both parties as long as You are in possession of a legal evidence (“Legal Evidence”) that the acceptance has taken place. The Legal Evidence can be represented by (i) a copy of this Agreement signed by You and CKSource or (ii) a valid Certificate of License Ownership, provided by CKSource and addressed to You. The Legal Evidence must precisely indicate this Agreement Name, the Software Name and a summary of restrictions as described in Section 4. </p>
<p>Legal Evidences for different combinations of restrictions, Sites, Applications and SaaS will not restrict each other and will not interfere in the rights granted to You by each of them.</p>
<p>Legal Evidences are not transferable to different Sites, Applications and SaaS.</p>
</li>
<li><h3>Limitation on Releases</h3>
<p>This agreement is valid for all Releases of the Software with Release Dates within or before the 365 days that follow the Effective Date (“Upgrade Period”). CKSource has no obligation to provide you any Release that is not released for general distribution to other CKSource licensees. Nothing in this Agreement shall be construed to obligate CKSource to provide additional Releases to You under any circumstances.</p>
</li>
<li><h3>Support</h3>
<div class="support">
<p>In accordance with Section 4, CKSource shall provide support for Developers for the period of 365 days following the Effective Date (“Support Period”). Support shall be limited to electronic messaging access. CKSource shall keep You informed, either per CKSource readiness or by following your request, including changes to it, about the rules and procedures that You must perform to enjoy support under the terms of this Agreement. Support topics shall be limited to the following (each a “Support Request”):</p>
<ul class="sub">
<li class="sub"><span class="sub">a. </span>providing information in relation to the standard Software installation &amp; configuration procedures,</li>
<li class="sub"><span class="sub">b. </span>providing information about using Software's default features and functions,</li>
<li class="sub"><span class="sub">c. </span>providing information about contents of Software's standard documentation,</li>
<li class="sub"><span class="sub">d. </span>bug reporting.</li>
</ul>
<p>The number of Support Requests that CKSource is entitled to accept from You may be limited, as specified in Section 4. CKSource may refuse Support Requests that exceed these limits, if any. The decision, if one of the questions raised by You during providing support services by CKSource is a new Support Request, shall be solely made by CKSource support engineer.</p>
<p>CKSource is not in any way obliged to perform bug fixing or custom development activities as a result of a Support Request.</p>
</div>
</li>
<li><h3>License Key</h3>
<p>Whenever applicable, following a valid License purchase, a unique license key (the “License Key”) may be provided to You, which allows Software activation. The License Key is subject to the restrictions set forth in this License and may not be disclosed or distributed in any way. The disclosure or distribution of the License Key shall constitute a breach of this License, the effect of which shall be the automatic termination and revocation of any and all rights granted herein.</p>
</li>
<li><h3>Source Code</h3>
<p>The original source code (“Source Code”) of the Software may be distributed by CKSource alongside its executable version, or as an integral part of it. You may modify and compile the Source Code. The Source Code or its modified version can be copied and distributed exclusively within the scope of this license, as defined in the “License Model” terms of this license, as long as a valid license has been purchased for the distribution target. CKSource retains all rights over the Source Code and all its modified versions. Redistributions of the Source Code and modified versions of it must contain the original headers and copyright notices. Modifications to the Source Code must be explicitly and entirely identified in the Source Code files. This section of the license supersedes all modification restrictions imposed by other sections. You are not allowed to remove copyright notices nor make changes to the license validation code present in the Source Code.</p>
</li>
<li><h3>License Fee</h3>
<p>In consideration for the License granted in this Agreement during the term of this Agreement, You agreed to pay to CKSource a one-time fee (“License Fee”).</p>
<p>In consideration for the Software upgrades access and support services provided during the Upgrade Period and Support Period, You shall pay a yearly fee (“Annual Support and Upgrade Fee”).</p>
<p>The License Fee and the Annual Support and Upgrade Fee amount shall be specified by CKSource at the moment of the purchase as a single unified price.</p>
<p>The fees listed in this Agreement do not include taxes. If CKSource is required to pay any sales, use, property, excise, value added, gross receipts, withholding or other taxes levied on the Software or support under this Agreement or on Your use thereof, then such taxes shall be billed to and paid by You. This Section does not apply to taxes based on CKSource net income, franchise taxes or CKSource's employer contributions and taxes.</p>
<p>You understand that CKSource uses third-party paying agents to process selected payments. You understand that until payments are not received and verified by the paying agent, this Agreement is not valid.</p>
<p>All payments made hereunder are nonrefundable. You may not withhold or set off any amounts due under this Agreement. Failure to pay any fee when due shall constitute a material breach of this Agreement. In addition, if You fail to make any payments when due for support, upon written notice to You, CKSource shall cease providing support.</p>
</li>
<li><h3>Automatic Renewal</h3>
<p>You may opt to automatically extend the expiration date for both the Upgrade Period and Support Period by successive cycles of 365 days (each one a “Renewal”). In such case, you agree to pay a fee for each Renewal at the beginning of each cycle. The annual Renewal fee shall be informed by CKSource at the moment of the purchase and optionally agreed by you.</p>
<p>If you opted to have automatic Renewals, CKSource shall send you a payment request for the Renewal fee at any moment following the first day of each Renewal period. You shall perform the full payment in 30 calendar days following the payment request.</p>
<p>Both parties can discontinue the automatic Renewals by written notification to the other party before the beginning of extension cycles.</p>
</li>
<li><h3>Reservation of Rights and Ownership</h3>
<p>CKSource reserves all rights not expressly granted to You in this Agreement. The Software is protected by copyright and other intellectual property laws and treaties. CKSource owns the title, copyright, and other intellectual property rights in the Software. The Software is licensed, not sold. This Agreement does not grant you any rights to the Software's trademarks or services.</p>
</li>
<li><h3>Termination</h3>
<p>Without prejudice to any other rights, this Agreement automatically terminates if You fail to comply with the terms and conditions of this Agreement. You may terminate this Agreement at any time without cause. In case of termination, in any circumstance, payments issued by You will not be reimbursed.</p>
<p>You shall immediately discontinue distribution of Website, assembled with the Software, upon expiration or termination of this Agreement.</p>
</li>
<li><h3>Warranty</h3>
<p>CKSource warrants that it has full title and ownership to the Software and has the authority to grant the license hereunder. To the best of CKSource's knowledge the Software does not infringe upon the intellectual property rights of any third party and that CKSource did not receive any notice regarding any alleged infringement thereof.</p>
</li>
<li><h3>Disclaimer of Warranties</h3>
<p>With the exclusion of warranties explicitly mentioned in Section 15, the Software and its related material are provided “AS IS” and without warranty of any kind. CKSource expressly disclaims all other warranties, expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose.</p>
</li>
<li><h3>Exclusion of Incidental, Consequential and Certain Other Damages</h3>
<p>TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL CKSOURCE BE LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS OR CONFIDENTIAL OR OTHER INFORMATION, FOR BUSINESS INTERRUPTION, FOR PERSONAL INJURY, FOR LOSS OF PRIVACY, FOR FAILURE TO MEET ANY DUTY INCLUDING OF GOOD FAITH OR OF REASONABLE CARE, FOR NEGLIGENCE, AND FOR ANY OTHER PECUNIARY OR OTHER LOSS WHATSOEVER) ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OF OR INABILITY TO USE THE SOFTWARE, THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT OR OTHER SERVICES, INFORMATON, SOFTWARE, AND RELATED CONTENT THROUGH THE SOFTWARE OR OTHERWISE ARISING OUT OF THE USE OF THE SOFTWARE, OR OTHERWISE UNDER OR IN CONNECTION WITH ANY PROVISION OF THIS AGREEMENT, EVEN IN THE EVENT OF THE FAULT, TORT (INCLUDING NEGLIGENCE), MISREPRESENTATION, STRICT LIABILITY, BREACH OF CONTRACT, AND EVEN IF THE OWNER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
</li>
<li><h3>Limitation of Liability</h3>
<p>In no event shall CKSource's liability exceed the license fee paid, if any.</p>
</li>
<li><h3>Governing Law and Venue</h3>
<p>This Agreement shall be construed and controlled by the laws of Poland, and You and CKSource further consent to exclusive jurisdiction by the courts of Poland.</p>
<p>END OF AGREEMENT TERMS</p>
</li>
</ol>
</body>
</html>

@ -1,42 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CKFinder Readme</title>
</head>
<body>
<h1 id="ckfinder-3-for-php">CKFinder 3 for PHP</h1>
<p>Thank you for choosing CKFinder.</p>
<h2 id="feedback">Feedback</h2>
<p>Use <a href="https://github.com/ckfinder/ckfinder/issues">https://github.com/ckfinder/ckfinder/issues</a> to report issues in CKFinder 3 (and its documentation) or submit
feature requests.</p>
<p>If you are unsure what information to provide when reporting a bug, check <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/#!/guide/dev_feedback">https://ckeditor.com/docs/ckfinder/ckfinder3/#!/guide/dev_feedback</a></p>
<h2 id="translations">Translations</h2>
<p>In order to submit translations for CKFinder please visit <a href="https://github.com/ckfinder/ckfinder-translations">https://github.com/ckfinder/ckfinder-translations</a></p>
<h2 id="documentation">Documentation</h2>
<p>CKFinder is made from two parts: the client side part and the server side connector(s).</p>
<p>The client side part is common across all distributions (PHP and ASP.NET, Java in the future), while
the server side parts are different for each language, that&#39;s why there are multiple documentation websites available.</p>
<h3 id="ckfinder-3-documentation-https-ckeditor-com-docs-ckfinder-ckfinder3-">CKFinder 3 Documentation - <a href="https://ckeditor.com/docs/ckfinder/ckfinder3/">https://ckeditor.com/docs/ckfinder/ckfinder3/</a></h3>
<p>This website contains documentation about the client side part of CKFinder, common for all versions of CKFinder 3
and includes information about:</p>
<ul>
<li>Integrating CKFinder with your website or with CKEditor.</li>
<li>Client side configuration options.</li>
<li>API documentation.</li>
<li>Tutorials about creating JavaScript plugins.</li>
<li>Tutorials about creating skins.</li>
</ul>
<h3 id="ckfinder-3-for-php-documentation-https-ckeditor-com-docs-ckfinder-ckfinder3-php-">CKFinder 3 for PHP Documentation - <a href="https://ckeditor.com/docs/ckfinder/ckfinder3-php/">https://ckeditor.com/docs/ckfinder/ckfinder3-php/</a></h3>
<p>This website contains documentation about the PHP connector for CKFinder 3 and includes information about:</p>
<ul>
<li>Enabling the PHP connector.</li>
<li>Configuring the PHP connector.</li>
<li>Tutorials about creating PHP plugins.</li>
</ul>
<h2 id="license">License</h2>
<p>Copyright (c) 2007-2019, CKSource - Frederico Knabben. All rights reserved.</p>
<p>To purchase a license for CKFinder visit <a href="https://ckeditor.com/ckeditor-4/ckfinder/">https://ckeditor.com/ckeditor-4/ckfinder/</a></p>
</body>
</html>

@ -1,21 +0,0 @@
<!DOCTYPE html>
<!--
Copyright (c) 2007-2019, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or https://ckeditor.com/sales/license/ckfinder
-->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<title>CKFinder 3 - File Browser</title>
</head>
<body>
<script src="ckfinder.js"></script>
<script>
CKFinder.start();
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -1,29 +0,0 @@
<!DOCTYPE html>
<!--
Copyright (c) 2007-2019, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or https://ckeditor.com/sales/license/ckfinder
-->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<title>CKFinder 3 - File Browser</title>
</head>
<body>
<?php
$sitecode='empty';
if(!empty($_GET['sitecode'])){
$sitecode=$_GET['sitecode'];
}
?>
<script src="ckfinder.js"></script>
<script>
//CKFinder.start();
CKFinder.start( { sitecode: '<?php echo $sitecode; ?>', pass: 'sitecode' } );
</script>
</body>
</html>

@ -1,14 +0,0 @@
/*
Copyright (c) 2007-2019, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or https://ckeditor.com/sales/license/ckfinder
*/
var config = {};
// Set your configuration options below.
// Examples:
// config.language = 'pl';
// config.skin = 'jquery-mobile';
CKFinder.define( config );

@ -1,244 +0,0 @@
<?php
/*
* CKFinder Configuration File
*
* For the official documentation visit https://ckeditor.com/docs/ckfinder/ckfinder3-php/
*/
/*============================ PHP Error Reporting ====================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/debugging.html
// Production
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
ini_set('display_errors', 0);
// Development
// error_reporting(E_ALL);
// ini_set('display_errors', 1);
/*============================ General Settings =======================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html
$config = array();
/*============================ Enable PHP Connector HERE ==============================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_authentication
$config['authentication'] = function () {
return true;
};
/*============================ License Key ============================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_licenseKey
$config['licenseName'] = 'www.iro.com';
$config['licenseKey'] = '*J?L-*1**-C**X-*D**-*B**-Z*6*-3**J';
/*============================ CKFinder Internal Directory ============================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_privateDir
$config['privateDir'] = array(
'backend' => 'default',
'tags' => '.ckfinder/tags',
'logs' => '.ckfinder/logs',
'cache' => '.ckfinder/cache',
'thumbs' => '.ckfinder/cache/thumbs',
);
/*============================ Images and Thumbnails ==================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_images
$config['images'] = array(
'maxWidth' => 2560,
'maxHeight' => 1440,
'quality' => 0,
'sizes' => array(
'small' => array('width' => 480, 'height' => 320, 'quality' => 0),
'medium' => array('width' => 600, 'height' => 480, 'quality' => 0),
'large' => array('width' => 800, 'height' => 600, 'quality' => 0)
)
);
/*=================================== Backends ========================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_backends
$sitecode='empty';
if(!empty($_GET['sitecode'])){
$sitecode=$_GET['sitecode'];
}
switch ($sitecode){
case 'cht':
$site_url='https://data.chinahighlights.com';
break;
case 'gm':
$site_url='https://data.chinarundreisen.com';
break;
case 'ah':
$site_url='https://data.asiahighlights.com';
break;
case 'vc':
$site_url='https://data.voyageschine.com';
break;
case 'jp':
$site_url='https://data.arachina.com';
break;
case 'vac':
$site_url='https://data.viaje-a-china.com';
break;
case 'it':
$site_url='https://data.viaggio-in-cina.it';
break;
case 'ru':
$site_url='https://data.chinahighlights.ru';
break;
case 'ct':
$site_url='https://data.chinatravel.com';
break;
default:
$site_url='';
}
$config['backends'][] = array(
'name' => 'default',
'adapter' => 'local',
'baseUrl' => $site_url,
'root' => dirname(__FILE__).('/userfiles/').$sitecode, // Can be used to explicitly set the CKFinder user files directory.
'chmodFiles' => 0777,
'chmodFolders' => 0755,
'filesystemEncoding' => 'UTF-8',
'followSymlinks'=>true,
);
/*================================ Resource Types =====================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_resourceTypes
$config['defaultResourceTypes'] = '';
//按日期生成不同文件夹,每周一个文件夹
//$week_folder= date("Y-m_W", time());
$config['resourceTypes'][] = array(
'name' => 'image', // Single quotes not allowed.
'directory' => 'image',
'maxSize' => 0,
'allowedExtensions' => '7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip,svg',
'deniedExtensions' => '',
'backend' => 'default'
);
$config['resourceTypes'][] = array(
'name' => 'css', // Single quotes not allowed.
'directory' => 'css',
'maxSize' => 0,
'allowedExtensions' => '7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip,svg',
'deniedExtensions' => '',
'backend' => 'default'
);
$config['resourceTypes'][] = array(
'name' => 'pic', // Single quotes not allowed.
'directory' => 'pic',
'maxSize' => 0,
'allowedExtensions' => '7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip,svg',
'deniedExtensions' => '',
'backend' => 'default'
);
/*
$config['resourceTypes'][] = array(
'name' => 'Files', // Single quotes not allowed.
'directory' => 'file',
'maxSize' => 0,
'allowedExtensions' => '7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip,svg',
'deniedExtensions' => '',
'backend' => 'default'
);
$config['resourceTypes'][] = array(
'name' => 'Images',
'directory' => 'images',
'maxSize' => 0,
'allowedExtensions' => 'bmp,gif,jpeg,jpg,png',
'deniedExtensions' => '',
'backend' => 'default'
);
*/
/*================================ Access Control =====================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_roleSessionVar
$config['roleSessionVar'] = 'CKFinder_UserRole';
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_accessControl
$config['accessControl'][] = array(
'role' => '*',
'resourceType' => '*',
'folder' => '/',
'FOLDER_VIEW' => true,
'FOLDER_CREATE' => true,
'FOLDER_RENAME' => true,
'FOLDER_DELETE' => false,
'FILE_VIEW' => true,
'FILE_CREATE' => true,
'FILE_RENAME' => true,
'FILE_DELETE' => true,
'IMAGE_RESIZE' => true,
'IMAGE_RESIZE_CUSTOM' => true
);
/*================================ Other Settings =====================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html
$config['overwriteOnUpload'] = false;
$config['checkDoubleExtension'] = true;
$config['disallowUnsafeCharacters'] = true;
$config['secureImageUploads'] = true;
$config['checkSizeAfterScaling'] = true;
$config['htmlExtensions'] = array('html', 'htm', 'xml', 'js');
$config['hideFolders'] = array('.*', 'CVS', '__thumbs');
$config['hideFiles'] = array('.*');
$config['forceAscii'] = false;
$config['xSendfile'] = false;
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_debug
$config['debug'] = false;
/*==================================== Plugins ========================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_plugins
$config['pluginsDirectory'] = __DIR__ . '/plugins';
$config['plugins'] = array();
/*================================ Cache settings =====================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_cache
$config['cache'] = array(
'imagePreview' => 24 * 3600,
'thumbnails' => 24 * 3600 * 365,
'proxyCommand' => 0
);
/*============================ Temp Directory settings ================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_tempDirectory
$config['tempDirectory'] = sys_get_temp_dir();
/*============================ Session Cause Performance Issues =======================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_sessionWriteClose
$config['sessionWriteClose'] = true;
/*================================= CSRF protection ===================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_csrfProtection
$config['csrfProtection'] = true;
/*===================================== Headers =======================================*/
// https://ckeditor.com/docs/ckfinder/ckfinder3-php/configuration.html#configuration_options_headers
$config['headers'] = array();
/*============================== End of Configuration =================================*/
// Config must be returned - do not change it.
return $config;

@ -1,20 +0,0 @@
<?php
/*
* CKFinder
* ========
* https://ckeditor.com/ckeditor-4/ckfinder/
* Copyright (c) 2007-2019, CKSource - Frederico Knabben. All rights reserved.
*
* The software, this file and its contents are subject to the CKFinder
* License. Please read the license.txt file before using, installing, copying,
* modifying or distribute this file or part of its contents. The contents of
* this file is part of the Source Code of CKFinder.
*/
require_once __DIR__ . '/vendor/autoload.php';
use CKSource\CKFinder\CKFinder;
$ckfinder = new CKFinder(__DIR__ . '/../../../config.php');
$ckfinder->run();

@ -1,7 +0,0 @@
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit1506c147f0f2c051bef0c664e8669f26::getLoader();

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

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

@ -1,65 +0,0 @@
{
"name": "aws/aws-sdk-php",
"homepage": "http://aws.amazon.com/sdkforphp",
"description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project",
"keywords": ["aws","amazon","sdk","s3","ec2","dynamodb","cloud","glacier"],
"type": "library",
"license": "Apache-2.0",
"authors": [
{
"name": "Amazon Web Services",
"homepage": "http://aws.amazon.com"
}
],
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues"
},
"require": {
"php": ">=5.5",
"guzzlehttp/guzzle": "^5.3.3|^6.2.1",
"guzzlehttp/psr7": "^1.4.1",
"guzzlehttp/promises": "~1.0",
"mtdowling/jmespath.php": "~2.2",
"ext-pcre": "*",
"ext-json": "*",
"ext-simplexml": "*"
},
"require-dev": {
"ext-openssl": "*",
"ext-dom": "*",
"ext-pcntl": "*",
"ext-sockets": "*",
"phpunit/phpunit": "^4.8.35|^5.4.3",
"behat/behat": "~3.0",
"doctrine/cache": "~1.4",
"aws/aws-php-sns-message-validator": "~1.0",
"nette/neon": "^2.3",
"andrewsville/php-token-reflection": "^1.4",
"psr/cache": "^1.0"
},
"suggest": {
"ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
"ext-curl": "To send requests using cURL",
"ext-sockets": "To use client-side monitoring",
"doctrine/cache": "To use the DoctrineCacheAdapter",
"aws/aws-php-sns-message-validator": "To validate incoming SNS notifications"
},
"autoload": {
"psr-4": {
"Aws\\": "src/"
},
"files": ["src/functions.php"]
},
"autoload-dev": {
"psr-4": {
"Aws\\Test\\": "tests/"
},
"classmap": ["build/"]
},
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
}
}

@ -1,49 +0,0 @@
<?php
namespace Aws\ACMPCA;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Certificate Manager Private Certificate Authority** service.
* @method \Aws\Result createCertificateAuthority(array $args = [])
* @method \GuzzleHttp\Promise\Promise createCertificateAuthorityAsync(array $args = [])
* @method \Aws\Result createCertificateAuthorityAuditReport(array $args = [])
* @method \GuzzleHttp\Promise\Promise createCertificateAuthorityAuditReportAsync(array $args = [])
* @method \Aws\Result createPermission(array $args = [])
* @method \GuzzleHttp\Promise\Promise createPermissionAsync(array $args = [])
* @method \Aws\Result deleteCertificateAuthority(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteCertificateAuthorityAsync(array $args = [])
* @method \Aws\Result deletePermission(array $args = [])
* @method \GuzzleHttp\Promise\Promise deletePermissionAsync(array $args = [])
* @method \Aws\Result describeCertificateAuthority(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeCertificateAuthorityAsync(array $args = [])
* @method \Aws\Result describeCertificateAuthorityAuditReport(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeCertificateAuthorityAuditReportAsync(array $args = [])
* @method \Aws\Result getCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise getCertificateAsync(array $args = [])
* @method \Aws\Result getCertificateAuthorityCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise getCertificateAuthorityCertificateAsync(array $args = [])
* @method \Aws\Result getCertificateAuthorityCsr(array $args = [])
* @method \GuzzleHttp\Promise\Promise getCertificateAuthorityCsrAsync(array $args = [])
* @method \Aws\Result importCertificateAuthorityCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise importCertificateAuthorityCertificateAsync(array $args = [])
* @method \Aws\Result issueCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise issueCertificateAsync(array $args = [])
* @method \Aws\Result listCertificateAuthorities(array $args = [])
* @method \GuzzleHttp\Promise\Promise listCertificateAuthoritiesAsync(array $args = [])
* @method \Aws\Result listPermissions(array $args = [])
* @method \GuzzleHttp\Promise\Promise listPermissionsAsync(array $args = [])
* @method \Aws\Result listTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsAsync(array $args = [])
* @method \Aws\Result restoreCertificateAuthority(array $args = [])
* @method \GuzzleHttp\Promise\Promise restoreCertificateAuthorityAsync(array $args = [])
* @method \Aws\Result revokeCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise revokeCertificateAsync(array $args = [])
* @method \Aws\Result tagCertificateAuthority(array $args = [])
* @method \GuzzleHttp\Promise\Promise tagCertificateAuthorityAsync(array $args = [])
* @method \Aws\Result untagCertificateAuthority(array $args = [])
* @method \GuzzleHttp\Promise\Promise untagCertificateAuthorityAsync(array $args = [])
* @method \Aws\Result updateCertificateAuthority(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateCertificateAuthorityAsync(array $args = [])
*/
class ACMPCAClient extends AwsClient {}

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

@ -1,36 +0,0 @@
<?php
namespace Aws\Acm;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Certificate Manager** service.
*
* @method \Aws\Result addTagsToCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise addTagsToCertificateAsync(array $args = [])
* @method \Aws\Result deleteCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteCertificateAsync(array $args = [])
* @method \Aws\Result describeCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeCertificateAsync(array $args = [])
* @method \Aws\Result exportCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise exportCertificateAsync(array $args = [])
* @method \Aws\Result getCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise getCertificateAsync(array $args = [])
* @method \Aws\Result importCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise importCertificateAsync(array $args = [])
* @method \Aws\Result listCertificates(array $args = [])
* @method \GuzzleHttp\Promise\Promise listCertificatesAsync(array $args = [])
* @method \Aws\Result listTagsForCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForCertificateAsync(array $args = [])
* @method \Aws\Result removeTagsFromCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise removeTagsFromCertificateAsync(array $args = [])
* @method \Aws\Result renewCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise renewCertificateAsync(array $args = [])
* @method \Aws\Result requestCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise requestCertificateAsync(array $args = [])
* @method \Aws\Result resendValidationEmail(array $args = [])
* @method \GuzzleHttp\Promise\Promise resendValidationEmailAsync(array $args = [])
* @method \Aws\Result updateCertificateOptions(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateCertificateOptionsAsync(array $args = [])
*/
class AcmClient extends AwsClient {}

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

@ -1,163 +0,0 @@
<?php
namespace Aws\AlexaForBusiness;
use Aws\AwsClient;
/**
* This client is used to interact with the **Alexa For Business** service.
* @method \Aws\Result approveSkill(array $args = [])
* @method \GuzzleHttp\Promise\Promise approveSkillAsync(array $args = [])
* @method \Aws\Result associateContactWithAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateContactWithAddressBookAsync(array $args = [])
* @method \Aws\Result associateDeviceWithRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateDeviceWithRoomAsync(array $args = [])
* @method \Aws\Result associateSkillGroupWithRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateSkillGroupWithRoomAsync(array $args = [])
* @method \Aws\Result associateSkillWithSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateSkillWithSkillGroupAsync(array $args = [])
* @method \Aws\Result associateSkillWithUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateSkillWithUsersAsync(array $args = [])
* @method \Aws\Result createAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAddressBookAsync(array $args = [])
* @method \Aws\Result createBusinessReportSchedule(array $args = [])
* @method \GuzzleHttp\Promise\Promise createBusinessReportScheduleAsync(array $args = [])
* @method \Aws\Result createConferenceProvider(array $args = [])
* @method \GuzzleHttp\Promise\Promise createConferenceProviderAsync(array $args = [])
* @method \Aws\Result createContact(array $args = [])
* @method \GuzzleHttp\Promise\Promise createContactAsync(array $args = [])
* @method \Aws\Result createProfile(array $args = [])
* @method \GuzzleHttp\Promise\Promise createProfileAsync(array $args = [])
* @method \Aws\Result createRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRoomAsync(array $args = [])
* @method \Aws\Result createSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise createSkillGroupAsync(array $args = [])
* @method \Aws\Result createUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise createUserAsync(array $args = [])
* @method \Aws\Result deleteAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAddressBookAsync(array $args = [])
* @method \Aws\Result deleteBusinessReportSchedule(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBusinessReportScheduleAsync(array $args = [])
* @method \Aws\Result deleteConferenceProvider(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteConferenceProviderAsync(array $args = [])
* @method \Aws\Result deleteContact(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteContactAsync(array $args = [])
* @method \Aws\Result deleteDevice(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDeviceAsync(array $args = [])
* @method \Aws\Result deleteProfile(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteProfileAsync(array $args = [])
* @method \Aws\Result deleteRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRoomAsync(array $args = [])
* @method \Aws\Result deleteRoomSkillParameter(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRoomSkillParameterAsync(array $args = [])
* @method \Aws\Result deleteSkillAuthorization(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteSkillAuthorizationAsync(array $args = [])
* @method \Aws\Result deleteSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteSkillGroupAsync(array $args = [])
* @method \Aws\Result deleteUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteUserAsync(array $args = [])
* @method \Aws\Result disassociateContactFromAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateContactFromAddressBookAsync(array $args = [])
* @method \Aws\Result disassociateDeviceFromRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateDeviceFromRoomAsync(array $args = [])
* @method \Aws\Result disassociateSkillFromSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateSkillFromSkillGroupAsync(array $args = [])
* @method \Aws\Result disassociateSkillFromUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateSkillFromUsersAsync(array $args = [])
* @method \Aws\Result disassociateSkillGroupFromRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateSkillGroupFromRoomAsync(array $args = [])
* @method \Aws\Result forgetSmartHomeAppliances(array $args = [])
* @method \GuzzleHttp\Promise\Promise forgetSmartHomeAppliancesAsync(array $args = [])
* @method \Aws\Result getAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAddressBookAsync(array $args = [])
* @method \Aws\Result getConferencePreference(array $args = [])
* @method \GuzzleHttp\Promise\Promise getConferencePreferenceAsync(array $args = [])
* @method \Aws\Result getConferenceProvider(array $args = [])
* @method \GuzzleHttp\Promise\Promise getConferenceProviderAsync(array $args = [])
* @method \Aws\Result getContact(array $args = [])
* @method \GuzzleHttp\Promise\Promise getContactAsync(array $args = [])
* @method \Aws\Result getDevice(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDeviceAsync(array $args = [])
* @method \Aws\Result getInvitationConfiguration(array $args = [])
* @method \GuzzleHttp\Promise\Promise getInvitationConfigurationAsync(array $args = [])
* @method \Aws\Result getProfile(array $args = [])
* @method \GuzzleHttp\Promise\Promise getProfileAsync(array $args = [])
* @method \Aws\Result getRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRoomAsync(array $args = [])
* @method \Aws\Result getRoomSkillParameter(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRoomSkillParameterAsync(array $args = [])
* @method \Aws\Result getSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise getSkillGroupAsync(array $args = [])
* @method \Aws\Result listBusinessReportSchedules(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBusinessReportSchedulesAsync(array $args = [])
* @method \Aws\Result listConferenceProviders(array $args = [])
* @method \GuzzleHttp\Promise\Promise listConferenceProvidersAsync(array $args = [])
* @method \Aws\Result listDeviceEvents(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDeviceEventsAsync(array $args = [])
* @method \Aws\Result listSkills(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSkillsAsync(array $args = [])
* @method \Aws\Result listSkillsStoreCategories(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSkillsStoreCategoriesAsync(array $args = [])
* @method \Aws\Result listSkillsStoreSkillsByCategory(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSkillsStoreSkillsByCategoryAsync(array $args = [])
* @method \Aws\Result listSmartHomeAppliances(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSmartHomeAppliancesAsync(array $args = [])
* @method \Aws\Result listTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsAsync(array $args = [])
* @method \Aws\Result putConferencePreference(array $args = [])
* @method \GuzzleHttp\Promise\Promise putConferencePreferenceAsync(array $args = [])
* @method \Aws\Result putInvitationConfiguration(array $args = [])
* @method \GuzzleHttp\Promise\Promise putInvitationConfigurationAsync(array $args = [])
* @method \Aws\Result putRoomSkillParameter(array $args = [])
* @method \GuzzleHttp\Promise\Promise putRoomSkillParameterAsync(array $args = [])
* @method \Aws\Result putSkillAuthorization(array $args = [])
* @method \GuzzleHttp\Promise\Promise putSkillAuthorizationAsync(array $args = [])
* @method \Aws\Result registerAVSDevice(array $args = [])
* @method \GuzzleHttp\Promise\Promise registerAVSDeviceAsync(array $args = [])
* @method \Aws\Result rejectSkill(array $args = [])
* @method \GuzzleHttp\Promise\Promise rejectSkillAsync(array $args = [])
* @method \Aws\Result resolveRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise resolveRoomAsync(array $args = [])
* @method \Aws\Result revokeInvitation(array $args = [])
* @method \GuzzleHttp\Promise\Promise revokeInvitationAsync(array $args = [])
* @method \Aws\Result searchAddressBooks(array $args = [])
* @method \GuzzleHttp\Promise\Promise searchAddressBooksAsync(array $args = [])
* @method \Aws\Result searchContacts(array $args = [])
* @method \GuzzleHttp\Promise\Promise searchContactsAsync(array $args = [])
* @method \Aws\Result searchDevices(array $args = [])
* @method \GuzzleHttp\Promise\Promise searchDevicesAsync(array $args = [])
* @method \Aws\Result searchProfiles(array $args = [])
* @method \GuzzleHttp\Promise\Promise searchProfilesAsync(array $args = [])
* @method \Aws\Result searchRooms(array $args = [])
* @method \GuzzleHttp\Promise\Promise searchRoomsAsync(array $args = [])
* @method \Aws\Result searchSkillGroups(array $args = [])
* @method \GuzzleHttp\Promise\Promise searchSkillGroupsAsync(array $args = [])
* @method \Aws\Result searchUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise searchUsersAsync(array $args = [])
* @method \Aws\Result sendInvitation(array $args = [])
* @method \GuzzleHttp\Promise\Promise sendInvitationAsync(array $args = [])
* @method \Aws\Result startDeviceSync(array $args = [])
* @method \GuzzleHttp\Promise\Promise startDeviceSyncAsync(array $args = [])
* @method \Aws\Result startSmartHomeApplianceDiscovery(array $args = [])
* @method \GuzzleHttp\Promise\Promise startSmartHomeApplianceDiscoveryAsync(array $args = [])
* @method \Aws\Result tagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
* @method \Aws\Result untagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
* @method \Aws\Result updateAddressBook(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAddressBookAsync(array $args = [])
* @method \Aws\Result updateBusinessReportSchedule(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateBusinessReportScheduleAsync(array $args = [])
* @method \Aws\Result updateConferenceProvider(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateConferenceProviderAsync(array $args = [])
* @method \Aws\Result updateContact(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateContactAsync(array $args = [])
* @method \Aws\Result updateDevice(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDeviceAsync(array $args = [])
* @method \Aws\Result updateProfile(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateProfileAsync(array $args = [])
* @method \Aws\Result updateRoom(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRoomAsync(array $args = [])
* @method \Aws\Result updateSkillGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateSkillGroupAsync(array $args = [])
*/
class AlexaForBusinessClient extends AwsClient {}

@ -1,9 +0,0 @@
<?php
namespace Aws\AlexaForBusiness\Exception;
use Aws\Exception\AwsException;
/**
* Represents an error interacting with the **Alexa For Business** service.
*/
class AlexaForBusinessException extends AwsException {}

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

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

@ -1,67 +0,0 @@
<?php
namespace Aws\Api;
/**
* Base class that is used by most API shapes
*/
abstract class AbstractModel implements \ArrayAccess
{
/** @var array */
protected $definition;
/** @var ShapeMap */
protected $shapeMap;
/**
* @param array $definition Service description
* @param ShapeMap $shapeMap Shapemap used for creating shapes
*/
public function __construct(array $definition, ShapeMap $shapeMap)
{
$this->definition = $definition;
$this->shapeMap = $shapeMap;
}
public function toArray()
{
return $this->definition;
}
public function offsetGet($offset)
{
return isset($this->definition[$offset])
? $this->definition[$offset] : null;
}
public function offsetSet($offset, $value)
{
$this->definition[$offset] = $value;
}
public function offsetExists($offset)
{
return isset($this->definition[$offset]);
}
public function offsetUnset($offset)
{
unset($this->definition[$offset]);
}
protected function shapeAt($key)
{
if (!isset($this->definition[$key])) {
throw new \InvalidArgumentException('Expected shape definition at '
. $key);
}
return $this->shapeFor($this->definition[$key]);
}
protected function shapeFor(array $definition)
{
return isset($definition['shape'])
? $this->shapeMap->resolve($definition)
: Shape::create($definition, $this->shapeMap);
}
}

@ -1,244 +0,0 @@
<?php
namespace Aws\Api;
use Aws\Exception\UnresolvedApiException;
/**
* API providers.
*
* An API provider is a function that accepts a type, service, and version and
* returns an array of API data on success or NULL if no API data can be created
* for the provided arguments.
*
* You can wrap your calls to an API provider with the
* {@see ApiProvider::resolve} method to ensure that API data is created. If the
* API data is not created, then the resolve() method will throw a
* {@see Aws\Exception\UnresolvedApiException}.
*
* use Aws\Api\ApiProvider;
* $provider = ApiProvider::defaultProvider();
* // Returns an array or NULL.
* $data = $provider('api', 's3', '2006-03-01');
* // Returns an array or throws.
* $data = ApiProvider::resolve($provider, 'api', 'elasticfood', '2020-01-01');
*
* You can compose multiple providers into a single provider using
* {@see Aws\or_chain}. This method accepts providers as arguments and
* returns a new function that will invoke each provider until a non-null value
* is returned.
*
* $a = ApiProvider::filesystem(sys_get_temp_dir() . '/aws-beta-models');
* $b = ApiProvider::manifest();
*
* $c = \Aws\or_chain($a, $b);
* $data = $c('api', 'betaservice', '2015-08-08'); // $a handles this.
* $data = $c('api', 's3', '2006-03-01'); // $b handles this.
* $data = $c('api', 'invalid', '2014-12-15'); // Neither handles this.
*/
class ApiProvider
{
/** @var array A map of public API type names to their file suffix. */
private static $typeMap = [
'api' => 'api-2',
'paginator' => 'paginators-1',
'waiter' => 'waiters-2',
'docs' => 'docs-2',
];
/** @var array API manifest */
private $manifest;
/** @var string The directory containing service models. */
private $modelsDir;
/**
* Resolves an API provider and ensures a non-null return value.
*
* @param callable $provider Provider function to invoke.
* @param string $type Type of data ('api', 'waiter', 'paginator').
* @param string $service Service name.
* @param string $version API version.
*
* @return array
* @throws UnresolvedApiException
*/
public static function resolve(callable $provider, $type, $service, $version)
{
// Execute the provider and return the result, if there is one.
$result = $provider($type, $service, $version);
if (is_array($result)) {
if (!isset($result['metadata']['serviceIdentifier'])) {
$result['metadata']['serviceIdentifier'] = $service;
}
return $result;
}
// Throw an exception with a message depending on the inputs.
if (!isset(self::$typeMap[$type])) {
$msg = "The type must be one of: " . implode(', ', self::$typeMap);
} elseif ($service) {
$msg = "The {$service} service does not have version: {$version}.";
} else {
$msg = "You must specify a service name to retrieve its API data.";
}
throw new UnresolvedApiException($msg);
}
/**
* Default SDK API provider.
*
* This provider loads pre-built manifest data from the `data` directory.
*
* @return self
*/
public static function defaultProvider()
{
return new self(__DIR__ . '/../data', \Aws\manifest());
}
/**
* Loads API data after resolving the version to the latest, compatible,
* available version based on the provided manifest data.
*
* Manifest data is essentially an associative array of service names to
* associative arrays of API version aliases.
*
* [
* ...
* 'ec2' => [
* 'latest' => '2014-10-01',
* '2014-10-01' => '2014-10-01',
* '2014-09-01' => '2014-10-01',
* '2014-06-15' => '2014-10-01',
* ...
* ],
* 'ecs' => [...],
* 'elasticache' => [...],
* ...
* ]
*
* @param string $dir Directory containing service models.
* @param array $manifest The API version manifest data.
*
* @return self
*/
public static function manifest($dir, array $manifest)
{
return new self($dir, $manifest);
}
/**
* Loads API data from the specified directory.
*
* If "latest" is specified as the version, this provider must glob the
* directory to find which is the latest available version.
*
* @param string $dir Directory containing service models.
*
* @return self
* @throws \InvalidArgumentException if the provided `$dir` is invalid.
*/
public static function filesystem($dir)
{
return new self($dir);
}
/**
* Retrieves a list of valid versions for the specified service.
*
* @param string $service Service name
*
* @return array
*/
public function getVersions($service)
{
if (!isset($this->manifest)) {
$this->buildVersionsList($service);
}
if (!isset($this->manifest[$service]['versions'])) {
return [];
}
return array_values(array_unique($this->manifest[$service]['versions']));
}
/**
* Execute the the provider.
*
* @param string $type Type of data ('api', 'waiter', 'paginator').
* @param string $service Service name.
* @param string $version API version.
*
* @return array|null
*/
public function __invoke($type, $service, $version)
{
// Resolve the type or return null.
if (isset(self::$typeMap[$type])) {
$type = self::$typeMap[$type];
} else {
return null;
}
// Resolve the version or return null.
if (!isset($this->manifest)) {
$this->buildVersionsList($service);
}
if (!isset($this->manifest[$service]['versions'][$version])) {
return null;
}
$version = $this->manifest[$service]['versions'][$version];
$path = "{$this->modelsDir}/{$service}/{$version}/{$type}.json";
try {
return \Aws\load_compiled_json($path);
} catch (\InvalidArgumentException $e) {
return null;
}
}
/**
* @param string $modelsDir Directory containing service models.
* @param array $manifest The API version manifest data.
*/
private function __construct($modelsDir, array $manifest = null)
{
$this->manifest = $manifest;
$this->modelsDir = rtrim($modelsDir, '/');
if (!is_dir($this->modelsDir)) {
throw new \InvalidArgumentException(
"The specified models directory, {$modelsDir}, was not found."
);
}
}
/**
* Build the versions list for the specified service by globbing the dir.
*/
private function buildVersionsList($service)
{
$dir = "{$this->modelsDir}/{$service}/";
if (!is_dir($dir)) {
return;
}
// Get versions, remove . and .., and sort in descending order.
$results = array_diff(scandir($dir, SCANDIR_SORT_DESCENDING), ['..', '.']);
if (!$results) {
$this->manifest[$service] = ['versions' => []];
} else {
$this->manifest[$service] = [
'versions' => [
'latest' => $results[0]
]
];
$this->manifest[$service]['versions'] += array_combine($results, $results);
}
}
}

@ -1,41 +0,0 @@
<?php
namespace Aws\Api;
/**
* DateTime overrides that make DateTime work more seamlessly as a string,
* with JSON documents, and with JMESPath.
*/
class DateTimeResult extends \DateTime implements \JsonSerializable
{
/**
* Create a new DateTimeResult from a unix timestamp.
*
* @param $unixTimestamp
*
* @return DateTimeResult
*/
public static function fromEpoch($unixTimestamp)
{
return new self(gmdate('c', $unixTimestamp));
}
/**
* Serialize the DateTimeResult as an ISO 8601 date string.
*
* @return string
*/
public function __toString()
{
return $this->format('c');
}
/**
* Serialize the date as an ISO 8601 date when serializing as JSON.
*
* @return mixed|string
*/
public function jsonSerialize()
{
return (string) $this;
}
}

@ -1,128 +0,0 @@
<?php
namespace Aws\Api;
/**
* Encapsulates the documentation strings for a given service-version and
* provides methods for extracting the desired parts related to a service,
* operation, error, or shape (i.e., parameter).
*/
class DocModel
{
/** @var array */
private $docs;
/**
* @param array $docs
*
* @throws \RuntimeException
*/
public function __construct(array $docs)
{
if (!extension_loaded('tidy')) {
throw new \RuntimeException('The "tidy" PHP extension is required.');
}
$this->docs = $docs;
}
/**
* Convert the doc model to an array.
*
* @return array
*/
public function toArray()
{
return $this->docs;
}
/**
* Retrieves documentation about the service.
*
* @return null|string
*/
public function getServiceDocs()
{
return isset($this->docs['service']) ? $this->docs['service'] : null;
}
/**
* Retrieves documentation about an operation.
*
* @param string $operation Name of the operation
*
* @return null|string
*/
public function getOperationDocs($operation)
{
return isset($this->docs['operations'][$operation])
? $this->docs['operations'][$operation]
: null;
}
/**
* Retrieves documentation about an error.
*
* @param string $error Name of the error
*
* @return null|string
*/
public function getErrorDocs($error)
{
return isset($this->docs['shapes'][$error]['base'])
? $this->docs['shapes'][$error]['base']
: null;
}
/**
* Retrieves documentation about a shape, specific to the context.
*
* @param string $shapeName Name of the shape.
* @param string $parentName Name of the parent/context shape.
* @param string $ref Name used by the context to reference the shape.
*
* @return null|string
*/
public function getShapeDocs($shapeName, $parentName, $ref)
{
if (!isset($this->docs['shapes'][$shapeName])) {
return '';
}
$result = '';
$d = $this->docs['shapes'][$shapeName];
if (isset($d['refs']["{$parentName}\$${ref}"])) {
$result = $d['refs']["{$parentName}\$${ref}"];
} elseif (isset($d['base'])) {
$result = $d['base'];
}
if (isset($d['append'])) {
$result .= $d['append'];
}
return $this->clean($result);
}
private function clean($content)
{
if (!$content) {
return '';
}
$tidy = new \Tidy();
$tidy->parseString($content, [
'indent' => true,
'doctype' => 'omit',
'output-html' => true,
'show-body-only' => true,
'drop-empty-paras' => true,
'drop-font-tags' => true,
'drop-proprietary-attributes' => true,
'hide-comments' => true,
'logical-emphasis' => true
]);
$tidy->cleanRepair();
return (string) $content;
}
}

@ -1,26 +0,0 @@
<?php
namespace Aws\Api\ErrorParser;
use Aws\Api\Parser\PayloadParserTrait;
use Psr\Http\Message\ResponseInterface;
/**
* Provides basic JSON error parsing functionality.
*/
trait JsonParserTrait
{
use PayloadParserTrait;
private function genericHandler(ResponseInterface $response)
{
$code = (string) $response->getStatusCode();
return [
'request_id' => (string) $response->getHeaderLine('x-amzn-requestid'),
'code' => null,
'message' => null,
'type' => $code[0] == '4' ? 'client' : 'server',
'parsed' => $this->parseJson($response->getBody(), $response)
];
}
}

@ -1,31 +0,0 @@
<?php
namespace Aws\Api\ErrorParser;
use Psr\Http\Message\ResponseInterface;
/**
* Parsers JSON-RPC errors.
*/
class JsonRpcErrorParser
{
use JsonParserTrait;
public function __invoke(ResponseInterface $response)
{
$data = $this->genericHandler($response);
// Make the casing consistent across services.
if ($data['parsed']) {
$data['parsed'] = array_change_key_case($data['parsed']);
}
if (isset($data['parsed']['__type'])) {
$parts = explode('#', $data['parsed']['__type']);
$data['code'] = isset($parts[1]) ? $parts[1] : $parts[0];
$data['message'] = isset($data['parsed']['message'])
? $data['parsed']['message']
: null;
}
return $data;
}
}

@ -1,35 +0,0 @@
<?php
namespace Aws\Api\ErrorParser;
use Psr\Http\Message\ResponseInterface;
/**
* Parses JSON-REST errors.
*/
class RestJsonErrorParser
{
use JsonParserTrait;
public function __invoke(ResponseInterface $response)
{
$data = $this->genericHandler($response);
// Merge in error data from the JSON body
if ($json = $data['parsed']) {
$data = array_replace($data, $json);
}
// Correct error type from services like Amazon Glacier
if (!empty($data['type'])) {
$data['type'] = strtolower($data['type']);
}
// Retrieve the error code from services like Amazon Elastic Transcoder
if ($code = $response->getHeaderLine('x-amzn-errortype')) {
$colon = strpos($code, ':');
$data['code'] = $colon ? substr($code, 0, $colon) : $code;
}
return $data;
}
}

@ -1,82 +0,0 @@
<?php
namespace Aws\Api\ErrorParser;
use Aws\Api\Parser\PayloadParserTrait;
use Psr\Http\Message\ResponseInterface;
/**
* Parses XML errors.
*/
class XmlErrorParser
{
use PayloadParserTrait;
public function __invoke(ResponseInterface $response)
{
$code = (string) $response->getStatusCode();
$data = [
'type' => $code[0] == '4' ? 'client' : 'server',
'request_id' => null,
'code' => null,
'message' => null,
'parsed' => null
];
$body = $response->getBody();
if ($body->getSize() > 0) {
$this->parseBody($this->parseXml($body, $response), $data);
} else {
$this->parseHeaders($response, $data);
}
return $data;
}
private function parseHeaders(ResponseInterface $response, array &$data)
{
if ($response->getStatusCode() == '404') {
$data['code'] = 'NotFound';
}
$data['message'] = $response->getStatusCode() . ' '
. $response->getReasonPhrase();
if ($requestId = $response->getHeaderLine('x-amz-request-id')) {
$data['request_id'] = $requestId;
$data['message'] .= " (Request-ID: $requestId)";
}
}
private function parseBody(\SimpleXMLElement $body, array &$data)
{
$data['parsed'] = $body;
$namespaces = $body->getDocNamespaces();
if (!isset($namespaces[''])) {
$prefix = '';
} else {
// Account for the default namespace being defined and PHP not
// being able to handle it :(.
$body->registerXPathNamespace('ns', $namespaces['']);
$prefix = 'ns:';
}
if ($tempXml = $body->xpath("//{$prefix}Code[1]")) {
$data['code'] = (string) $tempXml[0];
}
if ($tempXml = $body->xpath("//{$prefix}Message[1]")) {
$data['message'] = (string) $tempXml[0];
}
$tempXml = $body->xpath("//{$prefix}RequestId[1]");
if (empty($tempXml)) {
$tempXml = $body->xpath("//{$prefix}RequestID[1]");
}
if (isset($tempXml[0])) {
$data['request_id'] = (string) $tempXml[0];
}
}
}

@ -1,35 +0,0 @@
<?php
namespace Aws\Api;
/**
* Represents a list shape.
*/
class ListShape extends Shape
{
private $member;
public function __construct(array $definition, ShapeMap $shapeMap)
{
$definition['type'] = 'list';
parent::__construct($definition, $shapeMap);
}
/**
* @return Shape
* @throws \RuntimeException if no member is specified
*/
public function getMember()
{
if (!$this->member) {
if (!isset($this->definition['member'])) {
throw new \RuntimeException('No member attribute specified');
}
$this->member = Shape::create(
$this->definition['member'],
$this->shapeMap
);
}
return $this->member;
}
}

@ -1,54 +0,0 @@
<?php
namespace Aws\Api;
/**
* Represents a map shape.
*/
class MapShape extends Shape
{
/** @var Shape */
private $value;
/** @var Shape */
private $key;
public function __construct(array $definition, ShapeMap $shapeMap)
{
$definition['type'] = 'map';
parent::__construct($definition, $shapeMap);
}
/**
* @return Shape
* @throws \RuntimeException if no value is specified
*/
public function getValue()
{
if (!$this->value) {
if (!isset($this->definition['value'])) {
throw new \RuntimeException('No value specified');
}
$this->value = Shape::create(
$this->definition['value'],
$this->shapeMap
);
}
return $this->value;
}
/**
* @return Shape
*/
public function getKey()
{
if (!$this->key) {
$this->key = isset($this->definition['key'])
? Shape::create($this->definition['key'], $this->shapeMap)
: new Shape(['type' => 'string'], $this->shapeMap);
}
return $this->key;
}
}

@ -1,97 +0,0 @@
<?php
namespace Aws\Api;
/**
* Represents an API operation.
*/
class Operation extends AbstractModel
{
private $input;
private $output;
private $errors;
public function __construct(array $definition, ShapeMap $shapeMap)
{
$definition['type'] = 'structure';
if (!isset($definition['http']['method'])) {
$definition['http']['method'] = 'POST';
}
if (!isset($definition['http']['requestUri'])) {
$definition['http']['requestUri'] = '/';
}
parent::__construct($definition, $shapeMap);
}
/**
* Returns an associative array of the HTTP attribute of the operation:
*
* - method: HTTP method of the operation
* - requestUri: URI of the request (can include URI template placeholders)
*
* @return array
*/
public function getHttp()
{
return $this->definition['http'];
}
/**
* Get the input shape of the operation.
*
* @return StructureShape
*/
public function getInput()
{
if (!$this->input) {
if ($input = $this['input']) {
$this->input = $this->shapeFor($input);
} else {
$this->input = new StructureShape([], $this->shapeMap);
}
}
return $this->input;
}
/**
* Get the output shape of the operation.
*
* @return StructureShape
*/
public function getOutput()
{
if (!$this->output) {
if ($output = $this['output']) {
$this->output = $this->shapeFor($output);
} else {
$this->output = new StructureShape([], $this->shapeMap);
}
}
return $this->output;
}
/**
* Get an array of operation error shapes.
*
* @return Shape[]
*/
public function getErrors()
{
if ($this->errors === null) {
if ($errors = $this['errors']) {
foreach ($errors as $key => $error) {
$errors[$key] = $this->shapeFor($error);
}
$this->errors = $errors;
} else {
$this->errors = [];
}
}
return $this->errors;
}
}

@ -1,46 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\Service;
use Aws\Api\StructureShape;
use Aws\CommandInterface;
use Aws\ResultInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
/**
* @internal
*/
abstract class AbstractParser
{
/** @var \Aws\Api\Service Representation of the service API*/
protected $api;
/** @var callable */
protected $parser;
/**
* @param Service $api Service description.
*/
public function __construct(Service $api)
{
$this->api = $api;
}
/**
* @param CommandInterface $command Command that was executed.
* @param ResponseInterface $response Response that was received.
*
* @return ResultInterface
*/
abstract public function __invoke(
CommandInterface $command,
ResponseInterface $response
);
abstract public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member,
$response
);
}

@ -1,173 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\DateTimeResult;
use Aws\Api\Shape;
use Aws\Api\StructureShape;
use Aws\Result;
use Aws\CommandInterface;
use Psr\Http\Message\ResponseInterface;
/**
* @internal
*/
abstract class AbstractRestParser extends AbstractParser
{
use PayloadParserTrait;
/**
* Parses a payload from a response.
*
* @param ResponseInterface $response Response to parse.
* @param StructureShape $member Member to parse
* @param array $result Result value
*
* @return mixed
*/
abstract protected function payload(
ResponseInterface $response,
StructureShape $member,
array &$result
);
public function __invoke(
CommandInterface $command,
ResponseInterface $response
) {
$output = $this->api->getOperation($command->getName())->getOutput();
$result = [];
if ($payload = $output['payload']) {
$this->extractPayload($payload, $output, $response, $result);
}
foreach ($output->getMembers() as $name => $member) {
switch ($member['location']) {
case 'header':
$this->extractHeader($name, $member, $response, $result);
break;
case 'headers':
$this->extractHeaders($name, $member, $response, $result);
break;
case 'statusCode':
$this->extractStatus($name, $response, $result);
break;
}
}
if (!$payload
&& $response->getBody()->getSize() > 0
&& count($output->getMembers()) > 0
) {
// if no payload was found, then parse the contents of the body
$this->payload($response, $output, $result);
}
return new Result($result);
}
private function extractPayload(
$payload,
StructureShape $output,
ResponseInterface $response,
array &$result
) {
$member = $output->getMember($payload);
if (!empty($member['eventstream'])) {
$result[$payload] = new EventParsingIterator(
$response->getBody(),
$member,
$this
);
} else if ($member instanceof StructureShape) {
// Structure members parse top-level data into a specific key.
$result[$payload] = [];
$this->payload($response, $member, $result[$payload]);
} else {
// Streaming data is just the stream from the response body.
$result[$payload] = $response->getBody();
}
}
/**
* Extract a single header from the response into the result.
*/
private function extractHeader(
$name,
Shape $shape,
ResponseInterface $response,
&$result
) {
$value = $response->getHeaderLine($shape['locationName'] ?: $name);
switch ($shape->getType()) {
case 'float':
case 'double':
$value = (float) $value;
break;
case 'long':
$value = (int) $value;
break;
case 'boolean':
$value = filter_var($value, FILTER_VALIDATE_BOOLEAN);
break;
case 'blob':
$value = base64_decode($value);
break;
case 'timestamp':
try {
if (!empty($shape['timestampFormat'])
&& $shape['timestampFormat'] === 'unixTimestamp') {
$value = DateTimeResult::fromEpoch($value);
}
$value = new DateTimeResult($value);
break;
} catch (\Exception $e) {
// If the value cannot be parsed, then do not add it to the
// output structure.
return;
}
case 'string':
if ($shape['jsonvalue']) {
$value = $this->parseJson(base64_decode($value), $response);
}
break;
}
$result[$name] = $value;
}
/**
* Extract a map of headers with an optional prefix from the response.
*/
private function extractHeaders(
$name,
Shape $shape,
ResponseInterface $response,
&$result
) {
// Check if the headers are prefixed by a location name
$result[$name] = [];
$prefix = $shape['locationName'];
$prefixLen = strlen($prefix);
foreach ($response->getHeaders() as $k => $values) {
if (!$prefixLen) {
$result[$name][$k] = implode(', ', $values);
} elseif (stripos($k, $prefix) === 0) {
$result[$name][substr($k, $prefixLen)] = implode(', ', $values);
}
}
}
/**
* Places the status code of the response into the result array.
*/
private function extractStatus(
$name,
ResponseInterface $response,
array &$result
) {
$result[$name] = (int) $response->getStatusCode();
}
}

@ -1,54 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\StructureShape;
use Aws\CommandInterface;
use Aws\Exception\AwsException;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
use GuzzleHttp\Psr7;
/**
* @internal Decorates a parser and validates the x-amz-crc32 header.
*/
class Crc32ValidatingParser extends AbstractParser
{
/**
* @param callable $parser Parser to wrap.
*/
public function __construct(callable $parser)
{
$this->parser = $parser;
}
public function __invoke(
CommandInterface $command,
ResponseInterface $response
) {
if ($expected = $response->getHeaderLine('x-amz-crc32')) {
$hash = hexdec(Psr7\hash($response->getBody(), 'crc32b'));
if ($expected != $hash) {
throw new AwsException(
"crc32 mismatch. Expected {$expected}, found {$hash}.",
$command,
[
'code' => 'ClientChecksumMismatch',
'connection_error' => true,
'response' => $response
]
);
}
}
$fn = $this->parser;
return $fn($command, $response);
}
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member,
$response
) {
return $this->parser->parseMemberFromStream($stream, $member, $response);
}
}

@ -1,335 +0,0 @@
<?php
namespace Aws\Api\Parser;
use \Iterator;
use Aws\Api\DateTimeResult;
use GuzzleHttp\Psr7;
use Psr\Http\Message\StreamInterface;
use Aws\Api\Parser\Exception\ParserException;
/**
* @internal Implements a decoder for a binary encoded event stream that will
* decode, validate, and provide individual events from the stream.
*/
class DecodingEventStreamIterator implements Iterator
{
const HEADERS = 'headers';
const PAYLOAD = 'payload';
const LENGTH_TOTAL = 'total_length';
const LENGTH_HEADERS = 'headers_length';
const CRC_PRELUDE = 'prelude_crc';
const BYTES_PRELUDE = 12;
const BYTES_TRAILING = 4;
private static $preludeFormat = [
self::LENGTH_TOTAL => 'decodeUint32',
self::LENGTH_HEADERS => 'decodeUint32',
self::CRC_PRELUDE => 'decodeUint32',
];
private static $lengthFormatMap = [
1 => 'decodeUint8',
2 => 'decodeUint16',
4 => 'decodeUint32',
8 => 'decodeUint64',
];
private static $headerTypeMap = [
0 => 'decodeBooleanTrue',
1 => 'decodeBooleanFalse',
2 => 'decodeInt8',
3 => 'decodeInt16',
4 => 'decodeInt32',
5 => 'decodeInt64',
6 => 'decodeBytes',
7 => 'decodeString',
8 => 'decodeTimestamp',
9 => 'decodeUuid',
];
/** @var StreamInterface Stream of eventstream shape to parse. */
private $stream;
/** @var array Currently parsed event. */
private $currentEvent;
/** @var int Current in-order event key. */
private $key;
/** @var resource|HashContext CRC32 hash context for event validation */
private $hashContext;
/** @var int $currentPosition */
private $currentPosition;
/**
* DecodingEventStreamIterator constructor.
*
* @param StreamInterface $stream
*/
public function __construct(StreamInterface $stream)
{
$this->stream = $stream;
$this->rewind();
}
private function parseHeaders($headerBytes)
{
$headers = [];
$bytesRead = 0;
while ($bytesRead < $headerBytes) {
list($key, $numBytes) = $this->decodeString(1);
$bytesRead += $numBytes;
list($type, $numBytes) = $this->decodeUint8();
$bytesRead += $numBytes;
$f = self::$headerTypeMap[$type];
list($value, $numBytes) = $this->{$f}();
$bytesRead += $numBytes;
if (isset($headers[$key])) {
throw new ParserException('Duplicate key in event headers.');
}
$headers[$key] = $value;
}
return [$headers, $bytesRead];
}
private function parsePrelude()
{
$prelude = [];
$bytesRead = 0;
$calculatedCrc = null;
foreach (self::$preludeFormat as $key => $decodeFunction) {
if ($key === self::CRC_PRELUDE) {
$hashCopy = hash_copy($this->hashContext);
$calculatedCrc = hash_final($this->hashContext, true);
$this->hashContext = $hashCopy;
}
list($value, $numBytes) = $this->{$decodeFunction}();
$bytesRead += $numBytes;
$prelude[$key] = $value;
}
if (unpack('N', $calculatedCrc)[1] !== $prelude[self::CRC_PRELUDE]) {
throw new ParserException('Prelude checksum mismatch.');
}
return [$prelude, $bytesRead];
}
private function parseEvent()
{
$event = [];
if ($this->stream->tell() < $this->stream->getSize()) {
$this->hashContext = hash_init('crc32b');
$bytesLeft = $this->stream->getSize() - $this->stream->tell();
list($prelude, $numBytes) = $this->parsePrelude();
if ($prelude[self::LENGTH_TOTAL] > $bytesLeft) {
throw new ParserException('Message length too long.');
}
$bytesLeft -= $numBytes;
if ($prelude[self::LENGTH_HEADERS] > $bytesLeft) {
throw new ParserException('Headers length too long.');
}
list(
$event[self::HEADERS],
$numBytes
) = $this->parseHeaders($prelude[self::LENGTH_HEADERS]);
$event[self::PAYLOAD] = Psr7\stream_for(
$this->readAndHashBytes(
$prelude[self::LENGTH_TOTAL] - self::BYTES_PRELUDE
- $numBytes - self::BYTES_TRAILING
)
);
$calculatedCrc = hash_final($this->hashContext, true);
$messageCrc = $this->stream->read(4);
if ($calculatedCrc !== $messageCrc) {
throw new ParserException('Message checksum mismatch.');
}
}
return $event;
}
// Iterator Functionality
/**
* @return array
*/
public function current()
{
return $this->currentEvent;
}
/**
* @return int
*/
public function key()
{
return $this->key;
}
public function next()
{
$this->currentPosition = $this->stream->tell();
if ($this->valid()) {
$this->key++;
$this->currentEvent = $this->parseEvent();
}
}
public function rewind()
{
$this->stream->rewind();
$this->key = 0;
$this->currentPosition = 0;
$this->currentEvent = $this->parseEvent();
}
/**
* @return bool
*/
public function valid()
{
return $this->currentPosition < $this->stream->getSize();
}
// Decoding Utilities
private function readAndHashBytes($num)
{
$bytes = $this->stream->read($num);
hash_update($this->hashContext, $bytes);
return $bytes;
}
private function decodeBooleanTrue()
{
return [true, 0];
}
private function decodeBooleanFalse()
{
return [false, 0];
}
private function uintToInt($val, $size)
{
$signedCap = pow(2, $size - 1);
if ($val > $signedCap) {
$val -= (2 * $signedCap);
}
return $val;
}
private function decodeInt8()
{
$val = (int)unpack('C', $this->readAndHashBytes(1))[1];
return [$this->uintToInt($val, 8), 1];
}
private function decodeUint8()
{
return [unpack('C', $this->readAndHashBytes(1))[1], 1];
}
private function decodeInt16()
{
$val = (int)unpack('n', $this->readAndHashBytes(2))[1];
return [$this->uintToInt($val, 16), 2];
}
private function decodeUint16()
{
return [unpack('n', $this->readAndHashBytes(2))[1], 2];
}
private function decodeInt32()
{
$val = (int)unpack('N', $this->readAndHashBytes(4))[1];
return [$this->uintToInt($val, 32), 4];
}
private function decodeUint32()
{
return [unpack('N', $this->readAndHashBytes(4))[1], 4];
}
private function decodeInt64()
{
$val = $this->unpackInt64($this->readAndHashBytes(8))[1];
return [$this->uintToInt($val, 64), 8];
}
private function decodeUint64()
{
return [$this->unpackInt64($this->readAndHashBytes(8))[1], 8];
}
private function unpackInt64($bytes)
{
if (version_compare(PHP_VERSION, '5.6.3', '<')) {
$d = unpack('N2', $bytes);
return [1 => $d[1] << 32 | $d[2]];
}
return unpack('J', $bytes);
}
private function decodeBytes($lengthBytes=2)
{
if (!isset(self::$lengthFormatMap[$lengthBytes])) {
throw new ParserException('Undefined variable length format.');
}
$f = self::$lengthFormatMap[$lengthBytes];
list($len, $bytes) = $this->{$f}();
return [$this->readAndHashBytes($len), $len + $bytes];
}
private function decodeString($lengthBytes=2)
{
if (!isset(self::$lengthFormatMap[$lengthBytes])) {
throw new ParserException('Undefined variable length format.');
}
$f = self::$lengthFormatMap[$lengthBytes];
list($len, $bytes) = $this->{$f}();
return [$this->readAndHashBytes($len), $len + $bytes];
}
private function decodeTimestamp()
{
list($val, $bytes) = $this->decodeInt64();
return [
DateTimeResult::createFromFormat('U.u', $val / 1000),
$bytes
];
}
private function decodeUuid()
{
$val = unpack('H32', $this->readAndHashBytes(16))[1];
return [
substr($val, 0, 8) . '-'
. substr($val, 8, 4) . '-'
. substr($val, 12, 4) . '-'
. substr($val, 16, 4) . '-'
. substr($val, 20, 12),
16
];
}
}

@ -1,107 +0,0 @@
<?php
namespace Aws\Api\Parser;
use \Iterator;
use Aws\Exception\EventStreamDataException;
use Aws\Api\Parser\Exception\ParserException;
use Aws\Api\StructureShape;
use Psr\Http\Message\StreamInterface;
/**
* @internal Implements a decoder for a binary encoded event stream that will
* decode, validate, and provide individual events from the stream.
*/
class EventParsingIterator implements Iterator
{
/** @var StreamInterface */
private $decodingIterator;
/** @var StructureShape */
private $shape;
/** @var AbstractParser */
private $parser;
public function __construct(
StreamInterface $stream,
StructureShape $shape,
AbstractParser $parser
) {
$this->decodingIterator = new DecodingEventStreamIterator($stream);
$this->shape = $shape;
$this->parser = $parser;
}
public function current()
{
return $this->parseEvent($this->decodingIterator->current());
}
public function key()
{
return $this->decodingIterator->key();
}
public function next()
{
$this->decodingIterator->next();
}
public function rewind()
{
$this->decodingIterator->rewind();
}
public function valid()
{
return $this->decodingIterator->valid();
}
private function parseEvent(array $event)
{
if (!empty($event['headers'][':message-type'])) {
if ($event['headers'][':message-type'] === 'error') {
return $this->parseError($event);
}
if ($event['headers'][':message-type'] !== 'event') {
throw new ParserException('Failed to parse unknown message type.');
}
}
if (empty($event['headers'][':event-type'])) {
throw new ParserException('Failed to parse without event type.');
}
$eventShape = $this->shape->getMember($event['headers'][':event-type']);
$parsedEvent = [];
foreach ($eventShape['members'] as $shape => $details) {
if (!empty($details['eventpayload'])) {
$payloadShape = $eventShape->getMember($shape);
if ($payloadShape['type'] === 'blob') {
$parsedEvent[$shape] = $event['payload'];
} else {
$parsedEvent[$shape] = $this->parser->parseMemberFromStream(
$event['payload'],
$payloadShape,
null
);
}
} else {
$parsedEvent[$shape] = $event['headers'][$shape];
}
}
return [
$event['headers'][':event-type'] => $parsedEvent
];
}
private function parseError(array $event)
{
throw new EventStreamDataException(
$event['headers'][':error-code'],
$event['headers'][':error-message']
);
}
}

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

@ -1,62 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\DateTimeResult;
use Aws\Api\Shape;
/**
* @internal Implements standard JSON parsing.
*/
class JsonParser
{
public function parse(Shape $shape, $value)
{
if ($value === null) {
return $value;
}
switch ($shape['type']) {
case 'structure':
$target = [];
foreach ($shape->getMembers() as $name => $member) {
$locationName = $member['locationName'] ?: $name;
if (isset($value[$locationName])) {
$target[$name] = $this->parse($member, $value[$locationName]);
}
}
return $target;
case 'list':
$member = $shape->getMember();
$target = [];
foreach ($value as $v) {
$target[] = $this->parse($member, $v);
}
return $target;
case 'map':
$values = $shape->getValue();
$target = [];
foreach ($value as $k => $v) {
$target[$k] = $this->parse($values, $v);
}
return $target;
case 'timestamp':
if (!empty($shape['timestampFormat'])
&& $shape['timestampFormat'] !== 'unixTimestamp') {
return new DateTimeResult($value);
}
// The Unix epoch (or Unix time or POSIX time or Unix
// timestamp) is the number of seconds that have elapsed since
// January 1, 1970 (midnight UTC/GMT).
return DateTimeResult::fromEpoch($value);
case 'blob':
return base64_decode($value);
default:
return $value;
}
}
}

@ -1,51 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\StructureShape;
use Aws\Api\Service;
use Aws\Result;
use Aws\CommandInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
/**
* @internal Implements JSON-RPC parsing (e.g., DynamoDB)
*/
class JsonRpcParser extends AbstractParser
{
use PayloadParserTrait;
/**
* @param Service $api Service description
* @param JsonParser $parser JSON body builder
*/
public function __construct(Service $api, JsonParser $parser = null)
{
parent::__construct($api);
$this->parser = $parser ?: new JsonParser();
}
public function __invoke(
CommandInterface $command,
ResponseInterface $response
) {
$operation = $this->api->getOperation($command->getName());
$result = null === $operation['output']
? null
: $this->parseMemberFromStream(
$response->getBody(),
$operation->getOutput(),
$response
);
return new Result($result ?: []);
}
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member,
$response
) {
return $this->parser->parse($member, $this->parseJson($stream, $response));
}
}

@ -1,61 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\Parser\Exception\ParserException;
use Psr\Http\Message\ResponseInterface;
trait PayloadParserTrait
{
/**
* @param string $json
*
* @throws ParserException
*
* @return array
*/
private function parseJson($json, $response)
{
$jsonPayload = json_decode($json, true);
if (JSON_ERROR_NONE !== json_last_error()) {
throw new ParserException(
'Error parsing JSON: ' . json_last_error_msg(),
0,
null,
['response' => $response]
);
}
return $jsonPayload;
}
/**
* @param string $xml
*
* @throws ParserException
*
* @return \SimpleXMLElement
*/
private function parseXml($xml, $response)
{
$priorSetting = libxml_use_internal_errors(true);
try {
libxml_clear_errors();
$xmlPayload = new \SimpleXMLElement($xml);
if ($error = libxml_get_last_error()) {
throw new \RuntimeException($error->message);
}
} catch (\Exception $e) {
throw new ParserException(
"Error parsing XML: {$e->getMessage()}",
0,
$e,
['response' => $response]
);
} finally {
libxml_use_internal_errors($priorSetting);
}
return $xmlPayload;
}
}

@ -1,60 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\Service;
use Aws\Api\StructureShape;
use Aws\Result;
use Aws\CommandInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
/**
* @internal Parses query (XML) responses (e.g., EC2, SQS, and many others)
*/
class QueryParser extends AbstractParser
{
use PayloadParserTrait;
/** @var bool */
private $honorResultWrapper;
/**
* @param Service $api Service description
* @param XmlParser $xmlParser Optional XML parser
* @param bool $honorResultWrapper Set to false to disable the peeling
* back of result wrappers from the
* output structure.
*/
public function __construct(
Service $api,
XmlParser $xmlParser = null,
$honorResultWrapper = true
) {
parent::__construct($api);
$this->parser = $xmlParser ?: new XmlParser();
$this->honorResultWrapper = $honorResultWrapper;
}
public function __invoke(
CommandInterface $command,
ResponseInterface $response
) {
$output = $this->api->getOperation($command->getName())->getOutput();
$xml = $this->parseXml($response->getBody(), $response);
if ($this->honorResultWrapper && $output['resultWrapper']) {
$xml = $xml->{$output['resultWrapper']};
}
return new Result($this->parser->parse($output, $xml));
}
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member,
$response
) {
$xml = $this->parseXml($stream, $response);
return $this->parser->parse($member, $xml);
}
}

@ -1,49 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\Service;
use Aws\Api\StructureShape;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
/**
* @internal Implements REST-JSON parsing (e.g., Glacier, Elastic Transcoder)
*/
class RestJsonParser extends AbstractRestParser
{
use PayloadParserTrait;
/**
* @param Service $api Service description
* @param JsonParser $parser JSON body builder
*/
public function __construct(Service $api, JsonParser $parser = null)
{
parent::__construct($api);
$this->parser = $parser ?: new JsonParser();
}
protected function payload(
ResponseInterface $response,
StructureShape $member,
array &$result
) {
$jsonBody = $this->parseJson($response->getBody(), $response);
if ($jsonBody) {
$result += $this->parser->parse($member, $jsonBody);
}
}
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member,
$response
) {
$jsonBody = $this->parseJson($stream, $response);
if ($jsonBody) {
return $this->parser->parse($member, $jsonBody);
}
return [];
}
}

@ -1,42 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\StructureShape;
use Aws\Api\Service;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\StreamInterface;
/**
* @internal Implements REST-XML parsing (e.g., S3, CloudFront, etc...)
*/
class RestXmlParser extends AbstractRestParser
{
use PayloadParserTrait;
/**
* @param Service $api Service description
* @param XmlParser $parser XML body parser
*/
public function __construct(Service $api, XmlParser $parser = null)
{
parent::__construct($api);
$this->parser = $parser ?: new XmlParser();
}
protected function payload(
ResponseInterface $response,
StructureShape $member,
array &$result
) {
$result += $this->parseMemberFromStream($response->getBody(), $member, $response);
}
public function parseMemberFromStream(
StreamInterface $stream,
StructureShape $member,
$response
) {
$xml = $this->parseXml($stream, $response);
return $this->parser->parse($member, $xml);
}
}

@ -1,138 +0,0 @@
<?php
namespace Aws\Api\Parser;
use Aws\Api\DateTimeResult;
use Aws\Api\ListShape;
use Aws\Api\MapShape;
use Aws\Api\Shape;
use Aws\Api\StructureShape;
/**
* @internal Implements standard XML parsing for REST-XML and Query protocols.
*/
class XmlParser
{
public function parse(StructureShape $shape, \SimpleXMLElement $value)
{
return $this->dispatch($shape, $value);
}
private function dispatch($shape, \SimpleXMLElement $value)
{
static $methods = [
'structure' => 'parse_structure',
'list' => 'parse_list',
'map' => 'parse_map',
'blob' => 'parse_blob',
'boolean' => 'parse_boolean',
'integer' => 'parse_integer',
'float' => 'parse_float',
'double' => 'parse_float',
'timestamp' => 'parse_timestamp',
];
$type = $shape['type'];
if (isset($methods[$type])) {
return $this->{$methods[$type]}($shape, $value);
}
return (string) $value;
}
private function parse_structure(
StructureShape $shape,
\SimpleXMLElement $value
) {
$target = [];
foreach ($shape->getMembers() as $name => $member) {
// Extract the name of the XML node
$node = $this->memberKey($member, $name);
if (isset($value->{$node})) {
$target[$name] = $this->dispatch($member, $value->{$node});
}
}
return $target;
}
private function memberKey(Shape $shape, $name)
{
if (null !== $shape['locationName']) {
return $shape['locationName'];
}
if ($shape instanceof ListShape && $shape['flattened']) {
return $shape->getMember()['locationName'] ?: $name;
}
return $name;
}
private function parse_list(ListShape $shape, \SimpleXMLElement $value)
{
$target = [];
$member = $shape->getMember();
if (!$shape['flattened']) {
$value = $value->{$member['locationName'] ?: 'member'};
}
foreach ($value as $v) {
$target[] = $this->dispatch($member, $v);
}
return $target;
}
private function parse_map(MapShape $shape, \SimpleXMLElement $value)
{
$target = [];
if (!$shape['flattened']) {
$value = $value->entry;
}
$mapKey = $shape->getKey();
$mapValue = $shape->getValue();
$keyName = $shape->getKey()['locationName'] ?: 'key';
$valueName = $shape->getValue()['locationName'] ?: 'value';
foreach ($value as $node) {
$key = $this->dispatch($mapKey, $node->{$keyName});
$value = $this->dispatch($mapValue, $node->{$valueName});
$target[$key] = $value;
}
return $target;
}
private function parse_blob(Shape $shape, $value)
{
return base64_decode((string) $value);
}
private function parse_float(Shape $shape, $value)
{
return (float) (string) $value;
}
private function parse_integer(Shape $shape, $value)
{
return (int) (string) $value;
}
private function parse_boolean(Shape $shape, $value)
{
return $value == 'true';
}
private function parse_timestamp(Shape $shape, $value)
{
if (!empty($shape['timestampFormat'])
&& $shape['timestampFormat'] === 'unixTimestamp') {
return DateTimeResult::fromEpoch((string) $value);
}
return new DateTimeResult($value);
}
}

@ -1,40 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\Shape;
use Aws\Api\ListShape;
/**
* @internal
*/
class Ec2ParamBuilder extends QueryParamBuilder
{
protected function queryName(Shape $shape, $default = null)
{
return ($shape['queryName']
?: ucfirst($shape['locationName']))
?: $default;
}
protected function isFlat(Shape $shape)
{
return false;
}
protected function format_list(
ListShape $shape,
array $value,
$prefix,
&$query
) {
// Handle empty list serialization
if (!$value) {
$query[$prefix] = false;
} else {
$items = $shape->getMember();
foreach ($value as $k => $v) {
$this->format($items, $v, $prefix . '.' . ($k + 1), $query);
}
}
}
}

@ -1,96 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\Service;
use Aws\Api\Shape;
use Aws\Api\TimestampShape;
/**
* Formats the JSON body of a JSON-REST or JSON-RPC operation.
* @internal
*/
class JsonBody
{
private $api;
public function __construct(Service $api)
{
$this->api = $api;
}
/**
* Gets the JSON Content-Type header for a service API
*
* @param Service $service
*
* @return string
*/
public static function getContentType(Service $service)
{
return 'application/x-amz-json-'
. number_format($service->getMetadata('jsonVersion'), 1);
}
/**
* Builds the JSON body based on an array of arguments.
*
* @param Shape $shape Operation being constructed
* @param array $args Associative array of arguments
*
* @return string
*/
public function build(Shape $shape, array $args)
{
$result = json_encode($this->format($shape, $args));
return $result == '[]' ? '{}' : $result;
}
private function format(Shape $shape, $value)
{
switch ($shape['type']) {
case 'structure':
$data = [];
foreach ($value as $k => $v) {
if ($v !== null && $shape->hasMember($k)) {
$valueShape = $shape->getMember($k);
$data[$valueShape['locationName'] ?: $k]
= $this->format($valueShape, $v);
}
}
if (empty($data)) {
return new \stdClass;
}
return $data;
case 'list':
$items = $shape->getMember();
foreach ($value as $k => $v) {
$value[$k] = $this->format($items, $v);
}
return $value;
case 'map':
if (empty($value)) {
return new \stdClass;
}
$values = $shape->getValue();
foreach ($value as $k => $v) {
$value[$k] = $this->format($values, $v);
}
return $value;
case 'blob':
return base64_encode($value);
case 'timestamp':
$timestampFormat = !empty($shape['timestampFormat'])
? $shape['timestampFormat']
: 'unixTimestamp';
return TimestampShape::format($value, $timestampFormat);
default:
return $value;
}
}
}

@ -1,69 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\Service;
use Aws\CommandInterface;
use GuzzleHttp\Psr7\Request;
use Psr\Http\Message\RequestInterface;
/**
* Prepares a JSON-RPC request for transfer.
* @internal
*/
class JsonRpcSerializer
{
/** @var JsonBody */
private $jsonFormatter;
/** @var string */
private $endpoint;
/** @var Service */
private $api;
/** @var string */
private $contentType;
/**
* @param Service $api Service description
* @param string $endpoint Endpoint to connect to
* @param JsonBody $jsonFormatter Optional JSON formatter to use
*/
public function __construct(
Service $api,
$endpoint,
JsonBody $jsonFormatter = null
) {
$this->endpoint = $endpoint;
$this->api = $api;
$this->jsonFormatter = $jsonFormatter ?: new JsonBody($this->api);
$this->contentType = JsonBody::getContentType($api);
}
/**
* When invoked with an AWS command, returns a serialization array
* containing "method", "uri", "headers", and "body" key value pairs.
*
* @param CommandInterface $command
*
* @return RequestInterface
*/
public function __invoke(CommandInterface $command)
{
$name = $command->getName();
$operation = $this->api->getOperation($name);
return new Request(
$operation['http']['method'],
$this->endpoint,
[
'X-Amz-Target' => $this->api->getMetadata('targetPrefix') . '.' . $name,
'Content-Type' => $this->contentType
],
$this->jsonFormatter->build(
$operation->getInput(),
$command->toArray()
)
);
}
}

@ -1,157 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\StructureShape;
use Aws\Api\ListShape;
use Aws\Api\MapShape;
use Aws\Api\Shape;
use Aws\Api\TimestampShape;
/**
* @internal
*/
class QueryParamBuilder
{
private $methods;
protected function queryName(Shape $shape, $default = null)
{
if (null !== $shape['queryName']) {
return $shape['queryName'];
}
if (null !== $shape['locationName']) {
return $shape['locationName'];
}
if ($this->isFlat($shape) && !empty($shape['member']['locationName'])) {
return $shape['member']['locationName'];
}
return $default;
}
protected function isFlat(Shape $shape)
{
return $shape['flattened'] === true;
}
public function __invoke(StructureShape $shape, array $params)
{
if (!$this->methods) {
$this->methods = array_fill_keys(get_class_methods($this), true);
}
$query = [];
$this->format_structure($shape, $params, '', $query);
return $query;
}
protected function format(Shape $shape, $value, $prefix, array &$query)
{
$type = 'format_' . $shape['type'];
if (isset($this->methods[$type])) {
$this->{$type}($shape, $value, $prefix, $query);
} else {
$query[$prefix] = (string) $value;
}
}
protected function format_structure(
StructureShape $shape,
array $value,
$prefix,
&$query
) {
if ($prefix) {
$prefix .= '.';
}
foreach ($value as $k => $v) {
if ($shape->hasMember($k)) {
$member = $shape->getMember($k);
$this->format(
$member,
$v,
$prefix . $this->queryName($member, $k),
$query
);
}
}
}
protected function format_list(
ListShape $shape,
array $value,
$prefix,
&$query
) {
// Handle empty list serialization
if (!$value) {
$query[$prefix] = '';
return;
}
$items = $shape->getMember();
if (!$this->isFlat($shape)) {
$locationName = $shape->getMember()['locationName'] ?: 'member';
$prefix .= ".$locationName";
} elseif ($name = $this->queryName($items)) {
$parts = explode('.', $prefix);
$parts[count($parts) - 1] = $name;
$prefix = implode('.', $parts);
}
foreach ($value as $k => $v) {
$this->format($items, $v, $prefix . '.' . ($k + 1), $query);
}
}
protected function format_map(
MapShape $shape,
array $value,
$prefix,
array &$query
) {
$vals = $shape->getValue();
$keys = $shape->getKey();
if (!$this->isFlat($shape)) {
$prefix .= '.entry';
}
$i = 0;
$keyName = '%s.%d.' . $this->queryName($keys, 'key');
$valueName = '%s.%s.' . $this->queryName($vals, 'value');
foreach ($value as $k => $v) {
$i++;
$this->format($keys, $k, sprintf($keyName, $prefix, $i), $query);
$this->format($vals, $v, sprintf($valueName, $prefix, $i), $query);
}
}
protected function format_blob(Shape $shape, $value, $prefix, array &$query)
{
$query[$prefix] = base64_encode($value);
}
protected function format_timestamp(
TimestampShape $shape,
$value,
$prefix,
array &$query
) {
$timestampFormat = !empty($shape['timestampFormat'])
? $shape['timestampFormat']
: 'iso8601';
$query[$prefix] = TimestampShape::format($value, $timestampFormat);
}
protected function format_boolean(Shape $shape, $value, $prefix, array &$query)
{
$query[$prefix] = ($value) ? 'true' : 'false';
}
}

@ -1,69 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\Service;
use Aws\CommandInterface;
use GuzzleHttp\Psr7\Request;
use Psr\Http\Message\RequestInterface;
/**
* Serializes a query protocol request.
* @internal
*/
class QuerySerializer
{
private $endpoint;
private $api;
private $paramBuilder;
public function __construct(
Service $api,
$endpoint,
callable $paramBuilder = null
) {
$this->api = $api;
$this->endpoint = $endpoint;
$this->paramBuilder = $paramBuilder ?: new QueryParamBuilder();
}
/**
* When invoked with an AWS command, returns a serialization array
* containing "method", "uri", "headers", and "body" key value pairs.
*
* @param CommandInterface $command
*
* @return RequestInterface
*/
public function __invoke(CommandInterface $command)
{
$operation = $this->api->getOperation($command->getName());
$body = [
'Action' => $command->getName(),
'Version' => $this->api->getMetadata('apiVersion')
];
$params = $command->toArray();
// Only build up the parameters when there are parameters to build
if ($params) {
$body += call_user_func(
$this->paramBuilder,
$operation->getInput(),
$params
);
}
$body = http_build_query($body, null, '&', PHP_QUERY_RFC3986);
return new Request(
'POST',
$this->endpoint,
[
'Content-Length' => strlen($body),
'Content-Type' => 'application/x-www-form-urlencoded'
],
$body
);
}
}

@ -1,39 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\Service;
use Aws\Api\StructureShape;
/**
* Serializes requests for the REST-JSON protocol.
* @internal
*/
class RestJsonSerializer extends RestSerializer
{
/** @var JsonBody */
private $jsonFormatter;
/** @var string */
private $contentType;
/**
* @param Service $api Service API description
* @param string $endpoint Endpoint to connect to
* @param JsonBody $jsonFormatter Optional JSON formatter to use
*/
public function __construct(
Service $api,
$endpoint,
JsonBody $jsonFormatter = null
) {
parent::__construct($api, $endpoint);
$this->contentType = JsonBody::getContentType($api);
$this->jsonFormatter = $jsonFormatter ?: new JsonBody($api);
}
protected function payload(StructureShape $member, array $value, array &$opts)
{
$opts['headers']['Content-Type'] = $this->contentType;
$opts['body'] = (string) $this->jsonFormatter->build($member, $value);
}
}

@ -1,219 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\MapShape;
use Aws\Api\Service;
use Aws\Api\Operation;
use Aws\Api\Shape;
use Aws\Api\StructureShape;
use Aws\Api\TimestampShape;
use Aws\CommandInterface;
use GuzzleHttp\Psr7;
use GuzzleHttp\Psr7\Uri;
use GuzzleHttp\Psr7\UriResolver;
use Psr\Http\Message\RequestInterface;
/**
* Serializes HTTP locations like header, uri, payload, etc...
* @internal
*/
abstract class RestSerializer
{
/** @var Service */
private $api;
/** @var Psr7\Uri */
private $endpoint;
/**
* @param Service $api Service API description
* @param string $endpoint Endpoint to connect to
*/
public function __construct(Service $api, $endpoint)
{
$this->api = $api;
$this->endpoint = Psr7\uri_for($endpoint);
}
/**
* @param CommandInterface $command Command to serialized
*
* @return RequestInterface
*/
public function __invoke(CommandInterface $command)
{
$operation = $this->api->getOperation($command->getName());
$args = $command->toArray();
$opts = $this->serialize($operation, $args);
$uri = $this->buildEndpoint($operation, $args, $opts);
return new Psr7\Request(
$operation['http']['method'],
$uri,
isset($opts['headers']) ? $opts['headers'] : [],
isset($opts['body']) ? $opts['body'] : null
);
}
/**
* Modifies a hash of request options for a payload body.
*
* @param StructureShape $member Member to serialize
* @param array $value Value to serialize
* @param array $opts Request options to modify.
*/
abstract protected function payload(
StructureShape $member,
array $value,
array &$opts
);
private function serialize(Operation $operation, array $args)
{
$opts = [];
$input = $operation->getInput();
// Apply the payload trait if present
if ($payload = $input['payload']) {
$this->applyPayload($input, $payload, $args, $opts);
}
foreach ($args as $name => $value) {
if ($input->hasMember($name)) {
$member = $input->getMember($name);
$location = $member['location'];
if (!$payload && !$location) {
$bodyMembers[$name] = $value;
} elseif ($location == 'header') {
$this->applyHeader($name, $member, $value, $opts);
} elseif ($location == 'querystring') {
$this->applyQuery($name, $member, $value, $opts);
} elseif ($location == 'headers') {
$this->applyHeaderMap($name, $member, $value, $opts);
}
}
}
if (isset($bodyMembers)) {
$this->payload($operation->getInput(), $bodyMembers, $opts);
}
return $opts;
}
private function applyPayload(StructureShape $input, $name, array $args, array &$opts)
{
if (!isset($args[$name])) {
return;
}
$m = $input->getMember($name);
if ($m['streaming'] ||
($m['type'] == 'string' || $m['type'] == 'blob')
) {
// Streaming bodies or payloads that are strings are
// always just a stream of data.
$opts['body'] = Psr7\stream_for($args[$name]);
return;
}
$this->payload($m, $args[$name], $opts);
}
private function applyHeader($name, Shape $member, $value, array &$opts)
{
if ($member->getType() === 'timestamp') {
$timestampFormat = !empty($member['timestampFormat'])
? $member['timestampFormat']
: 'rfc822';
$value = TimestampShape::format($value, $timestampFormat);
}
if ($member['jsonvalue']) {
$value = json_encode($value);
if (empty($value) && JSON_ERROR_NONE !== json_last_error()) {
throw new \InvalidArgumentException('Unable to encode the provided value'
. ' with \'json_encode\'. ' . json_last_error_msg());
}
$value = base64_encode($value);
}
$opts['headers'][$member['locationName'] ?: $name] = $value;
}
/**
* Note: This is currently only present in the Amazon S3 model.
*/
private function applyHeaderMap($name, Shape $member, array $value, array &$opts)
{
$prefix = $member['locationName'];
foreach ($value as $k => $v) {
$opts['headers'][$prefix . $k] = $v;
}
}
private function applyQuery($name, Shape $member, $value, array &$opts)
{
if ($member instanceof MapShape) {
$opts['query'] = isset($opts['query']) && is_array($opts['query'])
? $opts['query'] + $value
: $value;
} elseif ($value !== null) {
$type = $member->getType();
if ($type === 'boolean') {
$value = $value ? 'true' : 'false';
} elseif ($type === 'timestamp') {
$timestampFormat = !empty($member['timestampFormat'])
? $member['timestampFormat']
: 'iso8601';
$value = TimestampShape::format($value, $timestampFormat);
}
$opts['query'][$member['locationName'] ?: $name] = $value;
}
}
private function buildEndpoint(Operation $operation, array $args, array $opts)
{
$varspecs = [];
// Create an associative array of varspecs used in expansions
foreach ($operation->getInput()->getMembers() as $name => $member) {
if ($member['location'] == 'uri') {
$varspecs[$member['locationName'] ?: $name] =
isset($args[$name])
? $args[$name]
: null;
}
}
$relative = preg_replace_callback(
'/\{([^\}]+)\}/',
function (array $matches) use ($varspecs) {
$isGreedy = substr($matches[1], -1, 1) == '+';
$k = $isGreedy ? substr($matches[1], 0, -1) : $matches[1];
if (!isset($varspecs[$k])) {
return '';
}
if ($isGreedy) {
return str_replace('%2F', '/', rawurlencode($varspecs[$k]));
}
return rawurlencode($varspecs[$k]);
},
$operation['http']['requestUri']
);
// Add the query string variables or appending to one if needed.
if (!empty($opts['query'])) {
$append = Psr7\build_query($opts['query']);
$relative .= strpos($relative, '?') ? "&{$append}" : "?$append";
}
// Expand path place holders using Amazon's slightly different URI
// template syntax.
return UriResolver::resolve($this->endpoint, new Uri($relative));
}
}

@ -1,34 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\StructureShape;
use Aws\Api\Service;
/**
* @internal
*/
class RestXmlSerializer extends RestSerializer
{
/** @var XmlBody */
private $xmlBody;
/**
* @param Service $api Service API description
* @param string $endpoint Endpoint to connect to
* @param XmlBody $xmlBody Optional XML formatter to use
*/
public function __construct(
Service $api,
$endpoint,
XmlBody $xmlBody = null
) {
parent::__construct($api, $endpoint);
$this->xmlBody = $xmlBody ?: new XmlBody($api);
}
protected function payload(StructureShape $member, array $value, array &$opts)
{
$opts['headers']['Content-Type'] = 'application/xml';
$opts['body'] = (string) $this->xmlBody->build($member, $value);
}
}

@ -1,220 +0,0 @@
<?php
namespace Aws\Api\Serializer;
use Aws\Api\MapShape;
use Aws\Api\Service;
use Aws\Api\Shape;
use Aws\Api\StructureShape;
use Aws\Api\ListShape;
use Aws\Api\TimestampShape;
use XMLWriter;
/**
* @internal Formats the XML body of a REST-XML services.
*/
class XmlBody
{
/** @var \Aws\Api\Service */
private $api;
/**
* @param Service $api API being used to create the XML body.
*/
public function __construct(Service $api)
{
$this->api = $api;
}
/**
* Builds the XML body based on an array of arguments.
*
* @param Shape $shape Operation being constructed
* @param array $args Associative array of arguments
*
* @return string
*/
public function build(Shape $shape, array $args)
{
$xml = new XMLWriter();
$xml->openMemory();
$xml->startDocument('1.0', 'UTF-8');
$this->format($shape, $shape['locationName'] ?: $shape['name'], $args, $xml);
$xml->endDocument();
return $xml->outputMemory();
}
private function startElement(Shape $shape, $name, XMLWriter $xml)
{
$xml->startElement($name);
if ($ns = $shape['xmlNamespace']) {
$xml->writeAttribute(
isset($ns['prefix']) ? "xmlns:{$ns['prefix']}" : 'xmlns',
$shape['xmlNamespace']['uri']
);
}
}
private function format(Shape $shape, $name, $value, XMLWriter $xml)
{
// Any method mentioned here has a custom serialization handler.
static $methods = [
'add_structure' => true,
'add_list' => true,
'add_blob' => true,
'add_timestamp' => true,
'add_boolean' => true,
'add_map' => true,
'add_string' => true
];
$type = 'add_' . $shape['type'];
if (isset($methods[$type])) {
$this->{$type}($shape, $name, $value, $xml);
} else {
$this->defaultShape($shape, $name, $value, $xml);
}
}
private function defaultShape(Shape $shape, $name, $value, XMLWriter $xml)
{
$this->startElement($shape, $name, $xml);
$xml->writeRaw($value);
$xml->endElement();
}
private function add_structure(
StructureShape $shape,
$name,
array $value,
\XMLWriter $xml
) {
$this->startElement($shape, $name, $xml);
foreach ($this->getStructureMembers($shape, $value) as $k => $definition) {
$this->format(
$definition['member'],
$definition['member']['locationName'] ?: $k,
$definition['value'],
$xml
);
}
$xml->endElement();
}
private function getStructureMembers(StructureShape $shape, array $value)
{
$members = [];
foreach ($value as $k => $v) {
if ($v !== null && $shape->hasMember($k)) {
$definition = [
'member' => $shape->getMember($k),
'value' => $v,
];
if ($definition['member']['xmlAttribute']) {
// array_unshift_associative
$members = [$k => $definition] + $members;
} else {
$members[$k] = $definition;
}
}
}
return $members;
}
private function add_list(
ListShape $shape,
$name,
array $value,
XMLWriter $xml
) {
$items = $shape->getMember();
if ($shape['flattened']) {
$elementName = $name;
} else {
$this->startElement($shape, $name, $xml);
$elementName = $items['locationName'] ?: 'member';
}
foreach ($value as $v) {
$this->format($items, $elementName, $v, $xml);
}
if (!$shape['flattened']) {
$xml->endElement();
}
}
private function add_map(
MapShape $shape,
$name,
array $value,
XMLWriter $xml
) {
$xmlEntry = $shape['flattened'] ? $shape['locationName'] : 'entry';
$xmlKey = $shape->getKey()['locationName'] ?: 'key';
$xmlValue = $shape->getValue()['locationName'] ?: 'value';
$this->startElement($shape, $name, $xml);
foreach ($value as $key => $v) {
$this->startElement($shape, $xmlEntry, $xml);
$this->format($shape->getKey(), $xmlKey, $key, $xml);
$this->format($shape->getValue(), $xmlValue, $v, $xml);
$xml->endElement();
}
$xml->endElement();
}
private function add_blob(Shape $shape, $name, $value, XMLWriter $xml)
{
$this->startElement($shape, $name, $xml);
$xml->writeRaw(base64_encode($value));
$xml->endElement();
}
private function add_timestamp(
TimestampShape $shape,
$name,
$value,
XMLWriter $xml
) {
$this->startElement($shape, $name, $xml);
$timestampFormat = !empty($shape['timestampFormat'])
? $shape['timestampFormat']
: 'iso8601';
$xml->writeRaw(TimestampShape::format($value, $timestampFormat));
$xml->endElement();
}
private function add_boolean(
Shape $shape,
$name,
$value,
XMLWriter $xml
) {
$this->startElement($shape, $name, $xml);
$xml->writeRaw($value ? 'true' : 'false');
$xml->endElement();
}
private function add_string(
Shape $shape,
$name,
$value,
XMLWriter $xml
) {
if ($shape['xmlAttribute']) {
$xml->writeAttribute($shape['locationName'] ?: $name, $value);
} else {
$this->defaultShape($shape, $name, $value, $xml);
}
}
}

@ -1,448 +0,0 @@
<?php
namespace Aws\Api;
use Aws\Api\Serializer\QuerySerializer;
use Aws\Api\Serializer\Ec2ParamBuilder;
use Aws\Api\Parser\QueryParser;
/**
* Represents a web service API model.
*/
class Service extends AbstractModel
{
/** @var callable */
private $apiProvider;
/** @var string */
private $serviceName;
/** @var string */
private $apiVersion;
/** @var Operation[] */
private $operations = [];
/** @var array */
private $paginators = null;
/** @var array */
private $waiters = null;
/**
* @param array $definition
* @param callable $provider
*
* @internal param array $definition Service description
*/
public function __construct(array $definition, callable $provider)
{
static $defaults = [
'operations' => [],
'shapes' => [],
'metadata' => []
], $defaultMeta = [
'apiVersion' => null,
'serviceFullName' => null,
'serviceId' => null,
'endpointPrefix' => null,
'signingName' => null,
'signatureVersion' => null,
'protocol' => null,
'uid' => null
];
$definition += $defaults;
$definition['metadata'] += $defaultMeta;
$this->definition = $definition;
$this->apiProvider = $provider;
parent::__construct($definition, new ShapeMap($definition['shapes']));
if (isset($definition['metadata']['serviceIdentifier'])) {
$this->serviceName = $this->getServiceName();
} else {
$this->serviceName = $this->getEndpointPrefix();
}
$this->apiVersion = $this->getApiVersion();
}
/**
* Creates a request serializer for the provided API object.
*
* @param Service $api API that contains a protocol.
* @param string $endpoint Endpoint to send requests to.
*
* @return callable
* @throws \UnexpectedValueException
*/
public static function createSerializer(Service $api, $endpoint)
{
static $mapping = [
'json' => 'Aws\Api\Serializer\JsonRpcSerializer',
'query' => 'Aws\Api\Serializer\QuerySerializer',
'rest-json' => 'Aws\Api\Serializer\RestJsonSerializer',
'rest-xml' => 'Aws\Api\Serializer\RestXmlSerializer'
];
$proto = $api->getProtocol();
if (isset($mapping[$proto])) {
return new $mapping[$proto]($api, $endpoint);
}
if ($proto == 'ec2') {
return new QuerySerializer($api, $endpoint, new Ec2ParamBuilder());
}
throw new \UnexpectedValueException(
'Unknown protocol: ' . $api->getProtocol()
);
}
/**
* Creates an error parser for the given protocol.
*
* @param string $protocol Protocol to parse (e.g., query, json, etc.)
*
* @return callable
* @throws \UnexpectedValueException
*/
public static function createErrorParser($protocol)
{
static $mapping = [
'json' => 'Aws\Api\ErrorParser\JsonRpcErrorParser',
'query' => 'Aws\Api\ErrorParser\XmlErrorParser',
'rest-json' => 'Aws\Api\ErrorParser\RestJsonErrorParser',
'rest-xml' => 'Aws\Api\ErrorParser\XmlErrorParser',
'ec2' => 'Aws\Api\ErrorParser\XmlErrorParser'
];
if (isset($mapping[$protocol])) {
return new $mapping[$protocol]();
}
throw new \UnexpectedValueException("Unknown protocol: $protocol");
}
/**
* Applies the listeners needed to parse client models.
*
* @param Service $api API to create a parser for
* @return callable
* @throws \UnexpectedValueException
*/
public static function createParser(Service $api)
{
static $mapping = [
'json' => 'Aws\Api\Parser\JsonRpcParser',
'query' => 'Aws\Api\Parser\QueryParser',
'rest-json' => 'Aws\Api\Parser\RestJsonParser',
'rest-xml' => 'Aws\Api\Parser\RestXmlParser'
];
$proto = $api->getProtocol();
if (isset($mapping[$proto])) {
return new $mapping[$proto]($api);
}
if ($proto == 'ec2') {
return new QueryParser($api, null, false);
}
throw new \UnexpectedValueException(
'Unknown protocol: ' . $api->getProtocol()
);
}
/**
* Get the full name of the service
*
* @return string
*/
public function getServiceFullName()
{
return $this->definition['metadata']['serviceFullName'];
}
/**
* Get the service id
*
* @return string
*/
public function getServiceId()
{
return $this->definition['metadata']['serviceId'];
}
/**
* Get the API version of the service
*
* @return string
*/
public function getApiVersion()
{
return $this->definition['metadata']['apiVersion'];
}
/**
* Get the API version of the service
*
* @return string
*/
public function getEndpointPrefix()
{
return $this->definition['metadata']['endpointPrefix'];
}
/**
* Get the signing name used by the service.
*
* @return string
*/
public function getSigningName()
{
return $this->definition['metadata']['signingName']
?: $this->definition['metadata']['endpointPrefix'];
}
/**
* Get the service name.
*
* @return string
*/
public function getServiceName()
{
return $this->definition['metadata']['serviceIdentifier'];
}
/**
* Get the default signature version of the service.
*
* Note: this method assumes "v4" when not specified in the model.
*
* @return string
*/
public function getSignatureVersion()
{
return $this->definition['metadata']['signatureVersion'] ?: 'v4';
}
/**
* Get the protocol used by the service.
*
* @return string
*/
public function getProtocol()
{
return $this->definition['metadata']['protocol'];
}
/**
* Get the uid string used by the service
*
* @return string
*/
public function getUid()
{
return $this->definition['metadata']['uid'];
}
/**
* Check if the description has a specific operation by name.
*
* @param string $name Operation to check by name
*
* @return bool
*/
public function hasOperation($name)
{
return isset($this['operations'][$name]);
}
/**
* Get an operation by name.
*
* @param string $name Operation to retrieve by name
*
* @return Operation
* @throws \InvalidArgumentException If the operation is not found
*/
public function getOperation($name)
{
if (!isset($this->operations[$name])) {
if (!isset($this->definition['operations'][$name])) {
throw new \InvalidArgumentException("Unknown operation: $name");
}
$this->operations[$name] = new Operation(
$this->definition['operations'][$name],
$this->shapeMap
);
}
return $this->operations[$name];
}
/**
* Get all of the operations of the description.
*
* @return Operation[]
*/
public function getOperations()
{
$result = [];
foreach ($this->definition['operations'] as $name => $definition) {
$result[$name] = $this->getOperation($name);
}
return $result;
}
/**
* Get all of the service metadata or a specific metadata key value.
*
* @param string|null $key Key to retrieve or null to retrieve all metadata
*
* @return mixed Returns the result or null if the key is not found
*/
public function getMetadata($key = null)
{
if (!$key) {
return $this['metadata'];
}
if (isset($this->definition['metadata'][$key])) {
return $this->definition['metadata'][$key];
}
return null;
}
/**
* Gets an associative array of available paginator configurations where
* the key is the name of the paginator, and the value is the paginator
* configuration.
*
* @return array
* @unstable The configuration format of paginators may change in the future
*/
public function getPaginators()
{
if (!isset($this->paginators)) {
$res = call_user_func(
$this->apiProvider,
'paginator',
$this->serviceName,
$this->apiVersion
);
$this->paginators = isset($res['pagination'])
? $res['pagination']
: [];
}
return $this->paginators;
}
/**
* Determines if the service has a paginator by name.
*
* @param string $name Name of the paginator.
*
* @return bool
*/
public function hasPaginator($name)
{
return isset($this->getPaginators()[$name]);
}
/**
* Retrieve a paginator by name.
*
* @param string $name Paginator to retrieve by name. This argument is
* typically the operation name.
* @return array
* @throws \UnexpectedValueException if the paginator does not exist.
* @unstable The configuration format of paginators may change in the future
*/
public function getPaginatorConfig($name)
{
static $defaults = [
'input_token' => null,
'output_token' => null,
'limit_key' => null,
'result_key' => null,
'more_results' => null,
];
if ($this->hasPaginator($name)) {
return $this->paginators[$name] + $defaults;
}
throw new \UnexpectedValueException("There is no {$name} "
. "paginator defined for the {$this->serviceName} service.");
}
/**
* Gets an associative array of available waiter configurations where the
* key is the name of the waiter, and the value is the waiter
* configuration.
*
* @return array
*/
public function getWaiters()
{
if (!isset($this->waiters)) {
$res = call_user_func(
$this->apiProvider,
'waiter',
$this->serviceName,
$this->apiVersion
);
$this->waiters = isset($res['waiters'])
? $res['waiters']
: [];
}
return $this->waiters;
}
/**
* Determines if the service has a waiter by name.
*
* @param string $name Name of the waiter.
*
* @return bool
*/
public function hasWaiter($name)
{
return isset($this->getWaiters()[$name]);
}
/**
* Get a waiter configuration by name.
*
* @param string $name Name of the waiter by name.
*
* @return array
* @throws \UnexpectedValueException if the waiter does not exist.
*/
public function getWaiterConfig($name)
{
// Error if the waiter is not defined
if ($this->hasWaiter($name)) {
return $this->waiters[$name];
}
throw new \UnexpectedValueException("There is no {$name} waiter "
. "defined for the {$this->serviceName} service.");
}
/**
* Get the shape map used by the API.
*
* @return ShapeMap
*/
public function getShapeMap()
{
return $this->shapeMap;
}
}

@ -1,69 +0,0 @@
<?php
namespace Aws\Api;
/**
* Base class representing a modeled shape.
*/
class Shape extends AbstractModel
{
/**
* Get a concrete shape for the given definition.
*
* @param array $definition
* @param ShapeMap $shapeMap
*
* @return mixed
* @throws \RuntimeException if the type is invalid
*/
public static function create(array $definition, ShapeMap $shapeMap)
{
static $map = [
'structure' => 'Aws\Api\StructureShape',
'map' => 'Aws\Api\MapShape',
'list' => 'Aws\Api\ListShape',
'timestamp' => 'Aws\Api\TimestampShape',
'integer' => 'Aws\Api\Shape',
'double' => 'Aws\Api\Shape',
'float' => 'Aws\Api\Shape',
'long' => 'Aws\Api\Shape',
'string' => 'Aws\Api\Shape',
'byte' => 'Aws\Api\Shape',
'character' => 'Aws\Api\Shape',
'blob' => 'Aws\Api\Shape',
'boolean' => 'Aws\Api\Shape'
];
if (isset($definition['shape'])) {
return $shapeMap->resolve($definition);
}
if (!isset($map[$definition['type']])) {
throw new \RuntimeException('Invalid type: '
. print_r($definition, true));
}
$type = $map[$definition['type']];
return new $type($definition, $shapeMap);
}
/**
* Get the type of the shape
*
* @return string
*/
public function getType()
{
return $this->definition['type'];
}
/**
* Get the name of the shape
*
* @return string
*/
public function getName()
{
return $this->definition['name'];
}
}

@ -1,66 +0,0 @@
<?php
namespace Aws\Api;
/**
* Builds shape based on shape references.
*/
class ShapeMap
{
/** @var array */
private $definitions;
/** @var Shape[] */
private $simple;
/**
* @param array $shapeModels Associative array of shape definitions.
*/
public function __construct(array $shapeModels)
{
$this->definitions = $shapeModels;
}
/**
* Get an array of shape names.
*
* @return array
*/
public function getShapeNames()
{
return array_keys($this->definitions);
}
/**
* Resolve a shape reference
*
* @param array $shapeRef Shape reference shape
*
* @return Shape
* @throws \InvalidArgumentException
*/
public function resolve(array $shapeRef)
{
$shape = $shapeRef['shape'];
if (!isset($this->definitions[$shape])) {
throw new \InvalidArgumentException('Shape not found: ' . $shape);
}
$isSimple = count($shapeRef) == 1;
if ($isSimple && isset($this->simple[$shape])) {
return $this->simple[$shape];
}
$definition = $shapeRef + $this->definitions[$shape];
$definition['name'] = $definition['shape'];
unset($definition['shape']);
$result = Shape::create($definition, $this);
if ($isSimple) {
$this->simple[$shape] = $result;
}
return $result;
}
}

@ -1,79 +0,0 @@
<?php
namespace Aws\Api;
/**
* Represents a structure shape and resolve member shape references.
*/
class StructureShape extends Shape
{
/**
* @var Shape[]
*/
private $members;
public function __construct(array $definition, ShapeMap $shapeMap)
{
$definition['type'] = 'structure';
if (!isset($definition['members'])) {
$definition['members'] = [];
}
parent::__construct($definition, $shapeMap);
}
/**
* Gets a list of all members
*
* @return Shape[]
*/
public function getMembers()
{
if (empty($this->members)) {
$this->generateMembersHash();
}
return $this->members;
}
/**
* Check if a specific member exists by name.
*
* @param string $name Name of the member to check
*
* @return bool
*/
public function hasMember($name)
{
return isset($this->definition['members'][$name]);
}
/**
* Retrieve a member by name.
*
* @param string $name Name of the member to retrieve
*
* @return Shape
* @throws \InvalidArgumentException if the member is not found.
*/
public function getMember($name)
{
$members = $this->getMembers();
if (!isset($members[$name])) {
throw new \InvalidArgumentException('Unknown member ' . $name);
}
return $members[$name];
}
private function generateMembersHash()
{
$this->members = [];
foreach ($this->definition['members'] as $name => $definition) {
$this->members[$name] = $this->shapeFor($definition);
}
}
}

@ -1,48 +0,0 @@
<?php
namespace Aws\Api;
/**
* Represents a timestamp shape.
*/
class TimestampShape extends Shape
{
public function __construct(array $definition, ShapeMap $shapeMap)
{
$definition['type'] = 'timestamp';
parent::__construct($definition, $shapeMap);
}
/**
* Formats a timestamp value for a service.
*
* @param mixed $value Value to format
* @param string $format Format used to serialize the value
*
* @return int|string
* @throws \UnexpectedValueException if the format is unknown.
* @throws \InvalidArgumentException if the value is an unsupported type.
*/
public static function format($value, $format)
{
if ($value instanceof \DateTime) {
$value = $value->getTimestamp();
} elseif (is_string($value)) {
$value = strtotime($value);
} elseif (!is_int($value)) {
throw new \InvalidArgumentException('Unable to handle the provided'
. ' timestamp type: ' . gettype($value));
}
switch ($format) {
case 'iso8601':
return gmdate('Y-m-d\TH:i:s\Z', $value);
case 'rfc822':
return gmdate('D, d M Y H:i:s \G\M\T', $value);
case 'unixTimestamp':
return $value;
default:
throw new \UnexpectedValueException('Unknown timestamp format: '
. $format);
}
}
}

@ -1,286 +0,0 @@
<?php
namespace Aws\Api;
use Aws;
/**
* Validates a schema against a hash of input.
*/
class Validator
{
private $path = [];
private $errors = [];
private $constraints = [];
private static $defaultConstraints = [
'required' => true,
'min' => true,
'max' => false,
'pattern' => false
];
/**
* @param array $constraints Associative array of constraints to enforce.
* Accepts the following keys: "required", "min",
* "max", and "pattern". If a key is not
* provided, the constraint will assume false.
*/
public function __construct(array $constraints = null)
{
static $assumedFalseValues = [
'required' => false,
'min' => false,
'max' => false,
'pattern' => false
];
$this->constraints = empty($constraints)
? self::$defaultConstraints
: $constraints + $assumedFalseValues;
}
/**
* Validates the given input against the schema.
*
* @param string $name Operation name
* @param Shape $shape Shape to validate
* @param array $input Input to validate
*
* @throws \InvalidArgumentException if the input is invalid.
*/
public function validate($name, Shape $shape, array $input)
{
$this->dispatch($shape, $input);
if ($this->errors) {
$message = sprintf(
"Found %d error%s while validating the input provided for the "
. "%s operation:\n%s",
count($this->errors),
count($this->errors) > 1 ? 's' : '',
$name,
implode("\n", $this->errors)
);
$this->errors = [];
throw new \InvalidArgumentException($message);
}
}
private function dispatch(Shape $shape, $value)
{
static $methods = [
'structure' => 'check_structure',
'list' => 'check_list',
'map' => 'check_map',
'blob' => 'check_blob',
'boolean' => 'check_boolean',
'integer' => 'check_numeric',
'float' => 'check_numeric',
'long' => 'check_numeric',
'string' => 'check_string',
'byte' => 'check_string',
'char' => 'check_string'
];
$type = $shape->getType();
if (isset($methods[$type])) {
$this->{$methods[$type]}($shape, $value);
}
}
private function check_structure(StructureShape $shape, $value)
{
if (!$this->checkAssociativeArray($value)) {
return;
}
if ($this->constraints['required'] && $shape['required']) {
foreach ($shape['required'] as $req) {
if (!isset($value[$req])) {
$this->path[] = $req;
$this->addError('is missing and is a required parameter');
array_pop($this->path);
}
}
}
foreach ($value as $name => $v) {
if ($shape->hasMember($name)) {
$this->path[] = $name;
$this->dispatch(
$shape->getMember($name),
isset($value[$name]) ? $value[$name] : null
);
array_pop($this->path);
}
}
}
private function check_list(ListShape $shape, $value)
{
if (!is_array($value)) {
$this->addError('must be an array. Found '
. Aws\describe_type($value));
return;
}
$this->validateRange($shape, count($value), "list element count");
$items = $shape->getMember();
foreach ($value as $index => $v) {
$this->path[] = $index;
$this->dispatch($items, $v);
array_pop($this->path);
}
}
private function check_map(MapShape $shape, $value)
{
if (!$this->checkAssociativeArray($value)) {
return;
}
$values = $shape->getValue();
foreach ($value as $key => $v) {
$this->path[] = $key;
$this->dispatch($values, $v);
array_pop($this->path);
}
}
private function check_blob(Shape $shape, $value)
{
static $valid = [
'string' => true,
'integer' => true,
'double' => true,
'resource' => true
];
$type = gettype($value);
if (!isset($valid[$type])) {
if ($type != 'object' || !method_exists($value, '__toString')) {
$this->addError('must be an fopen resource, a '
. 'GuzzleHttp\Stream\StreamInterface object, or something '
. 'that can be cast to a string. Found '
. Aws\describe_type($value));
}
}
}
private function check_numeric(Shape $shape, $value)
{
if (!is_numeric($value)) {
$this->addError('must be numeric. Found '
. Aws\describe_type($value));
return;
}
$this->validateRange($shape, $value, "numeric value");
}
private function check_boolean(Shape $shape, $value)
{
if (!is_bool($value)) {
$this->addError('must be a boolean. Found '
. Aws\describe_type($value));
}
}
private function check_string(Shape $shape, $value)
{
if ($shape['jsonvalue']) {
if (!self::canJsonEncode($value)) {
$this->addError('must be a value encodable with \'json_encode\'.'
. ' Found ' . Aws\describe_type($value));
}
return;
}
if (!$this->checkCanString($value)) {
$this->addError('must be a string or an object that implements '
. '__toString(). Found ' . Aws\describe_type($value));
return;
}
$this->validateRange($shape, strlen($value), "string length");
if ($this->constraints['pattern']) {
$pattern = $shape['pattern'];
if ($pattern && !preg_match("/$pattern/", $value)) {
$this->addError("Pattern /$pattern/ failed to match '$value'");
}
}
}
private function validateRange(Shape $shape, $length, $descriptor)
{
if ($this->constraints['min']) {
$min = $shape['min'];
if ($min && $length < $min) {
$this->addError("expected $descriptor to be >= $min, but "
. "found $descriptor of $length");
}
}
if ($this->constraints['max']) {
$max = $shape['max'];
if ($max && $length > $max) {
$this->addError("expected $descriptor to be <= $max, but "
. "found $descriptor of $length");
}
}
}
private function checkCanString($value)
{
static $valid = [
'string' => true,
'integer' => true,
'double' => true,
'NULL' => true,
];
$type = gettype($value);
return isset($valid[$type]) ||
($type == 'object' && method_exists($value, '__toString'));
}
private function checkAssociativeArray($value)
{
$isAssociative = false;
if (is_array($value)) {
$expectedIndex = 0;
$key = key($value);
do {
$isAssociative = $key !== $expectedIndex++;
next($value);
$key = key($value);
} while (!$isAssociative && null !== $key);
}
if (!$isAssociative) {
$this->addError('must be an associative array. Found '
. Aws\describe_type($value));
return false;
}
return true;
}
private function addError($message)
{
$this->errors[] =
implode('', array_map(function ($s) { return "[{$s}]"; }, $this->path))
. ' '
. $message;
}
private function canJsonEncode($data)
{
return !is_resource($data);
}
}

@ -1,272 +0,0 @@
<?php
namespace Aws\ApiGateway;
use Aws\AwsClient;
use Aws\CommandInterface;
use Psr\Http\Message\RequestInterface;
/**
* This client is used to interact with the **AWS API Gateway** service.
*
* @method \Aws\Result createApiKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise createApiKeyAsync(array $args = [])
* @method \Aws\Result createAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAuthorizerAsync(array $args = [])
* @method \Aws\Result createBasePathMapping(array $args = [])
* @method \GuzzleHttp\Promise\Promise createBasePathMappingAsync(array $args = [])
* @method \Aws\Result createDeployment(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDeploymentAsync(array $args = [])
* @method \Aws\Result createDocumentationPart(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDocumentationPartAsync(array $args = [])
* @method \Aws\Result createDocumentationVersion(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDocumentationVersionAsync(array $args = [])
* @method \Aws\Result createDomainName(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDomainNameAsync(array $args = [])
* @method \Aws\Result createModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise createModelAsync(array $args = [])
* @method \Aws\Result createRequestValidator(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRequestValidatorAsync(array $args = [])
* @method \Aws\Result createResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise createResourceAsync(array $args = [])
* @method \Aws\Result createRestApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRestApiAsync(array $args = [])
* @method \Aws\Result createStage(array $args = [])
* @method \GuzzleHttp\Promise\Promise createStageAsync(array $args = [])
* @method \Aws\Result createUsagePlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise createUsagePlanAsync(array $args = [])
* @method \Aws\Result createUsagePlanKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise createUsagePlanKeyAsync(array $args = [])
* @method \Aws\Result createVpcLink(array $args = [])
* @method \GuzzleHttp\Promise\Promise createVpcLinkAsync(array $args = [])
* @method \Aws\Result deleteApiKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteApiKeyAsync(array $args = [])
* @method \Aws\Result deleteAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAuthorizerAsync(array $args = [])
* @method \Aws\Result deleteBasePathMapping(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBasePathMappingAsync(array $args = [])
* @method \Aws\Result deleteClientCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteClientCertificateAsync(array $args = [])
* @method \Aws\Result deleteDeployment(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDeploymentAsync(array $args = [])
* @method \Aws\Result deleteDocumentationPart(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDocumentationPartAsync(array $args = [])
* @method \Aws\Result deleteDocumentationVersion(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDocumentationVersionAsync(array $args = [])
* @method \Aws\Result deleteDomainName(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDomainNameAsync(array $args = [])
* @method \Aws\Result deleteGatewayResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteGatewayResponseAsync(array $args = [])
* @method \Aws\Result deleteIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteIntegrationAsync(array $args = [])
* @method \Aws\Result deleteIntegrationResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteIntegrationResponseAsync(array $args = [])
* @method \Aws\Result deleteMethod(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteMethodAsync(array $args = [])
* @method \Aws\Result deleteMethodResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteMethodResponseAsync(array $args = [])
* @method \Aws\Result deleteModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteModelAsync(array $args = [])
* @method \Aws\Result deleteRequestValidator(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRequestValidatorAsync(array $args = [])
* @method \Aws\Result deleteResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteResourceAsync(array $args = [])
* @method \Aws\Result deleteRestApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRestApiAsync(array $args = [])
* @method \Aws\Result deleteStage(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteStageAsync(array $args = [])
* @method \Aws\Result deleteUsagePlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteUsagePlanAsync(array $args = [])
* @method \Aws\Result deleteUsagePlanKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteUsagePlanKeyAsync(array $args = [])
* @method \Aws\Result deleteVpcLink(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVpcLinkAsync(array $args = [])
* @method \Aws\Result flushStageAuthorizersCache(array $args = [])
* @method \GuzzleHttp\Promise\Promise flushStageAuthorizersCacheAsync(array $args = [])
* @method \Aws\Result flushStageCache(array $args = [])
* @method \GuzzleHttp\Promise\Promise flushStageCacheAsync(array $args = [])
* @method \Aws\Result generateClientCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise generateClientCertificateAsync(array $args = [])
* @method \Aws\Result getAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAccountAsync(array $args = [])
* @method \Aws\Result getApiKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise getApiKeyAsync(array $args = [])
* @method \Aws\Result getApiKeys(array $args = [])
* @method \GuzzleHttp\Promise\Promise getApiKeysAsync(array $args = [])
* @method \Aws\Result getAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAuthorizerAsync(array $args = [])
* @method \Aws\Result getAuthorizers(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAuthorizersAsync(array $args = [])
* @method \Aws\Result getBasePathMapping(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBasePathMappingAsync(array $args = [])
* @method \Aws\Result getBasePathMappings(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBasePathMappingsAsync(array $args = [])
* @method \Aws\Result getClientCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise getClientCertificateAsync(array $args = [])
* @method \Aws\Result getClientCertificates(array $args = [])
* @method \GuzzleHttp\Promise\Promise getClientCertificatesAsync(array $args = [])
* @method \Aws\Result getDeployment(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDeploymentAsync(array $args = [])
* @method \Aws\Result getDeployments(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDeploymentsAsync(array $args = [])
* @method \Aws\Result getDocumentationPart(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDocumentationPartAsync(array $args = [])
* @method \Aws\Result getDocumentationParts(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDocumentationPartsAsync(array $args = [])
* @method \Aws\Result getDocumentationVersion(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDocumentationVersionAsync(array $args = [])
* @method \Aws\Result getDocumentationVersions(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDocumentationVersionsAsync(array $args = [])
* @method \Aws\Result getDomainName(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDomainNameAsync(array $args = [])
* @method \Aws\Result getDomainNames(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDomainNamesAsync(array $args = [])
* @method \Aws\Result getExport(array $args = [])
* @method \GuzzleHttp\Promise\Promise getExportAsync(array $args = [])
* @method \Aws\Result getGatewayResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise getGatewayResponseAsync(array $args = [])
* @method \Aws\Result getGatewayResponses(array $args = [])
* @method \GuzzleHttp\Promise\Promise getGatewayResponsesAsync(array $args = [])
* @method \Aws\Result getIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIntegrationAsync(array $args = [])
* @method \Aws\Result getIntegrationResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIntegrationResponseAsync(array $args = [])
* @method \Aws\Result getMethod(array $args = [])
* @method \GuzzleHttp\Promise\Promise getMethodAsync(array $args = [])
* @method \Aws\Result getMethodResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise getMethodResponseAsync(array $args = [])
* @method \Aws\Result getModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise getModelAsync(array $args = [])
* @method \Aws\Result getModelTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise getModelTemplateAsync(array $args = [])
* @method \Aws\Result getModels(array $args = [])
* @method \GuzzleHttp\Promise\Promise getModelsAsync(array $args = [])
* @method \Aws\Result getRequestValidator(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRequestValidatorAsync(array $args = [])
* @method \Aws\Result getRequestValidators(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRequestValidatorsAsync(array $args = [])
* @method \Aws\Result getResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise getResourceAsync(array $args = [])
* @method \Aws\Result getResources(array $args = [])
* @method \GuzzleHttp\Promise\Promise getResourcesAsync(array $args = [])
* @method \Aws\Result getRestApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRestApiAsync(array $args = [])
* @method \Aws\Result getRestApis(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRestApisAsync(array $args = [])
* @method \Aws\Result getSdk(array $args = [])
* @method \GuzzleHttp\Promise\Promise getSdkAsync(array $args = [])
* @method \Aws\Result getSdkType(array $args = [])
* @method \GuzzleHttp\Promise\Promise getSdkTypeAsync(array $args = [])
* @method \Aws\Result getSdkTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise getSdkTypesAsync(array $args = [])
* @method \Aws\Result getStage(array $args = [])
* @method \GuzzleHttp\Promise\Promise getStageAsync(array $args = [])
* @method \Aws\Result getStages(array $args = [])
* @method \GuzzleHttp\Promise\Promise getStagesAsync(array $args = [])
* @method \Aws\Result getTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise getTagsAsync(array $args = [])
* @method \Aws\Result getUsage(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUsageAsync(array $args = [])
* @method \Aws\Result getUsagePlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUsagePlanAsync(array $args = [])
* @method \Aws\Result getUsagePlanKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUsagePlanKeyAsync(array $args = [])
* @method \Aws\Result getUsagePlanKeys(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUsagePlanKeysAsync(array $args = [])
* @method \Aws\Result getUsagePlans(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUsagePlansAsync(array $args = [])
* @method \Aws\Result getVpcLink(array $args = [])
* @method \GuzzleHttp\Promise\Promise getVpcLinkAsync(array $args = [])
* @method \Aws\Result getVpcLinks(array $args = [])
* @method \GuzzleHttp\Promise\Promise getVpcLinksAsync(array $args = [])
* @method \Aws\Result importApiKeys(array $args = [])
* @method \GuzzleHttp\Promise\Promise importApiKeysAsync(array $args = [])
* @method \Aws\Result importDocumentationParts(array $args = [])
* @method \GuzzleHttp\Promise\Promise importDocumentationPartsAsync(array $args = [])
* @method \Aws\Result importRestApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise importRestApiAsync(array $args = [])
* @method \Aws\Result putGatewayResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise putGatewayResponseAsync(array $args = [])
* @method \Aws\Result putIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise putIntegrationAsync(array $args = [])
* @method \Aws\Result putIntegrationResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise putIntegrationResponseAsync(array $args = [])
* @method \Aws\Result putMethod(array $args = [])
* @method \GuzzleHttp\Promise\Promise putMethodAsync(array $args = [])
* @method \Aws\Result putMethodResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise putMethodResponseAsync(array $args = [])
* @method \Aws\Result putRestApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise putRestApiAsync(array $args = [])
* @method \Aws\Result tagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
* @method \Aws\Result testInvokeAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise testInvokeAuthorizerAsync(array $args = [])
* @method \Aws\Result testInvokeMethod(array $args = [])
* @method \GuzzleHttp\Promise\Promise testInvokeMethodAsync(array $args = [])
* @method \Aws\Result untagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
* @method \Aws\Result updateAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAccountAsync(array $args = [])
* @method \Aws\Result updateApiKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateApiKeyAsync(array $args = [])
* @method \Aws\Result updateAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAuthorizerAsync(array $args = [])
* @method \Aws\Result updateBasePathMapping(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateBasePathMappingAsync(array $args = [])
* @method \Aws\Result updateClientCertificate(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateClientCertificateAsync(array $args = [])
* @method \Aws\Result updateDeployment(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDeploymentAsync(array $args = [])
* @method \Aws\Result updateDocumentationPart(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDocumentationPartAsync(array $args = [])
* @method \Aws\Result updateDocumentationVersion(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDocumentationVersionAsync(array $args = [])
* @method \Aws\Result updateDomainName(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDomainNameAsync(array $args = [])
* @method \Aws\Result updateGatewayResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateGatewayResponseAsync(array $args = [])
* @method \Aws\Result updateIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateIntegrationAsync(array $args = [])
* @method \Aws\Result updateIntegrationResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateIntegrationResponseAsync(array $args = [])
* @method \Aws\Result updateMethod(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateMethodAsync(array $args = [])
* @method \Aws\Result updateMethodResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateMethodResponseAsync(array $args = [])
* @method \Aws\Result updateModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateModelAsync(array $args = [])
* @method \Aws\Result updateRequestValidator(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRequestValidatorAsync(array $args = [])
* @method \Aws\Result updateResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateResourceAsync(array $args = [])
* @method \Aws\Result updateRestApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRestApiAsync(array $args = [])
* @method \Aws\Result updateStage(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateStageAsync(array $args = [])
* @method \Aws\Result updateUsage(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateUsageAsync(array $args = [])
* @method \Aws\Result updateUsagePlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateUsagePlanAsync(array $args = [])
* @method \Aws\Result updateVpcLink(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateVpcLinkAsync(array $args = [])
*/
class ApiGatewayClient extends AwsClient
{
public function __construct(array $args)
{
parent::__construct($args);
$stack = $this->getHandlerList();
$stack->appendBuild([__CLASS__, '_add_accept_header']);
}
public static function _add_accept_header(callable $handler)
{
return function (
CommandInterface $command,
RequestInterface $request
) use ($handler) {
$request = $request->withHeader('Accept', 'application/json');
return $handler($command, $request);
};
}
}

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

@ -1,11 +0,0 @@
<?php
namespace Aws\ApiGatewayManagementApi;
use Aws\AwsClient;
/**
* This client is used to interact with the **AmazonApiGatewayManagementApi** service.
* @method \Aws\Result postToConnection(array $args = [])
* @method \GuzzleHttp\Promise\Promise postToConnectionAsync(array $args = [])
*/
class ApiGatewayManagementApiClient extends AwsClient {}

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

@ -1,121 +0,0 @@
<?php
namespace Aws\ApiGatewayV2;
use Aws\AwsClient;
/**
* This client is used to interact with the **AmazonApiGatewayV2** service.
* @method \Aws\Result createApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise createApiAsync(array $args = [])
* @method \Aws\Result createApiMapping(array $args = [])
* @method \GuzzleHttp\Promise\Promise createApiMappingAsync(array $args = [])
* @method \Aws\Result createAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAuthorizerAsync(array $args = [])
* @method \Aws\Result createDeployment(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDeploymentAsync(array $args = [])
* @method \Aws\Result createDomainName(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDomainNameAsync(array $args = [])
* @method \Aws\Result createIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise createIntegrationAsync(array $args = [])
* @method \Aws\Result createIntegrationResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise createIntegrationResponseAsync(array $args = [])
* @method \Aws\Result createModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise createModelAsync(array $args = [])
* @method \Aws\Result createRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRouteAsync(array $args = [])
* @method \Aws\Result createRouteResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRouteResponseAsync(array $args = [])
* @method \Aws\Result createStage(array $args = [])
* @method \GuzzleHttp\Promise\Promise createStageAsync(array $args = [])
* @method \Aws\Result deleteApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteApiAsync(array $args = [])
* @method \Aws\Result deleteApiMapping(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteApiMappingAsync(array $args = [])
* @method \Aws\Result deleteAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAuthorizerAsync(array $args = [])
* @method \Aws\Result deleteDeployment(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDeploymentAsync(array $args = [])
* @method \Aws\Result deleteDomainName(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDomainNameAsync(array $args = [])
* @method \Aws\Result deleteIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteIntegrationAsync(array $args = [])
* @method \Aws\Result deleteIntegrationResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteIntegrationResponseAsync(array $args = [])
* @method \Aws\Result deleteModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteModelAsync(array $args = [])
* @method \Aws\Result deleteRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRouteAsync(array $args = [])
* @method \Aws\Result deleteRouteResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRouteResponseAsync(array $args = [])
* @method \Aws\Result deleteStage(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteStageAsync(array $args = [])
* @method \Aws\Result getApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise getApiAsync(array $args = [])
* @method \Aws\Result getApiMapping(array $args = [])
* @method \GuzzleHttp\Promise\Promise getApiMappingAsync(array $args = [])
* @method \Aws\Result getApiMappings(array $args = [])
* @method \GuzzleHttp\Promise\Promise getApiMappingsAsync(array $args = [])
* @method \Aws\Result getApis(array $args = [])
* @method \GuzzleHttp\Promise\Promise getApisAsync(array $args = [])
* @method \Aws\Result getAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAuthorizerAsync(array $args = [])
* @method \Aws\Result getAuthorizers(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAuthorizersAsync(array $args = [])
* @method \Aws\Result getDeployment(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDeploymentAsync(array $args = [])
* @method \Aws\Result getDeployments(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDeploymentsAsync(array $args = [])
* @method \Aws\Result getDomainName(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDomainNameAsync(array $args = [])
* @method \Aws\Result getDomainNames(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDomainNamesAsync(array $args = [])
* @method \Aws\Result getIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIntegrationAsync(array $args = [])
* @method \Aws\Result getIntegrationResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIntegrationResponseAsync(array $args = [])
* @method \Aws\Result getIntegrationResponses(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIntegrationResponsesAsync(array $args = [])
* @method \Aws\Result getIntegrations(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIntegrationsAsync(array $args = [])
* @method \Aws\Result getModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise getModelAsync(array $args = [])
* @method \Aws\Result getModelTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise getModelTemplateAsync(array $args = [])
* @method \Aws\Result getModels(array $args = [])
* @method \GuzzleHttp\Promise\Promise getModelsAsync(array $args = [])
* @method \Aws\Result getRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRouteAsync(array $args = [])
* @method \Aws\Result getRouteResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRouteResponseAsync(array $args = [])
* @method \Aws\Result getRouteResponses(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRouteResponsesAsync(array $args = [])
* @method \Aws\Result getRoutes(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRoutesAsync(array $args = [])
* @method \Aws\Result getStage(array $args = [])
* @method \GuzzleHttp\Promise\Promise getStageAsync(array $args = [])
* @method \Aws\Result getStages(array $args = [])
* @method \GuzzleHttp\Promise\Promise getStagesAsync(array $args = [])
* @method \Aws\Result updateApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateApiAsync(array $args = [])
* @method \Aws\Result updateApiMapping(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateApiMappingAsync(array $args = [])
* @method \Aws\Result updateAuthorizer(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAuthorizerAsync(array $args = [])
* @method \Aws\Result updateDeployment(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDeploymentAsync(array $args = [])
* @method \Aws\Result updateDomainName(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDomainNameAsync(array $args = [])
* @method \Aws\Result updateIntegration(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateIntegrationAsync(array $args = [])
* @method \Aws\Result updateIntegrationResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateIntegrationResponseAsync(array $args = [])
* @method \Aws\Result updateModel(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateModelAsync(array $args = [])
* @method \Aws\Result updateRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRouteAsync(array $args = [])
* @method \Aws\Result updateRouteResponse(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRouteResponseAsync(array $args = [])
* @method \Aws\Result updateStage(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateStageAsync(array $args = [])
*/
class ApiGatewayV2Client extends AwsClient {}

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

@ -1,65 +0,0 @@
<?php
namespace Aws\AppMesh;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS App Mesh** service.
* @method \Aws\Result createMesh(array $args = [])
* @method \GuzzleHttp\Promise\Promise createMeshAsync(array $args = [])
* @method \Aws\Result createRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise createRouteAsync(array $args = [])
* @method \Aws\Result createVirtualNode(array $args = [])
* @method \GuzzleHttp\Promise\Promise createVirtualNodeAsync(array $args = [])
* @method \Aws\Result createVirtualRouter(array $args = [])
* @method \GuzzleHttp\Promise\Promise createVirtualRouterAsync(array $args = [])
* @method \Aws\Result deleteMesh(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteMeshAsync(array $args = [])
* @method \Aws\Result deleteRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRouteAsync(array $args = [])
* @method \Aws\Result deleteVirtualNode(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVirtualNodeAsync(array $args = [])
* @method \Aws\Result deleteVirtualRouter(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVirtualRouterAsync(array $args = [])
* @method \Aws\Result describeMesh(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeMeshAsync(array $args = [])
* @method \Aws\Result describeRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeRouteAsync(array $args = [])
* @method \Aws\Result describeVirtualNode(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeVirtualNodeAsync(array $args = [])
* @method \Aws\Result describeVirtualRouter(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeVirtualRouterAsync(array $args = [])
* @method \Aws\Result listMeshes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listMeshesAsync(array $args = [])
* @method \Aws\Result listRoutes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listRoutesAsync(array $args = [])
* @method \Aws\Result listVirtualNodes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listVirtualNodesAsync(array $args = [])
* @method \Aws\Result listVirtualRouters(array $args = [])
* @method \GuzzleHttp\Promise\Promise listVirtualRoutersAsync(array $args = [])
* @method \Aws\Result updateRoute(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRouteAsync(array $args = [])
* @method \Aws\Result updateVirtualNode(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateVirtualNodeAsync(array $args = [])
* @method \Aws\Result updateVirtualRouter(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateVirtualRouterAsync(array $args = [])
* @method \Aws\Result createVirtualService(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise createVirtualServiceAsync(array $args = []) (supported in versions 2019-01-25)
* @method \Aws\Result deleteVirtualService(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise deleteVirtualServiceAsync(array $args = []) (supported in versions 2019-01-25)
* @method \Aws\Result describeVirtualService(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise describeVirtualServiceAsync(array $args = []) (supported in versions 2019-01-25)
* @method \Aws\Result listTagsForResource(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = []) (supported in versions 2019-01-25)
* @method \Aws\Result listVirtualServices(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise listVirtualServicesAsync(array $args = []) (supported in versions 2019-01-25)
* @method \Aws\Result tagResource(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = []) (supported in versions 2019-01-25)
* @method \Aws\Result untagResource(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = []) (supported in versions 2019-01-25)
* @method \Aws\Result updateMesh(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise updateMeshAsync(array $args = []) (supported in versions 2019-01-25)
* @method \Aws\Result updateVirtualService(array $args = []) (supported in versions 2019-01-25)
* @method \GuzzleHttp\Promise\Promise updateVirtualServiceAsync(array $args = []) (supported in versions 2019-01-25)
*/
class AppMeshClient extends AwsClient {}

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

@ -1,75 +0,0 @@
<?php
namespace Aws\AppSync;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS AppSync** service.
* @method \Aws\Result createApiKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise createApiKeyAsync(array $args = [])
* @method \Aws\Result createDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDataSourceAsync(array $args = [])
* @method \Aws\Result createFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise createFunctionAsync(array $args = [])
* @method \Aws\Result createGraphqlApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise createGraphqlApiAsync(array $args = [])
* @method \Aws\Result createResolver(array $args = [])
* @method \GuzzleHttp\Promise\Promise createResolverAsync(array $args = [])
* @method \Aws\Result createType(array $args = [])
* @method \GuzzleHttp\Promise\Promise createTypeAsync(array $args = [])
* @method \Aws\Result deleteApiKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteApiKeyAsync(array $args = [])
* @method \Aws\Result deleteDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDataSourceAsync(array $args = [])
* @method \Aws\Result deleteFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteFunctionAsync(array $args = [])
* @method \Aws\Result deleteGraphqlApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteGraphqlApiAsync(array $args = [])
* @method \Aws\Result deleteResolver(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteResolverAsync(array $args = [])
* @method \Aws\Result deleteType(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteTypeAsync(array $args = [])
* @method \Aws\Result getDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDataSourceAsync(array $args = [])
* @method \Aws\Result getFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise getFunctionAsync(array $args = [])
* @method \Aws\Result getGraphqlApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise getGraphqlApiAsync(array $args = [])
* @method \Aws\Result getIntrospectionSchema(array $args = [])
* @method \GuzzleHttp\Promise\Promise getIntrospectionSchemaAsync(array $args = [])
* @method \Aws\Result getResolver(array $args = [])
* @method \GuzzleHttp\Promise\Promise getResolverAsync(array $args = [])
* @method \Aws\Result getSchemaCreationStatus(array $args = [])
* @method \GuzzleHttp\Promise\Promise getSchemaCreationStatusAsync(array $args = [])
* @method \Aws\Result getType(array $args = [])
* @method \GuzzleHttp\Promise\Promise getTypeAsync(array $args = [])
* @method \Aws\Result listApiKeys(array $args = [])
* @method \GuzzleHttp\Promise\Promise listApiKeysAsync(array $args = [])
* @method \Aws\Result listDataSources(array $args = [])
* @method \GuzzleHttp\Promise\Promise listDataSourcesAsync(array $args = [])
* @method \Aws\Result listFunctions(array $args = [])
* @method \GuzzleHttp\Promise\Promise listFunctionsAsync(array $args = [])
* @method \Aws\Result listGraphqlApis(array $args = [])
* @method \GuzzleHttp\Promise\Promise listGraphqlApisAsync(array $args = [])
* @method \Aws\Result listResolvers(array $args = [])
* @method \GuzzleHttp\Promise\Promise listResolversAsync(array $args = [])
* @method \Aws\Result listResolversByFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise listResolversByFunctionAsync(array $args = [])
* @method \Aws\Result listTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTypesAsync(array $args = [])
* @method \Aws\Result startSchemaCreation(array $args = [])
* @method \GuzzleHttp\Promise\Promise startSchemaCreationAsync(array $args = [])
* @method \Aws\Result updateApiKey(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateApiKeyAsync(array $args = [])
* @method \Aws\Result updateDataSource(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDataSourceAsync(array $args = [])
* @method \Aws\Result updateFunction(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateFunctionAsync(array $args = [])
* @method \Aws\Result updateGraphqlApi(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateGraphqlApiAsync(array $args = [])
* @method \Aws\Result updateResolver(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateResolverAsync(array $args = [])
* @method \Aws\Result updateType(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateTypeAsync(array $args = [])
*/
class AppSyncClient extends AwsClient {}

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

@ -1,29 +0,0 @@
<?php
namespace Aws\ApplicationAutoScaling;
use Aws\AwsClient;
/**
* This client is used to interact with the **Application Auto Scaling** service.
* @method \Aws\Result deleteScalingPolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteScalingPolicyAsync(array $args = [])
* @method \Aws\Result deleteScheduledAction(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteScheduledActionAsync(array $args = [])
* @method \Aws\Result deregisterScalableTarget(array $args = [])
* @method \GuzzleHttp\Promise\Promise deregisterScalableTargetAsync(array $args = [])
* @method \Aws\Result describeScalableTargets(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScalableTargetsAsync(array $args = [])
* @method \Aws\Result describeScalingActivities(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScalingActivitiesAsync(array $args = [])
* @method \Aws\Result describeScalingPolicies(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScalingPoliciesAsync(array $args = [])
* @method \Aws\Result describeScheduledActions(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScheduledActionsAsync(array $args = [])
* @method \Aws\Result putScalingPolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise putScalingPolicyAsync(array $args = [])
* @method \Aws\Result putScheduledAction(array $args = [])
* @method \GuzzleHttp\Promise\Promise putScheduledActionAsync(array $args = [])
* @method \Aws\Result registerScalableTarget(array $args = [])
* @method \GuzzleHttp\Promise\Promise registerScalableTargetAsync(array $args = [])
*/
class ApplicationAutoScalingClient extends AwsClient {}

@ -1,9 +0,0 @@
<?php
namespace Aws\ApplicationAutoScaling\Exception;
use Aws\Exception\AwsException;
/**
* Represents an error interacting with the **Application Auto Scaling** service.
*/
class ApplicationAutoScalingException extends AwsException {}

@ -1,59 +0,0 @@
<?php
namespace Aws\ApplicationDiscoveryService;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Application Discovery Service** service.
* @method \Aws\Result associateConfigurationItemsToApplication(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateConfigurationItemsToApplicationAsync(array $args = [])
* @method \Aws\Result batchDeleteImportData(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchDeleteImportDataAsync(array $args = [])
* @method \Aws\Result createApplication(array $args = [])
* @method \GuzzleHttp\Promise\Promise createApplicationAsync(array $args = [])
* @method \Aws\Result createTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise createTagsAsync(array $args = [])
* @method \Aws\Result deleteApplications(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteApplicationsAsync(array $args = [])
* @method \Aws\Result deleteTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteTagsAsync(array $args = [])
* @method \Aws\Result describeAgents(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeAgentsAsync(array $args = [])
* @method \Aws\Result describeConfigurations(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeConfigurationsAsync(array $args = [])
* @method \Aws\Result describeContinuousExports(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeContinuousExportsAsync(array $args = [])
* @method \Aws\Result describeExportConfigurations(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeExportConfigurationsAsync(array $args = [])
* @method \Aws\Result describeExportTasks(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeExportTasksAsync(array $args = [])
* @method \Aws\Result describeImportTasks(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeImportTasksAsync(array $args = [])
* @method \Aws\Result describeTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeTagsAsync(array $args = [])
* @method \Aws\Result disassociateConfigurationItemsFromApplication(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateConfigurationItemsFromApplicationAsync(array $args = [])
* @method \Aws\Result exportConfigurations(array $args = [])
* @method \GuzzleHttp\Promise\Promise exportConfigurationsAsync(array $args = [])
* @method \Aws\Result getDiscoverySummary(array $args = [])
* @method \GuzzleHttp\Promise\Promise getDiscoverySummaryAsync(array $args = [])
* @method \Aws\Result listConfigurations(array $args = [])
* @method \GuzzleHttp\Promise\Promise listConfigurationsAsync(array $args = [])
* @method \Aws\Result listServerNeighbors(array $args = [])
* @method \GuzzleHttp\Promise\Promise listServerNeighborsAsync(array $args = [])
* @method \Aws\Result startContinuousExport(array $args = [])
* @method \GuzzleHttp\Promise\Promise startContinuousExportAsync(array $args = [])
* @method \Aws\Result startDataCollectionByAgentIds(array $args = [])
* @method \GuzzleHttp\Promise\Promise startDataCollectionByAgentIdsAsync(array $args = [])
* @method \Aws\Result startExportTask(array $args = [])
* @method \GuzzleHttp\Promise\Promise startExportTaskAsync(array $args = [])
* @method \Aws\Result startImportTask(array $args = [])
* @method \GuzzleHttp\Promise\Promise startImportTaskAsync(array $args = [])
* @method \Aws\Result stopContinuousExport(array $args = [])
* @method \GuzzleHttp\Promise\Promise stopContinuousExportAsync(array $args = [])
* @method \Aws\Result stopDataCollectionByAgentIds(array $args = [])
* @method \GuzzleHttp\Promise\Promise stopDataCollectionByAgentIdsAsync(array $args = [])
* @method \Aws\Result updateApplication(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateApplicationAsync(array $args = [])
*/
class ApplicationDiscoveryServiceClient extends AwsClient {}

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

@ -1,97 +0,0 @@
<?php
namespace Aws\Appstream;
use Aws\AwsClient;
/**
* This client is used to interact with the **Amazon AppStream** service.
* @method \Aws\Result associateFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise associateFleetAsync(array $args = [])
* @method \Aws\Result batchAssociateUserStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchAssociateUserStackAsync(array $args = [])
* @method \Aws\Result batchDisassociateUserStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchDisassociateUserStackAsync(array $args = [])
* @method \Aws\Result copyImage(array $args = [])
* @method \GuzzleHttp\Promise\Promise copyImageAsync(array $args = [])
* @method \Aws\Result createDirectoryConfig(array $args = [])
* @method \GuzzleHttp\Promise\Promise createDirectoryConfigAsync(array $args = [])
* @method \Aws\Result createFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise createFleetAsync(array $args = [])
* @method \Aws\Result createImageBuilder(array $args = [])
* @method \GuzzleHttp\Promise\Promise createImageBuilderAsync(array $args = [])
* @method \Aws\Result createImageBuilderStreamingURL(array $args = [])
* @method \GuzzleHttp\Promise\Promise createImageBuilderStreamingURLAsync(array $args = [])
* @method \Aws\Result createStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise createStackAsync(array $args = [])
* @method \Aws\Result createStreamingURL(array $args = [])
* @method \GuzzleHttp\Promise\Promise createStreamingURLAsync(array $args = [])
* @method \Aws\Result createUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise createUserAsync(array $args = [])
* @method \Aws\Result deleteDirectoryConfig(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteDirectoryConfigAsync(array $args = [])
* @method \Aws\Result deleteFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteFleetAsync(array $args = [])
* @method \Aws\Result deleteImage(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteImageAsync(array $args = [])
* @method \Aws\Result deleteImageBuilder(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteImageBuilderAsync(array $args = [])
* @method \Aws\Result deleteImagePermissions(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteImagePermissionsAsync(array $args = [])
* @method \Aws\Result deleteStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteStackAsync(array $args = [])
* @method \Aws\Result deleteUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteUserAsync(array $args = [])
* @method \Aws\Result describeDirectoryConfigs(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeDirectoryConfigsAsync(array $args = [])
* @method \Aws\Result describeFleets(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeFleetsAsync(array $args = [])
* @method \Aws\Result describeImageBuilders(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeImageBuildersAsync(array $args = [])
* @method \Aws\Result describeImagePermissions(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeImagePermissionsAsync(array $args = [])
* @method \Aws\Result describeImages(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeImagesAsync(array $args = [])
* @method \Aws\Result describeSessions(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeSessionsAsync(array $args = [])
* @method \Aws\Result describeStacks(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeStacksAsync(array $args = [])
* @method \Aws\Result describeUserStackAssociations(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeUserStackAssociationsAsync(array $args = [])
* @method \Aws\Result describeUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeUsersAsync(array $args = [])
* @method \Aws\Result disableUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise disableUserAsync(array $args = [])
* @method \Aws\Result disassociateFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociateFleetAsync(array $args = [])
* @method \Aws\Result enableUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise enableUserAsync(array $args = [])
* @method \Aws\Result expireSession(array $args = [])
* @method \GuzzleHttp\Promise\Promise expireSessionAsync(array $args = [])
* @method \Aws\Result listAssociatedFleets(array $args = [])
* @method \GuzzleHttp\Promise\Promise listAssociatedFleetsAsync(array $args = [])
* @method \Aws\Result listAssociatedStacks(array $args = [])
* @method \GuzzleHttp\Promise\Promise listAssociatedStacksAsync(array $args = [])
* @method \Aws\Result listTagsForResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
* @method \Aws\Result startFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise startFleetAsync(array $args = [])
* @method \Aws\Result startImageBuilder(array $args = [])
* @method \GuzzleHttp\Promise\Promise startImageBuilderAsync(array $args = [])
* @method \Aws\Result stopFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise stopFleetAsync(array $args = [])
* @method \Aws\Result stopImageBuilder(array $args = [])
* @method \GuzzleHttp\Promise\Promise stopImageBuilderAsync(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 updateDirectoryConfig(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateDirectoryConfigAsync(array $args = [])
* @method \Aws\Result updateFleet(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateFleetAsync(array $args = [])
* @method \Aws\Result updateImagePermissions(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateImagePermissionsAsync(array $args = [])
* @method \Aws\Result updateStack(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateStackAsync(array $args = [])
*/
class AppstreamClient extends AwsClient {}

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

@ -1,47 +0,0 @@
<?php
namespace Aws\Athena;
use Aws\AwsClient;
/**
* This client is used to interact with the **Amazon Athena** service.
* @method \Aws\Result batchGetNamedQuery(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchGetNamedQueryAsync(array $args = [])
* @method \Aws\Result batchGetQueryExecution(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchGetQueryExecutionAsync(array $args = [])
* @method \Aws\Result createNamedQuery(array $args = [])
* @method \GuzzleHttp\Promise\Promise createNamedQueryAsync(array $args = [])
* @method \Aws\Result createWorkGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise createWorkGroupAsync(array $args = [])
* @method \Aws\Result deleteNamedQuery(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteNamedQueryAsync(array $args = [])
* @method \Aws\Result deleteWorkGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteWorkGroupAsync(array $args = [])
* @method \Aws\Result getNamedQuery(array $args = [])
* @method \GuzzleHttp\Promise\Promise getNamedQueryAsync(array $args = [])
* @method \Aws\Result getQueryExecution(array $args = [])
* @method \GuzzleHttp\Promise\Promise getQueryExecutionAsync(array $args = [])
* @method \Aws\Result getQueryResults(array $args = [])
* @method \GuzzleHttp\Promise\Promise getQueryResultsAsync(array $args = [])
* @method \Aws\Result getWorkGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise getWorkGroupAsync(array $args = [])
* @method \Aws\Result listNamedQueries(array $args = [])
* @method \GuzzleHttp\Promise\Promise listNamedQueriesAsync(array $args = [])
* @method \Aws\Result listQueryExecutions(array $args = [])
* @method \GuzzleHttp\Promise\Promise listQueryExecutionsAsync(array $args = [])
* @method \Aws\Result listTagsForResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
* @method \Aws\Result listWorkGroups(array $args = [])
* @method \GuzzleHttp\Promise\Promise listWorkGroupsAsync(array $args = [])
* @method \Aws\Result startQueryExecution(array $args = [])
* @method \GuzzleHttp\Promise\Promise startQueryExecutionAsync(array $args = [])
* @method \Aws\Result stopQueryExecution(array $args = [])
* @method \GuzzleHttp\Promise\Promise stopQueryExecutionAsync(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 updateWorkGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateWorkGroupAsync(array $args = [])
*/
class AthenaClient extends AwsClient {}

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

@ -1,118 +0,0 @@
<?php
namespace Aws\AutoScaling;
use Aws\AwsClient;
/**
* Auto Scaling client.
*
* @method \Aws\Result attachInstances(array $args = [])
* @method \GuzzleHttp\Promise\Promise attachInstancesAsync(array $args = [])
* @method \Aws\Result attachLoadBalancerTargetGroups(array $args = [])
* @method \GuzzleHttp\Promise\Promise attachLoadBalancerTargetGroupsAsync(array $args = [])
* @method \Aws\Result attachLoadBalancers(array $args = [])
* @method \GuzzleHttp\Promise\Promise attachLoadBalancersAsync(array $args = [])
* @method \Aws\Result batchDeleteScheduledAction(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchDeleteScheduledActionAsync(array $args = [])
* @method \Aws\Result batchPutScheduledUpdateGroupAction(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchPutScheduledUpdateGroupActionAsync(array $args = [])
* @method \Aws\Result completeLifecycleAction(array $args = [])
* @method \GuzzleHttp\Promise\Promise completeLifecycleActionAsync(array $args = [])
* @method \Aws\Result createAutoScalingGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAutoScalingGroupAsync(array $args = [])
* @method \Aws\Result createLaunchConfiguration(array $args = [])
* @method \GuzzleHttp\Promise\Promise createLaunchConfigurationAsync(array $args = [])
* @method \Aws\Result createOrUpdateTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise createOrUpdateTagsAsync(array $args = [])
* @method \Aws\Result deleteAutoScalingGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAutoScalingGroupAsync(array $args = [])
* @method \Aws\Result deleteLaunchConfiguration(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteLaunchConfigurationAsync(array $args = [])
* @method \Aws\Result deleteLifecycleHook(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteLifecycleHookAsync(array $args = [])
* @method \Aws\Result deleteNotificationConfiguration(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteNotificationConfigurationAsync(array $args = [])
* @method \Aws\Result deletePolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise deletePolicyAsync(array $args = [])
* @method \Aws\Result deleteScheduledAction(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteScheduledActionAsync(array $args = [])
* @method \Aws\Result deleteTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteTagsAsync(array $args = [])
* @method \Aws\Result describeAccountLimits(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeAccountLimitsAsync(array $args = [])
* @method \Aws\Result describeAdjustmentTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeAdjustmentTypesAsync(array $args = [])
* @method \Aws\Result describeAutoScalingGroups(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeAutoScalingGroupsAsync(array $args = [])
* @method \Aws\Result describeAutoScalingInstances(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeAutoScalingInstancesAsync(array $args = [])
* @method \Aws\Result describeAutoScalingNotificationTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeAutoScalingNotificationTypesAsync(array $args = [])
* @method \Aws\Result describeLaunchConfigurations(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeLaunchConfigurationsAsync(array $args = [])
* @method \Aws\Result describeLifecycleHookTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeLifecycleHookTypesAsync(array $args = [])
* @method \Aws\Result describeLifecycleHooks(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeLifecycleHooksAsync(array $args = [])
* @method \Aws\Result describeLoadBalancerTargetGroups(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeLoadBalancerTargetGroupsAsync(array $args = [])
* @method \Aws\Result describeLoadBalancers(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeLoadBalancersAsync(array $args = [])
* @method \Aws\Result describeMetricCollectionTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeMetricCollectionTypesAsync(array $args = [])
* @method \Aws\Result describeNotificationConfigurations(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeNotificationConfigurationsAsync(array $args = [])
* @method \Aws\Result describePolicies(array $args = [])
* @method \GuzzleHttp\Promise\Promise describePoliciesAsync(array $args = [])
* @method \Aws\Result describeScalingActivities(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScalingActivitiesAsync(array $args = [])
* @method \Aws\Result describeScalingProcessTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScalingProcessTypesAsync(array $args = [])
* @method \Aws\Result describeScheduledActions(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScheduledActionsAsync(array $args = [])
* @method \Aws\Result describeTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeTagsAsync(array $args = [])
* @method \Aws\Result describeTerminationPolicyTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeTerminationPolicyTypesAsync(array $args = [])
* @method \Aws\Result detachInstances(array $args = [])
* @method \GuzzleHttp\Promise\Promise detachInstancesAsync(array $args = [])
* @method \Aws\Result detachLoadBalancerTargetGroups(array $args = [])
* @method \GuzzleHttp\Promise\Promise detachLoadBalancerTargetGroupsAsync(array $args = [])
* @method \Aws\Result detachLoadBalancers(array $args = [])
* @method \GuzzleHttp\Promise\Promise detachLoadBalancersAsync(array $args = [])
* @method \Aws\Result disableMetricsCollection(array $args = [])
* @method \GuzzleHttp\Promise\Promise disableMetricsCollectionAsync(array $args = [])
* @method \Aws\Result enableMetricsCollection(array $args = [])
* @method \GuzzleHttp\Promise\Promise enableMetricsCollectionAsync(array $args = [])
* @method \Aws\Result enterStandby(array $args = [])
* @method \GuzzleHttp\Promise\Promise enterStandbyAsync(array $args = [])
* @method \Aws\Result executePolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise executePolicyAsync(array $args = [])
* @method \Aws\Result exitStandby(array $args = [])
* @method \GuzzleHttp\Promise\Promise exitStandbyAsync(array $args = [])
* @method \Aws\Result putLifecycleHook(array $args = [])
* @method \GuzzleHttp\Promise\Promise putLifecycleHookAsync(array $args = [])
* @method \Aws\Result putNotificationConfiguration(array $args = [])
* @method \GuzzleHttp\Promise\Promise putNotificationConfigurationAsync(array $args = [])
* @method \Aws\Result putScalingPolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise putScalingPolicyAsync(array $args = [])
* @method \Aws\Result putScheduledUpdateGroupAction(array $args = [])
* @method \GuzzleHttp\Promise\Promise putScheduledUpdateGroupActionAsync(array $args = [])
* @method \Aws\Result recordLifecycleActionHeartbeat(array $args = [])
* @method \GuzzleHttp\Promise\Promise recordLifecycleActionHeartbeatAsync(array $args = [])
* @method \Aws\Result resumeProcesses(array $args = [])
* @method \GuzzleHttp\Promise\Promise resumeProcessesAsync(array $args = [])
* @method \Aws\Result setDesiredCapacity(array $args = [])
* @method \GuzzleHttp\Promise\Promise setDesiredCapacityAsync(array $args = [])
* @method \Aws\Result setInstanceHealth(array $args = [])
* @method \GuzzleHttp\Promise\Promise setInstanceHealthAsync(array $args = [])
* @method \Aws\Result setInstanceProtection(array $args = [])
* @method \GuzzleHttp\Promise\Promise setInstanceProtectionAsync(array $args = [])
* @method \Aws\Result suspendProcesses(array $args = [])
* @method \GuzzleHttp\Promise\Promise suspendProcessesAsync(array $args = [])
* @method \Aws\Result terminateInstanceInAutoScalingGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise terminateInstanceInAutoScalingGroupAsync(array $args = [])
* @method \Aws\Result updateAutoScalingGroup(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAutoScalingGroupAsync(array $args = [])
*/
class AutoScalingClient extends AwsClient {}

@ -1,9 +0,0 @@
<?php
namespace Aws\AutoScaling\Exception;
use Aws\Exception\AwsException;
/**
* Represents an error while interacting with the Auto Scaling service.
*/
class AutoScalingException extends AwsException {}

@ -1,21 +0,0 @@
<?php
namespace Aws\AutoScalingPlans;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Auto Scaling Plans** service.
* @method \Aws\Result createScalingPlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise createScalingPlanAsync(array $args = [])
* @method \Aws\Result deleteScalingPlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteScalingPlanAsync(array $args = [])
* @method \Aws\Result describeScalingPlanResources(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScalingPlanResourcesAsync(array $args = [])
* @method \Aws\Result describeScalingPlans(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeScalingPlansAsync(array $args = [])
* @method \Aws\Result getScalingPlanResourceForecastData(array $args = [])
* @method \GuzzleHttp\Promise\Promise getScalingPlanResourceForecastDataAsync(array $args = [])
* @method \Aws\Result updateScalingPlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateScalingPlanAsync(array $args = [])
*/
class AutoScalingPlansClient extends AwsClient {}

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

@ -1,402 +0,0 @@
<?php
namespace Aws;
use Aws\Api\ApiProvider;
use Aws\Api\DocModel;
use Aws\Api\Service;
use Aws\ClientSideMonitoring\ApiCallAttemptMonitoringMiddleware;
use Aws\ClientSideMonitoring\ApiCallMonitoringMiddleware;
use Aws\ClientSideMonitoring\ConfigurationProvider;
use Aws\EndpointDiscovery\EndpointDiscoveryMiddleware;
use Aws\Signature\SignatureProvider;
use GuzzleHttp\Psr7\Uri;
/**
* Default AWS client implementation
*/
class AwsClient implements AwsClientInterface
{
use AwsClientTrait;
/** @var array */
private $config;
/** @var string */
private $region;
/** @var string */
private $endpoint;
/** @var Service */
private $api;
/** @var callable */
private $signatureProvider;
/** @var callable */
private $credentialProvider;
/** @var HandlerList */
private $handlerList;
/** @var array*/
private $defaultRequestOptions;
/**
* Get an array of client constructor arguments used by the client.
*
* @return array
*/
public static function getArguments()
{
return ClientResolver::getDefaultArguments();
}
/**
* The client constructor accepts the following options:
*
* - api_provider: (callable) An optional PHP callable that accepts a
* type, service, and version argument, and returns an array of
* corresponding configuration data. The type value can be one of api,
* waiter, or paginator.
* - credentials:
* (Aws\Credentials\CredentialsInterface|array|bool|callable) Specifies
* the credentials used to sign requests. Provide an
* Aws\Credentials\CredentialsInterface object, an associative array of
* "key", "secret", and an optional "token" key, `false` to use null
* credentials, or a callable credentials provider used to create
* credentials or return null. See Aws\Credentials\CredentialProvider for
* a list of built-in credentials providers. If no credentials are
* provided, the SDK will attempt to load them from the environment.
* - debug: (bool|array) Set to true to display debug information when
* sending requests. Alternatively, you can provide an associative array
* with the following keys: logfn: (callable) Function that is invoked
* with log messages; stream_size: (int) When the size of a stream is
* greater than this number, the stream data will not be logged (set to
* "0" to not log any stream data); scrub_auth: (bool) Set to false to
* disable the scrubbing of auth data from the logged messages; http:
* (bool) Set to false to disable the "debug" feature of lower level HTTP
* adapters (e.g., verbose curl output).
* - stats: (bool|array) Set to true to gather transfer statistics on
* requests sent. Alternatively, you can provide an associative array with
* the following keys: retries: (bool) Set to false to disable reporting
* on retries attempted; http: (bool) Set to true to enable collecting
* statistics from lower level HTTP adapters (e.g., values returned in
* GuzzleHttp\TransferStats). HTTP handlers must support an
* `http_stats_receiver` option for this to have an effect; timer: (bool)
* Set to true to enable a command timer that reports the total wall clock
* time spent on an operation in seconds.
* - disable_host_prefix_injection: (bool) Set to true to disable host prefix
* injection logic for services that use it. This disables the entire
* prefix injection, including the portions supplied by user-defined
* parameters. Setting this flag will have no effect on services that do
* not use host prefix injection.
* - endpoint: (string) The full URI of the webservice. This is only
* required when connecting to a custom endpoint (e.g., a local version
* of S3).
* - endpoint_discovery: (Aws\EndpointDiscovery\ConfigurationInterface,
* Aws\CacheInterface, array, callable) Settings for endpoint discovery.
* Provide an instance of Aws\EndpointDiscovery\ConfigurationInterface,
* an instance Aws\CacheInterface, a callable that provides a promise for
* a Configuration object, or an associative array with the following
* keys: enabled: (bool) Set to true to enable endpoint discovery,
* defaults to false; cache_limit: (int) The maximum number of keys in the
* endpoints cache, defaults to 1000.
* - endpoint_provider: (callable) An optional PHP callable that
* accepts a hash of options including a "service" and "region" key and
* returns NULL or a hash of endpoint data, of which the "endpoint" key
* is required. See Aws\Endpoint\EndpointProvider for a list of built-in
* providers.
* - handler: (callable) A handler that accepts a command object,
* request object and returns a promise that is fulfilled with an
* Aws\ResultInterface object or rejected with an
* Aws\Exception\AwsException. A handler does not accept a next handler
* as it is terminal and expected to fulfill a command. If no handler is
* provided, a default Guzzle handler will be utilized.
* - http: (array, default=array(0)) Set to an array of SDK request
* options to apply to each request (e.g., proxy, verify, etc.).
* - http_handler: (callable) An HTTP handler is a function that
* accepts a PSR-7 request object and returns a promise that is fulfilled
* with a PSR-7 response object or rejected with an array of exception
* data. NOTE: This option supersedes any provided "handler" option.
* - idempotency_auto_fill: (bool|callable) Set to false to disable SDK to
* populate parameters that enabled 'idempotencyToken' trait with a random
* UUID v4 value on your behalf. Using default value 'true' still allows
* parameter value to be overwritten when provided. Note: auto-fill only
* works when cryptographically secure random bytes generator functions
* (random_bytes, openssl_random_pseudo_bytes or mcrypt_create_iv) can be
* found. You may also provide a callable source of random bytes.
* - profile: (string) Allows you to specify which profile to use when
* credentials are created from the AWS credentials file in your HOME
* directory. This setting overrides the AWS_PROFILE environment
* variable. Note: Specifying "profile" will cause the "credentials" key
* to be ignored.
* - region: (string, required) Region to connect to. See
* http://docs.aws.amazon.com/general/latest/gr/rande.html for a list of
* available regions.
* - retries: (int, default=int(3)) Configures the maximum number of
* allowed retries for a client (pass 0 to disable retries).
* - scheme: (string, default=string(5) "https") URI scheme to use when
* connecting connect. The SDK will utilize "https" endpoints (i.e.,
* utilize SSL/TLS connections) by default. You can attempt to connect to
* a service over an unencrypted "http" endpoint by setting ``scheme`` to
* "http".
* - signature_provider: (callable) A callable that accepts a signature
* version name (e.g., "v4"), a service name, and region, and
* returns a SignatureInterface object or null. This provider is used to
* create signers utilized by the client. See
* Aws\Signature\SignatureProvider for a list of built-in providers
* - signature_version: (string) A string representing a custom
* signature version to use with a service (e.g., v4). Note that
* per/operation signature version MAY override this requested signature
* version.
* - validate: (bool, default=bool(true)) Set to false to disable
* client-side parameter validation.
* - version: (string, required) The version of the webservice to
* utilize (e.g., 2006-03-01).
*
* @param array $args Client configuration arguments.
*
* @throws \InvalidArgumentException if any required options are missing or
* the service is not supported.
*/
public function __construct(array $args)
{
list($service, $exceptionClass) = $this->parseClass();
if (!isset($args['service'])) {
$args['service'] = manifest($service)['endpoint'];
}
if (!isset($args['exception_class'])) {
$args['exception_class'] = $exceptionClass;
}
$this->handlerList = new HandlerList();
$resolver = new ClientResolver(static::getArguments());
$config = $resolver->resolve($args, $this->handlerList);
$this->api = $config['api'];
$this->signatureProvider = $config['signature_provider'];
$this->endpoint = new Uri($config['endpoint']);
$this->credentialProvider = $config['credentials'];
$this->region = isset($config['region']) ? $config['region'] : null;
$this->config = $config['config'];
$this->defaultRequestOptions = $config['http'];
$this->addSignatureMiddleware();
$this->addInvocationId();
$this->addClientSideMonitoring($args);
$this->addEndpointParameterMiddleware($args);
$this->addEndpointDiscoveryMiddleware($config, $args);
if (isset($args['with_resolved'])) {
$args['with_resolved']($config);
}
}
public function getHandlerList()
{
return $this->handlerList;
}
public function getConfig($option = null)
{
return $option === null
? $this->config
: (isset($this->config[$option])
? $this->config[$option]
: null);
}
public function getCredentials()
{
$fn = $this->credentialProvider;
return $fn();
}
public function getEndpoint()
{
return $this->endpoint;
}
public function getRegion()
{
return $this->region;
}
public function getApi()
{
return $this->api;
}
public function getCommand($name, array $args = [])
{
// Fail fast if the command cannot be found in the description.
if (!isset($this->getApi()['operations'][$name])) {
$name = ucfirst($name);
if (!isset($this->getApi()['operations'][$name])) {
throw new \InvalidArgumentException("Operation not found: $name");
}
}
if (!isset($args['@http'])) {
$args['@http'] = $this->defaultRequestOptions;
} else {
$args['@http'] += $this->defaultRequestOptions;
}
return new Command($name, $args, clone $this->getHandlerList());
}
public function __sleep()
{
throw new \RuntimeException('Instances of ' . static::class
. ' cannot be serialized');
}
/**
* Get the signature_provider function of the client.
*
* @return callable
*/
final protected function getSignatureProvider()
{
return $this->signatureProvider;
}
/**
* Parse the class name and setup the custom exception class of the client
* and return the "service" name of the client and "exception_class".
*
* @return array
*/
private function parseClass()
{
$klass = get_class($this);
if ($klass === __CLASS__) {
return ['', 'Aws\Exception\AwsException'];
}
$service = substr($klass, strrpos($klass, '\\') + 1, -6);
return [
strtolower($service),
"Aws\\{$service}\\Exception\\{$service}Exception"
];
}
private function addEndpointParameterMiddleware($args)
{
if (empty($args['disable_host_prefix_injection'])) {
$list = $this->getHandlerList();
$list->appendBuild(
EndpointParameterMiddleware::wrap(
$this->api
),
'endpoint_parameter'
);
}
}
private function addEndpointDiscoveryMiddleware($config, $args)
{
$list = $this->getHandlerList();
if (!isset($args['endpoint'])) {
$list->appendBuild(
EndpointDiscoveryMiddleware::wrap(
$this,
$args,
$config['endpoint_discovery']
),
'EndpointDiscoveryMiddleware'
);
}
}
private function addSignatureMiddleware()
{
$api = $this->getApi();
$provider = $this->signatureProvider;
$version = $this->config['signature_version'];
$name = $this->config['signing_name'];
$region = $this->config['signing_region'];
$resolver = static function (
CommandInterface $c
) use ($api, $provider, $name, $region, $version) {
$authType = $api->getOperation($c->getName())['authtype'];
switch ($authType){
case 'none':
$version = 'anonymous';
break;
case 'v4-unsigned-body':
$version = 'v4-unsigned-body';
break;
}
return SignatureProvider::resolve($provider, $version, $name, $region);
};
$this->handlerList->appendSign(
Middleware::signer($this->credentialProvider, $resolver),
'signer'
);
}
private function addInvocationId()
{
// Add invocation id to each request
$this->handlerList->prependSign(Middleware::invocationId(), 'invocation-id');
}
private function addClientSideMonitoring($args)
{
$options = ConfigurationProvider::defaultProvider($args);
$this->handlerList->appendBuild(
ApiCallMonitoringMiddleware::wrap(
$this->credentialProvider,
$options,
$this->region,
$this->getApi()->getServiceId()
),
'ApiCallMonitoringMiddleware'
);
$callAttemptMiddleware = ApiCallAttemptMonitoringMiddleware::wrap(
$this->credentialProvider,
$options,
$this->region,
$this->getApi()->getServiceId()
);
$this->handlerList->appendAttempt (
$callAttemptMiddleware,
'ApiCallAttemptMonitoringMiddleware'
);
}
/**
* Returns a service model and doc model with any necessary changes
* applied.
*
* @param array $api Array of service data being documented.
* @param array $docs Array of doc model data.
*
* @return array Tuple containing a [Service, DocModel]
*
* @internal This should only used to document the service API.
* @codeCoverageIgnore
*/
public static function applyDocFilters(array $api, array $docs)
{
return [
new Service($api, ApiProvider::defaultProvider()),
new DocModel($docs)
];
}
/**
* @deprecated
* @return static
*/
public static function factory(array $config = [])
{
return new static($config);
}
}

@ -1,169 +0,0 @@
<?php
namespace Aws;
use Psr\Http\Message\UriInterface;
use GuzzleHttp\Promise\PromiseInterface;
/**
* Represents an AWS client.
*/
interface AwsClientInterface
{
/**
* Creates and executes a command for an operation by name.
*
* Suffixing an operation name with "Async" will return a
* promise that can be used to execute commands asynchronously.
*
* @param string $name Name of the command to execute.
* @param array $arguments Arguments to pass to the getCommand method.
*
* @return ResultInterface
* @throws \Exception
*/
public function __call($name, array $arguments);
/**
* Create a command for an operation name.
*
* Special keys may be set on the command to control how it behaves,
* including:
*
* - @http: Associative array of transfer specific options to apply to the
* request that is serialized for this command. Available keys include
* "proxy", "verify", "timeout", "connect_timeout", "debug", "delay", and
* "headers".
*
* @param string $name Name of the operation to use in the command
* @param array $args Arguments to pass to the command
*
* @return CommandInterface
* @throws \InvalidArgumentException if no command can be found by name
*/
public function getCommand($name, array $args = []);
/**
* Execute a single command.
*
* @param CommandInterface $command Command to execute
*
* @return ResultInterface
* @throws \Exception
*/
public function execute(CommandInterface $command);
/**
* Execute a command asynchronously.
*
* @param CommandInterface $command Command to execute
*
* @return \GuzzleHttp\Promise\PromiseInterface
*/
public function executeAsync(CommandInterface $command);
/**
* Returns a promise that is fulfilled with an
* {@see \Aws\Credentials\CredentialsInterface} object.
*
* If you need the credentials synchronously, then call the wait() method
* on the returned promise.
*
* @return PromiseInterface
*/
public function getCredentials();
/**
* Get the region to which the client is configured to send requests.
*
* @return string
*/
public function getRegion();
/**
* Gets the default endpoint, or base URL, used by the client.
*
* @return UriInterface
*/
public function getEndpoint();
/**
* Get the service description associated with the client.
*
* @return \Aws\Api\Service
*/
public function getApi();
/**
* Get a client configuration value.
*
* @param string|null $option The option to retrieve. Pass null to retrieve
* all options.
* @return mixed|null
*/
public function getConfig($option = null);
/**
* Get the handler list used to transfer commands.
*
* This list can be modified to add middleware or to change the underlying
* handler used to send HTTP requests.
*
* @return HandlerList
*/
public function getHandlerList();
/**
* Get a resource iterator for the specified operation.
*
* @param string $name Name of the iterator to retrieve.
* @param array $args Command arguments to use with each command.
*
* @return \Iterator
* @throws \UnexpectedValueException if the iterator config is invalid.
*/
public function getIterator($name, array $args = []);
/**
* Get a result paginator for the specified operation.
*
* @param string $name Name of the operation used for iterator
* @param array $args Command args to be used with each command
*
* @return \Aws\ResultPaginator
* @throws \UnexpectedValueException if the iterator config is invalid.
*/
public function getPaginator($name, array $args = []);
/**
* Wait until a resource is in a particular state.
*
* @param string|callable $name Name of the waiter that defines the wait
* configuration and conditions.
* @param array $args Args to be used with each command executed
* by the waiter. Waiter configuration options
* can be provided in an associative array in
* the @waiter key.
* @return void
* @throws \UnexpectedValueException if the waiter is invalid.
*/
public function waitUntil($name, array $args = []);
/**
* Get a waiter that waits until a resource is in a particular state.
*
* Retrieving a waiter can be useful when you wish to wait asynchronously:
*
* $waiter = $client->getWaiter('foo', ['bar' => 'baz']);
* $waiter->promise()->then(function () { echo 'Done!'; });
*
* @param string|callable $name Name of the waiter that defines the wait
* configuration and conditions.
* @param array $args Args to be used with each command executed
* by the waiter. Waiter configuration options
* can be provided in an associative array in
* the @waiter key.
* @return \Aws\Waiter
* @throws \UnexpectedValueException if the waiter is invalid.
*/
public function getWaiter($name, array $args = []);
}

@ -1,92 +0,0 @@
<?php
namespace Aws;
use Aws\Api\Service;
/**
* A trait providing generic functionality for interacting with Amazon Web
* Services. This is meant to be used in classes implementing
* \Aws\AwsClientInterface
*/
trait AwsClientTrait
{
public function getPaginator($name, array $args = [])
{
$config = $this->getApi()->getPaginatorConfig($name);
return new ResultPaginator($this, $name, $args, $config);
}
public function getIterator($name, array $args = [])
{
$config = $this->getApi()->getPaginatorConfig($name);
if (!$config['result_key']) {
throw new \UnexpectedValueException(sprintf(
'There are no resources to iterate for the %s operation of %s',
$name, $this->getApi()['serviceFullName']
));
}
$key = is_array($config['result_key'])
? $config['result_key'][0]
: $config['result_key'];
if ($config['output_token'] && $config['input_token']) {
return $this->getPaginator($name, $args)->search($key);
}
$result = $this->execute($this->getCommand($name, $args))->search($key);
return new \ArrayIterator((array) $result);
}
public function waitUntil($name, array $args = [])
{
return $this->getWaiter($name, $args)->promise()->wait();
}
public function getWaiter($name, array $args = [])
{
$config = isset($args['@waiter']) ? $args['@waiter'] : [];
$config += $this->getApi()->getWaiterConfig($name);
return new Waiter($this, $name, $args, $config);
}
public function execute(CommandInterface $command)
{
return $this->executeAsync($command)->wait();
}
public function executeAsync(CommandInterface $command)
{
$handler = $command->getHandlerList()->resolve();
return $handler($command);
}
public function __call($name, array $args)
{
$params = isset($args[0]) ? $args[0] : [];
if (substr($name, -5) === 'Async') {
return $this->executeAsync(
$this->getCommand(substr($name, 0, -5), $params)
);
}
return $this->execute($this->getCommand($name, $params));
}
/**
* @param string $name
* @param array $args
*
* @return CommandInterface
*/
abstract public function getCommand($name, array $args = []);
/**
* @return Service
*/
abstract public function getApi();
}

@ -1,95 +0,0 @@
<?php
namespace Aws\Backup;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Backup** service.
* @method \Aws\Result createBackupPlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise createBackupPlanAsync(array $args = [])
* @method \Aws\Result createBackupSelection(array $args = [])
* @method \GuzzleHttp\Promise\Promise createBackupSelectionAsync(array $args = [])
* @method \Aws\Result createBackupVault(array $args = [])
* @method \GuzzleHttp\Promise\Promise createBackupVaultAsync(array $args = [])
* @method \Aws\Result deleteBackupPlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBackupPlanAsync(array $args = [])
* @method \Aws\Result deleteBackupSelection(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBackupSelectionAsync(array $args = [])
* @method \Aws\Result deleteBackupVault(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBackupVaultAsync(array $args = [])
* @method \Aws\Result deleteBackupVaultAccessPolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBackupVaultAccessPolicyAsync(array $args = [])
* @method \Aws\Result deleteBackupVaultNotifications(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBackupVaultNotificationsAsync(array $args = [])
* @method \Aws\Result deleteRecoveryPoint(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteRecoveryPointAsync(array $args = [])
* @method \Aws\Result describeBackupJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBackupJobAsync(array $args = [])
* @method \Aws\Result describeBackupVault(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBackupVaultAsync(array $args = [])
* @method \Aws\Result describeProtectedResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeProtectedResourceAsync(array $args = [])
* @method \Aws\Result describeRecoveryPoint(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeRecoveryPointAsync(array $args = [])
* @method \Aws\Result describeRestoreJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeRestoreJobAsync(array $args = [])
* @method \Aws\Result exportBackupPlanTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise exportBackupPlanTemplateAsync(array $args = [])
* @method \Aws\Result getBackupPlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBackupPlanAsync(array $args = [])
* @method \Aws\Result getBackupPlanFromJSON(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBackupPlanFromJSONAsync(array $args = [])
* @method \Aws\Result getBackupPlanFromTemplate(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBackupPlanFromTemplateAsync(array $args = [])
* @method \Aws\Result getBackupSelection(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBackupSelectionAsync(array $args = [])
* @method \Aws\Result getBackupVaultAccessPolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBackupVaultAccessPolicyAsync(array $args = [])
* @method \Aws\Result getBackupVaultNotifications(array $args = [])
* @method \GuzzleHttp\Promise\Promise getBackupVaultNotificationsAsync(array $args = [])
* @method \Aws\Result getRecoveryPointRestoreMetadata(array $args = [])
* @method \GuzzleHttp\Promise\Promise getRecoveryPointRestoreMetadataAsync(array $args = [])
* @method \Aws\Result getSupportedResourceTypes(array $args = [])
* @method \GuzzleHttp\Promise\Promise getSupportedResourceTypesAsync(array $args = [])
* @method \Aws\Result listBackupJobs(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBackupJobsAsync(array $args = [])
* @method \Aws\Result listBackupPlanTemplates(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBackupPlanTemplatesAsync(array $args = [])
* @method \Aws\Result listBackupPlanVersions(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBackupPlanVersionsAsync(array $args = [])
* @method \Aws\Result listBackupPlans(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBackupPlansAsync(array $args = [])
* @method \Aws\Result listBackupSelections(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBackupSelectionsAsync(array $args = [])
* @method \Aws\Result listBackupVaults(array $args = [])
* @method \GuzzleHttp\Promise\Promise listBackupVaultsAsync(array $args = [])
* @method \Aws\Result listProtectedResources(array $args = [])
* @method \GuzzleHttp\Promise\Promise listProtectedResourcesAsync(array $args = [])
* @method \Aws\Result listRecoveryPointsByBackupVault(array $args = [])
* @method \GuzzleHttp\Promise\Promise listRecoveryPointsByBackupVaultAsync(array $args = [])
* @method \Aws\Result listRecoveryPointsByResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listRecoveryPointsByResourceAsync(array $args = [])
* @method \Aws\Result listRestoreJobs(array $args = [])
* @method \GuzzleHttp\Promise\Promise listRestoreJobsAsync(array $args = [])
* @method \Aws\Result listTags(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsAsync(array $args = [])
* @method \Aws\Result putBackupVaultAccessPolicy(array $args = [])
* @method \GuzzleHttp\Promise\Promise putBackupVaultAccessPolicyAsync(array $args = [])
* @method \Aws\Result putBackupVaultNotifications(array $args = [])
* @method \GuzzleHttp\Promise\Promise putBackupVaultNotificationsAsync(array $args = [])
* @method \Aws\Result startBackupJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise startBackupJobAsync(array $args = [])
* @method \Aws\Result startRestoreJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise startRestoreJobAsync(array $args = [])
* @method \Aws\Result stopBackupJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise stopBackupJobAsync(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 updateBackupPlan(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateBackupPlanAsync(array $args = [])
* @method \Aws\Result updateRecoveryPointLifecycle(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateRecoveryPointLifecycleAsync(array $args = [])
*/
class BackupClient extends AwsClient {}

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

@ -1,41 +0,0 @@
<?php
namespace Aws\Batch;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Batch** service.
* @method \Aws\Result cancelJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise cancelJobAsync(array $args = [])
* @method \Aws\Result createComputeEnvironment(array $args = [])
* @method \GuzzleHttp\Promise\Promise createComputeEnvironmentAsync(array $args = [])
* @method \Aws\Result createJobQueue(array $args = [])
* @method \GuzzleHttp\Promise\Promise createJobQueueAsync(array $args = [])
* @method \Aws\Result deleteComputeEnvironment(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteComputeEnvironmentAsync(array $args = [])
* @method \Aws\Result deleteJobQueue(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteJobQueueAsync(array $args = [])
* @method \Aws\Result deregisterJobDefinition(array $args = [])
* @method \GuzzleHttp\Promise\Promise deregisterJobDefinitionAsync(array $args = [])
* @method \Aws\Result describeComputeEnvironments(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeComputeEnvironmentsAsync(array $args = [])
* @method \Aws\Result describeJobDefinitions(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeJobDefinitionsAsync(array $args = [])
* @method \Aws\Result describeJobQueues(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeJobQueuesAsync(array $args = [])
* @method \Aws\Result describeJobs(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeJobsAsync(array $args = [])
* @method \Aws\Result listJobs(array $args = [])
* @method \GuzzleHttp\Promise\Promise listJobsAsync(array $args = [])
* @method \Aws\Result registerJobDefinition(array $args = [])
* @method \GuzzleHttp\Promise\Promise registerJobDefinitionAsync(array $args = [])
* @method \Aws\Result submitJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise submitJobAsync(array $args = [])
* @method \Aws\Result terminateJob(array $args = [])
* @method \GuzzleHttp\Promise\Promise terminateJobAsync(array $args = [])
* @method \Aws\Result updateComputeEnvironment(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateComputeEnvironmentAsync(array $args = [])
* @method \Aws\Result updateJobQueue(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateJobQueueAsync(array $args = [])
*/
class BatchClient extends AwsClient {}

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

@ -1,37 +0,0 @@
<?php
namespace Aws\Budgets;
use Aws\AwsClient;
/**
* This client is used to interact with the **AWS Budgets** service.
* @method \Aws\Result createBudget(array $args = [])
* @method \GuzzleHttp\Promise\Promise createBudgetAsync(array $args = [])
* @method \Aws\Result createNotification(array $args = [])
* @method \GuzzleHttp\Promise\Promise createNotificationAsync(array $args = [])
* @method \Aws\Result createSubscriber(array $args = [])
* @method \GuzzleHttp\Promise\Promise createSubscriberAsync(array $args = [])
* @method \Aws\Result deleteBudget(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteBudgetAsync(array $args = [])
* @method \Aws\Result deleteNotification(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteNotificationAsync(array $args = [])
* @method \Aws\Result deleteSubscriber(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteSubscriberAsync(array $args = [])
* @method \Aws\Result describeBudget(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBudgetAsync(array $args = [])
* @method \Aws\Result describeBudgetPerformanceHistory(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBudgetPerformanceHistoryAsync(array $args = [])
* @method \Aws\Result describeBudgets(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeBudgetsAsync(array $args = [])
* @method \Aws\Result describeNotificationsForBudget(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeNotificationsForBudgetAsync(array $args = [])
* @method \Aws\Result describeSubscribersForNotification(array $args = [])
* @method \GuzzleHttp\Promise\Promise describeSubscribersForNotificationAsync(array $args = [])
* @method \Aws\Result updateBudget(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateBudgetAsync(array $args = [])
* @method \Aws\Result updateNotification(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateNotificationAsync(array $args = [])
* @method \Aws\Result updateSubscriber(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateSubscriberAsync(array $args = [])
*/
class BudgetsClient extends AwsClient {}

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

@ -1,34 +0,0 @@
<?php
namespace Aws;
/**
* Represents a simple cache interface.
*/
interface CacheInterface
{
/**
* Get a cache item by key.
*
* @param string $key Key to retrieve.
*
* @return mixed|null Returns the value or null if not found.
*/
public function get($key);
/**
* Set a cache key value.
*
* @param string $key Key to set
* @param mixed $value Value to set.
* @param int $ttl Number of seconds the item is allowed to live. Set
* to 0 to allow an unlimited lifetime.
*/
public function set($key, $value, $ttl = 0);
/**
* Remove a cache key.
*
* @param string $key Key to remove.
*/
public function remove($key);
}

@ -1,109 +0,0 @@
<?php
namespace Aws\Chime;
use Aws\AwsClient;
/**
* This client is used to interact with the **Amazon Chime** service.
* @method \Aws\Result associatePhoneNumberWithUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise associatePhoneNumberWithUserAsync(array $args = [])
* @method \Aws\Result associatePhoneNumbersWithVoiceConnector(array $args = [])
* @method \GuzzleHttp\Promise\Promise associatePhoneNumbersWithVoiceConnectorAsync(array $args = [])
* @method \Aws\Result batchDeletePhoneNumber(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchDeletePhoneNumberAsync(array $args = [])
* @method \Aws\Result batchSuspendUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchSuspendUserAsync(array $args = [])
* @method \Aws\Result batchUnsuspendUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchUnsuspendUserAsync(array $args = [])
* @method \Aws\Result batchUpdatePhoneNumber(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchUpdatePhoneNumberAsync(array $args = [])
* @method \Aws\Result batchUpdateUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise batchUpdateUserAsync(array $args = [])
* @method \Aws\Result createAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise createAccountAsync(array $args = [])
* @method \Aws\Result createPhoneNumberOrder(array $args = [])
* @method \GuzzleHttp\Promise\Promise createPhoneNumberOrderAsync(array $args = [])
* @method \Aws\Result createVoiceConnector(array $args = [])
* @method \GuzzleHttp\Promise\Promise createVoiceConnectorAsync(array $args = [])
* @method \Aws\Result deleteAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteAccountAsync(array $args = [])
* @method \Aws\Result deletePhoneNumber(array $args = [])
* @method \GuzzleHttp\Promise\Promise deletePhoneNumberAsync(array $args = [])
* @method \Aws\Result deleteVoiceConnector(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVoiceConnectorAsync(array $args = [])
* @method \Aws\Result deleteVoiceConnectorOrigination(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVoiceConnectorOriginationAsync(array $args = [])
* @method \Aws\Result deleteVoiceConnectorTermination(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVoiceConnectorTerminationAsync(array $args = [])
* @method \Aws\Result deleteVoiceConnectorTerminationCredentials(array $args = [])
* @method \GuzzleHttp\Promise\Promise deleteVoiceConnectorTerminationCredentialsAsync(array $args = [])
* @method \Aws\Result disassociatePhoneNumberFromUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociatePhoneNumberFromUserAsync(array $args = [])
* @method \Aws\Result disassociatePhoneNumbersFromVoiceConnector(array $args = [])
* @method \GuzzleHttp\Promise\Promise disassociatePhoneNumbersFromVoiceConnectorAsync(array $args = [])
* @method \Aws\Result getAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAccountAsync(array $args = [])
* @method \Aws\Result getAccountSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise getAccountSettingsAsync(array $args = [])
* @method \Aws\Result getGlobalSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise getGlobalSettingsAsync(array $args = [])
* @method \Aws\Result getPhoneNumber(array $args = [])
* @method \GuzzleHttp\Promise\Promise getPhoneNumberAsync(array $args = [])
* @method \Aws\Result getPhoneNumberOrder(array $args = [])
* @method \GuzzleHttp\Promise\Promise getPhoneNumberOrderAsync(array $args = [])
* @method \Aws\Result getUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUserAsync(array $args = [])
* @method \Aws\Result getUserSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise getUserSettingsAsync(array $args = [])
* @method \Aws\Result getVoiceConnector(array $args = [])
* @method \GuzzleHttp\Promise\Promise getVoiceConnectorAsync(array $args = [])
* @method \Aws\Result getVoiceConnectorOrigination(array $args = [])
* @method \GuzzleHttp\Promise\Promise getVoiceConnectorOriginationAsync(array $args = [])
* @method \Aws\Result getVoiceConnectorTermination(array $args = [])
* @method \GuzzleHttp\Promise\Promise getVoiceConnectorTerminationAsync(array $args = [])
* @method \Aws\Result getVoiceConnectorTerminationHealth(array $args = [])
* @method \GuzzleHttp\Promise\Promise getVoiceConnectorTerminationHealthAsync(array $args = [])
* @method \Aws\Result inviteUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise inviteUsersAsync(array $args = [])
* @method \Aws\Result listAccounts(array $args = [])
* @method \GuzzleHttp\Promise\Promise listAccountsAsync(array $args = [])
* @method \Aws\Result listPhoneNumberOrders(array $args = [])
* @method \GuzzleHttp\Promise\Promise listPhoneNumberOrdersAsync(array $args = [])
* @method \Aws\Result listPhoneNumbers(array $args = [])
* @method \GuzzleHttp\Promise\Promise listPhoneNumbersAsync(array $args = [])
* @method \Aws\Result listUsers(array $args = [])
* @method \GuzzleHttp\Promise\Promise listUsersAsync(array $args = [])
* @method \Aws\Result listVoiceConnectorTerminationCredentials(array $args = [])
* @method \GuzzleHttp\Promise\Promise listVoiceConnectorTerminationCredentialsAsync(array $args = [])
* @method \Aws\Result listVoiceConnectors(array $args = [])
* @method \GuzzleHttp\Promise\Promise listVoiceConnectorsAsync(array $args = [])
* @method \Aws\Result logoutUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise logoutUserAsync(array $args = [])
* @method \Aws\Result putVoiceConnectorOrigination(array $args = [])
* @method \GuzzleHttp\Promise\Promise putVoiceConnectorOriginationAsync(array $args = [])
* @method \Aws\Result putVoiceConnectorTermination(array $args = [])
* @method \GuzzleHttp\Promise\Promise putVoiceConnectorTerminationAsync(array $args = [])
* @method \Aws\Result putVoiceConnectorTerminationCredentials(array $args = [])
* @method \GuzzleHttp\Promise\Promise putVoiceConnectorTerminationCredentialsAsync(array $args = [])
* @method \Aws\Result resetPersonalPIN(array $args = [])
* @method \GuzzleHttp\Promise\Promise resetPersonalPINAsync(array $args = [])
* @method \Aws\Result restorePhoneNumber(array $args = [])
* @method \GuzzleHttp\Promise\Promise restorePhoneNumberAsync(array $args = [])
* @method \Aws\Result searchAvailablePhoneNumbers(array $args = [])
* @method \GuzzleHttp\Promise\Promise searchAvailablePhoneNumbersAsync(array $args = [])
* @method \Aws\Result updateAccount(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAccountAsync(array $args = [])
* @method \Aws\Result updateAccountSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateAccountSettingsAsync(array $args = [])
* @method \Aws\Result updateGlobalSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateGlobalSettingsAsync(array $args = [])
* @method \Aws\Result updatePhoneNumber(array $args = [])
* @method \GuzzleHttp\Promise\Promise updatePhoneNumberAsync(array $args = [])
* @method \Aws\Result updateUser(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateUserAsync(array $args = [])
* @method \Aws\Result updateUserSettings(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateUserSettingsAsync(array $args = [])
* @method \Aws\Result updateVoiceConnector(array $args = [])
* @method \GuzzleHttp\Promise\Promise updateVoiceConnectorAsync(array $args = [])
*/
class ChimeClient extends AwsClient {}

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

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

Loading…
Cancel
Save