updated-packages
This commit is contained in:
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
175
.idea/community.iml
generated
Normal file
175
.idea/community.iml
generated
Normal file
@@ -0,0 +1,175 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/app" isTestSource="false" packagePrefix="App\" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="false" packagePrefix="Tests\" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/tijsverkoyen/css-to-inline-styles" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/brozot/laravel-fcm" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/dragonmantank/cron-expression" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nicolaslopezj/searchable" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/php-webdriver/webdriver" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/intervention/image" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/thomaswelton/laravel-gravatar" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/thomaswelton/gravatarlib" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nunomaduro/collision" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/yajra/laravel-datatables-oracle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/maatwebsite/excel" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/beyondcode/laravel-dump-server" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/davibennun/laravel-push-notification" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/tymon/jwt-auth" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/egulias/email-validator" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/fzaninotto/faker" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/global-state" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phenx/php-font-lib" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/mremi/url-shortener" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-enumerator" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/resource-operations" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/dnoegel/php-xdg-base-dir" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-reflector" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/version" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/chumper/datatable" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/opis/closure" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/recursion-context" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/chumper/zipper" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/filp/whoops" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpoffice/phpspreadsheet" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpoption/phpoption" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sly/notification-pusher" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/diff" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/markbaker/complex" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/bugsnag/bugsnag-laravel" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/markbaker/matrix" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/mtdowling/jmespath.php" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/paragonie/random_compat" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/vsmoraes/laravel-pdf" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/fideloper/proxy" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/maennchen/zipstream-php" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psy/psysh" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/bugsnag/bugsnag" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/unisharp/laravel-filemanager" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/unisharp/laravel-ckeditor" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/vlucas/phpdotenv" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/lcobucci/jwt" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/neitanod/forceutf8" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-client" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/torann/geoip" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/simple-cache" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/julien-c/iso3166" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/hamcrest/hamcrest-php" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/inflector" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/gitonomy/gitlib" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/tedivm/fetch" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/event-manager" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/cache" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/dbal" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/deprecations" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/lexer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/predis/predis" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ramsey/uuid" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/nesbot/carbon" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/namshi/jose" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/league/flysystem" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/league/mime-type-detection" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/league/oauth1-client" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzle/guzzle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/debug" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/dom-crawler" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-idn" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/flowjs/flow-php-server" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/ezyang/htmlpurifier" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation-contracts" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/filesystem" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-iconv" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-kernel" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/routing" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/finder" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-client-contracts" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/css-selector" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/options-resolver" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/error-handler" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/deprecation-contracts" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/mime" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/service-contracts" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/var-dumper" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php72" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-foundation" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php73" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/aws/aws-crt-php" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/yaml" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/aws/aws-sdk-php" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/process" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/phpunit" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-file-iterator" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/erusev/parsedown" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-text-template" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpspec/php-diff" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/php-parallel-lint/php-console-color" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpspec/phpspec" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/php-parallel-lint/php-console-highlighter" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-code-coverage" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-token-stream" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/dompdf/dompdf" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/php-enum" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-escaper" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/version" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/davejamesmiller/laravel-breadcrumbs" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/manifest" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/container-interop/container-interop" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpspec/prophecy" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/laravelcollective/html" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/dusk" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-http" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/codacy/coverage" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/mockery/mockery" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zendservice-apple-apns" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-loader" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-validator" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/giggsey/libphonenumber-for-php" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-uri" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/socialite" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zendservice-google-gcm" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/tinker" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-stdlib" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/framework" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/zendframework/zend-json" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/giggsey/locale" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/vendor/propaganistas/laravel-phone" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="JSHint" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
16
.idea/jsLinters/jshint.xml
generated
Normal file
16
.idea/jsLinters/jshint.xml
generated
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JSHintConfiguration" version="2.13.0" use-config-file="true" use-custom-config-file="true" custom-config-file-path="$PROJECT_DIR$/public/lb-faveo/plugins/moment-develop/.jshintrc">
|
||||
<option bitwise="true" />
|
||||
<option browser="true" />
|
||||
<option curly="true" />
|
||||
<option eqeqeq="true" />
|
||||
<option forin="true" />
|
||||
<option maxerr="50" />
|
||||
<option noarg="true" />
|
||||
<option noempty="true" />
|
||||
<option nonew="true" />
|
||||
<option strict="true" />
|
||||
<option undef="true" />
|
||||
</component>
|
||||
</project>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/community.iml" filepath="$PROJECT_DIR$/.idea/community.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
14
.idea/php-test-framework.xml
generated
Normal file
14
.idea/php-test-framework.xml
generated
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PhpTestFrameworkSettings">
|
||||
<test_tools>
|
||||
<tool tool_name="PHPSpec">
|
||||
<settings>
|
||||
<configurations>
|
||||
<local_configuration executable_path="$PROJECT_DIR$/vendor/phpspec/phpspec/bin/phpspec" />
|
||||
</configurations>
|
||||
</settings>
|
||||
</tool>
|
||||
</test_tools>
|
||||
</component>
|
||||
</project>
|
176
.idea/php.xml
generated
Normal file
176
.idea/php.xml
generated
Normal file
@@ -0,0 +1,176 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PhpIncludePathManager">
|
||||
<include_path>
|
||||
<path value="$PROJECT_DIR$/vendor/tijsverkoyen/css-to-inline-styles" />
|
||||
<path value="$PROJECT_DIR$/vendor/brozot/laravel-fcm" />
|
||||
<path value="$PROJECT_DIR$/vendor/dragonmantank/cron-expression" />
|
||||
<path value="$PROJECT_DIR$/vendor/nicolaslopezj/searchable" />
|
||||
<path value="$PROJECT_DIR$/vendor/php-webdriver/webdriver" />
|
||||
<path value="$PROJECT_DIR$/vendor/swiftmailer/swiftmailer" />
|
||||
<path value="$PROJECT_DIR$/vendor/intervention/image" />
|
||||
<path value="$PROJECT_DIR$/vendor/thomaswelton/laravel-gravatar" />
|
||||
<path value="$PROJECT_DIR$/vendor/thomaswelton/gravatarlib" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
||||
<path value="$PROJECT_DIR$/vendor/nunomaduro/collision" />
|
||||
<path value="$PROJECT_DIR$/vendor/yajra/laravel-datatables-oracle" />
|
||||
<path value="$PROJECT_DIR$/vendor/maatwebsite/excel" />
|
||||
<path value="$PROJECT_DIR$/vendor/beyondcode/laravel-dump-server" />
|
||||
<path value="$PROJECT_DIR$/vendor/davibennun/laravel-push-notification" />
|
||||
<path value="$PROJECT_DIR$/vendor/tymon/jwt-auth" />
|
||||
<path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
|
||||
<path value="$PROJECT_DIR$/vendor/fzaninotto/faker" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
||||
<path value="$PROJECT_DIR$/vendor/phenx/php-font-lib" />
|
||||
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
||||
<path value="$PROJECT_DIR$/vendor/mremi/url-shortener" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
|
||||
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
|
||||
<path value="$PROJECT_DIR$/vendor/dnoegel/php-xdg-base-dir" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
|
||||
<path value="$PROJECT_DIR$/vendor/chumper/datatable" />
|
||||
<path value="$PROJECT_DIR$/vendor/opis/closure" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
|
||||
<path value="$PROJECT_DIR$/vendor/chumper/zipper" />
|
||||
<path value="$PROJECT_DIR$/vendor/filp/whoops" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpoffice/phpspreadsheet" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpoption/phpoption" />
|
||||
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
||||
<path value="$PROJECT_DIR$/vendor/sly/notification-pusher" />
|
||||
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
|
||||
<path value="$PROJECT_DIR$/vendor/markbaker/complex" />
|
||||
<path value="$PROJECT_DIR$/vendor/bugsnag/bugsnag-laravel" />
|
||||
<path value="$PROJECT_DIR$/vendor/markbaker/matrix" />
|
||||
<path value="$PROJECT_DIR$/vendor/mtdowling/jmespath.php" />
|
||||
<path value="$PROJECT_DIR$/vendor/paragonie/random_compat" />
|
||||
<path value="$PROJECT_DIR$/vendor/vsmoraes/laravel-pdf" />
|
||||
<path value="$PROJECT_DIR$/vendor/fideloper/proxy" />
|
||||
<path value="$PROJECT_DIR$/vendor/maennchen/zipstream-php" />
|
||||
<path value="$PROJECT_DIR$/vendor/psy/psysh" />
|
||||
<path value="$PROJECT_DIR$/vendor/bugsnag/bugsnag" />
|
||||
<path value="$PROJECT_DIR$/vendor/unisharp/laravel-filemanager" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
||||
<path value="$PROJECT_DIR$/vendor/unisharp/laravel-ckeditor" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
||||
<path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" />
|
||||
<path value="$PROJECT_DIR$/vendor/lcobucci/jwt" />
|
||||
<path value="$PROJECT_DIR$/vendor/neitanod/forceutf8" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
|
||||
<path value="$PROJECT_DIR$/vendor/torann/geoip" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/simple-cache" />
|
||||
<path value="$PROJECT_DIR$/vendor/julien-c/iso3166" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
||||
<path value="$PROJECT_DIR$/vendor/hamcrest/hamcrest-php" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
|
||||
<path value="$PROJECT_DIR$/vendor/gitonomy/gitlib" />
|
||||
<path value="$PROJECT_DIR$/vendor/tedivm/fetch" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/event-manager" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/cache" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/dbal" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
|
||||
<path value="$PROJECT_DIR$/vendor/psr/container" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
|
||||
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
|
||||
<path value="$PROJECT_DIR$/vendor/predis/predis" />
|
||||
<path value="$PROJECT_DIR$/vendor/ramsey/uuid" />
|
||||
<path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
|
||||
<path value="$PROJECT_DIR$/vendor/namshi/jose" />
|
||||
<path value="$PROJECT_DIR$/vendor/composer" />
|
||||
<path value="$PROJECT_DIR$/vendor/league/flysystem" />
|
||||
<path value="$PROJECT_DIR$/vendor/league/mime-type-detection" />
|
||||
<path value="$PROJECT_DIR$/vendor/league/oauth1-client" />
|
||||
<path value="$PROJECT_DIR$/vendor/guzzle/guzzle" />
|
||||
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/debug" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/dom-crawler" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
|
||||
<path value="$PROJECT_DIR$/vendor/flowjs/flow-php-server" />
|
||||
<path value="$PROJECT_DIR$/vendor/ezyang/htmlpurifier" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/console" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-iconv" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/http-kernel" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/routing" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/translation" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/http-client-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/css-selector" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/options-resolver" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/error-handler" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/mime" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/var-dumper" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php73" />
|
||||
<path value="$PROJECT_DIR$/vendor/aws/aws-crt-php" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/yaml" />
|
||||
<path value="$PROJECT_DIR$/vendor/aws/aws-sdk-php" />
|
||||
<path value="$PROJECT_DIR$/vendor/symfony/process" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
|
||||
<path value="$PROJECT_DIR$/vendor/erusev/parsedown" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpspec/php-diff" />
|
||||
<path value="$PROJECT_DIR$/vendor/php-parallel-lint/php-console-color" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpspec/phpspec" />
|
||||
<path value="$PROJECT_DIR$/vendor/php-parallel-lint/php-console-highlighter" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpunit/php-token-stream" />
|
||||
<path value="$PROJECT_DIR$/vendor/dompdf/dompdf" />
|
||||
<path value="$PROJECT_DIR$/vendor/myclabs/php-enum" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zend-escaper" />
|
||||
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
|
||||
<path value="$PROJECT_DIR$/vendor/davejamesmiller/laravel-breadcrumbs" />
|
||||
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
|
||||
<path value="$PROJECT_DIR$/vendor/container-interop/container-interop" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpspec/prophecy" />
|
||||
<path value="$PROJECT_DIR$/vendor/laravelcollective/html" />
|
||||
<path value="$PROJECT_DIR$/vendor/laravel/dusk" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zend-http" />
|
||||
<path value="$PROJECT_DIR$/vendor/codacy/coverage" />
|
||||
<path value="$PROJECT_DIR$/vendor/mockery/mockery" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zendservice-apple-apns" />
|
||||
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zend-loader" />
|
||||
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zend-validator" />
|
||||
<path value="$PROJECT_DIR$/vendor/giggsey/libphonenumber-for-php" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zend-uri" />
|
||||
<path value="$PROJECT_DIR$/vendor/laravel/socialite" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zendservice-google-gcm" />
|
||||
<path value="$PROJECT_DIR$/vendor/laravel/tinker" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zend-stdlib" />
|
||||
<path value="$PROJECT_DIR$/vendor/laravel/framework" />
|
||||
<path value="$PROJECT_DIR$/vendor/zendframework/zend-json" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||
<path value="$PROJECT_DIR$/vendor/giggsey/locale" />
|
||||
<path value="$PROJECT_DIR$/vendor/propaganistas/laravel-phone" />
|
||||
</include_path>
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="7.2" />
|
||||
<component name="PhpUnit">
|
||||
<phpunit_settings>
|
||||
<PhpUnitSettings configuration_file_path="$PROJECT_DIR$/phpunit.xml" custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" use_configuration_file="true" />
|
||||
</phpunit_settings>
|
||||
</component>
|
||||
</project>
|
10
.idea/phpunit.xml
generated
Normal file
10
.idea/phpunit.xml
generated
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PHPUnit">
|
||||
<option name="directories">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/tests" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
@@ -19,11 +19,10 @@
|
||||
"nicolaslopezj/searchable": "1.*",
|
||||
"chumper/datatable": "dev-develop",
|
||||
"chumper/zipper": "1.0.x",
|
||||
"tymon/jwt-auth": "dev-develop",
|
||||
"tymon/jwt-auth": "1.0.2",
|
||||
"davejamesmiller/laravel-breadcrumbs": "^3.0",
|
||||
"davibennun/laravel-push-notification": "dev-laravel5",
|
||||
"brozot/laravel-fcm": "^1.0",
|
||||
"barryvdh/laravel-debugbar": "3.1.*",
|
||||
"aws/aws-sdk-php": "~3.0",
|
||||
"predis/predis": "~1.0",
|
||||
"mremi/url-shortener": "^1.0",
|
||||
|
6724
composer.lock
generated
6724
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -180,7 +180,6 @@ return [
|
||||
Intervention\Image\ImageServiceProvider::class,
|
||||
Unisharp\Ckeditor\ServiceProvider::class,
|
||||
LaravelFCM\FCMServiceProvider::class,
|
||||
Barryvdh\Debugbar\ServiceProvider::class,
|
||||
//Collective\Bus\BusServiceProvider::class,
|
||||
Maatwebsite\Excel\ExcelServiceProvider::class,
|
||||
Laravel\Socialite\SocialiteServiceProvider::class,
|
||||
@@ -252,7 +251,6 @@ return [
|
||||
'Image' => Intervention\Image\Facades\Image::class,
|
||||
'FCM' => LaravelFCM\Facades\FCM::class,
|
||||
'FCMGroup' => LaravelFCM\Facades\FCMGroup::class,
|
||||
'Debugbar' => Barryvdh\Debugbar\Facade::class,
|
||||
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
|
||||
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
|
||||
'UnAuth' => App\Http\Controllers\Client\helpdesk\UnAuthController::class,
|
||||
|
897
config/excel.php
897
config/excel.php
@@ -1,691 +1,328 @@
|
||||
<?php
|
||||
|
||||
use Maatwebsite\Excel\Excel;
|
||||
|
||||
return [
|
||||
|
||||
'cache' => [
|
||||
'exports' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Enable/Disable cell caching
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'enable' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Caching driver
|
||||
| Chunk size
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Set the caching driver
|
||||
|
|
||||
| Available methods:
|
||||
| memory|gzip|serialized|igbinary|discISAM|apc|memcache|temp|wincache|sqlite|sqlite3
|
||||
| When using FromQuery, the query is automatically chunked.
|
||||
| Here you can specify how big the chunk should be.
|
||||
|
|
||||
*/
|
||||
'driver' => 'memory',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Cache settings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'settings' => [
|
||||
|
||||
'memoryCacheSize' => '32MB',
|
||||
'cacheTime' => 600,
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Memcache settings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'memcache' => [
|
||||
|
||||
'host' => 'localhost',
|
||||
'port' => 11211,
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Cache dir (for discISAM)
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
'dir' => storage_path('cache'),
|
||||
],
|
||||
|
||||
'properties' => [
|
||||
'creator' => 'Maatwebsite',
|
||||
'lastModifiedBy' => 'Maatwebsite',
|
||||
'title' => 'Spreadsheet',
|
||||
'description' => 'Default spreadsheet export',
|
||||
'subject' => 'Spreadsheet export',
|
||||
'keywords' => 'maatwebsite, excel, export',
|
||||
'category' => 'Excel',
|
||||
'manager' => 'Maatwebsite',
|
||||
'company' => 'Maatwebsite',
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Sheets settings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'sheets' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default page setup
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'pageSetup' => [
|
||||
'orientation' => 'portrait',
|
||||
'paperSize' => '9',
|
||||
'scale' => '100',
|
||||
'fitToPage' => false,
|
||||
'fitToHeight' => true,
|
||||
'fitToWidth' => true,
|
||||
'columnsToRepeatAtLeft' => ['', ''],
|
||||
'rowsToRepeatAtTop' => [0, 0],
|
||||
'horizontalCentered' => false,
|
||||
'verticalCentered' => false,
|
||||
'printArea' => null,
|
||||
'firstPageNumber' => null,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Creator
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The default creator of a new Excel file
|
||||
|
|
||||
*/
|
||||
|
||||
'creator' => 'Maatwebsite',
|
||||
|
||||
'csv' => [
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Delimiter
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The default delimiter which will be used to read out a CSV file
|
||||
|
|
||||
*/
|
||||
|
||||
'delimiter' => ',',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Enclosure
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
'enclosure' => '"',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Line endings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
'line_ending' => "\r\n",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| setUseBom
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
'use_bom' => false,
|
||||
],
|
||||
|
||||
'export' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Autosize columns
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Disable/enable column autosize or set the autosizing for
|
||||
| an array of columns ( array('A', 'B') )
|
||||
|
|
||||
*/
|
||||
'autosize' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Autosize method
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| --> PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX
|
||||
| The default is based on an estimate, which does its calculation based
|
||||
| on the number of characters in the cell value (applying any calculation
|
||||
| and format mask, and allowing for wordwrap and rotation) and with an
|
||||
| "arbitrary" adjustment based on the font (Arial, Calibri or Verdana,
|
||||
| defaulting to Calibri if any other font is used) and a proportional
|
||||
| adjustment for the font size.
|
||||
|
|
||||
| --> PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT
|
||||
| The second method is more accurate, based on actual style formatting as
|
||||
| well (bold, italic, etc), and is calculated by generating a gd2 imagettf
|
||||
| bounding box and using its dimensions to determine the size; but this
|
||||
| method is significantly slower, and its accuracy is still dependent on
|
||||
| having the appropriate fonts installed.
|
||||
|
|
||||
*/
|
||||
'autosize-method' => PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Auto generate table heading
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If set to true, the array indices (or model attribute names)
|
||||
| will automatically be used as first row (table heading)
|
||||
|
|
||||
*/
|
||||
'generate_heading_by_indices' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Auto set alignment on merged cells
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'merged_cell_alignment' => 'left',
|
||||
'chunk_size' => 1000,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Pre-calculate formulas during export
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'calculate' => false,
|
||||
'pre_calculate_formulas' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Include Charts during export
|
||||
| Enable strict null comparison
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When enabling strict null comparison empty cells ('') will
|
||||
| be added to the sheet.
|
||||
*/
|
||||
'includeCharts' => false,
|
||||
'strict_null_comparison' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default sheet settings
|
||||
| CSV Settings
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Configure e.g. delimiter, enclosure and line ending for CSV exports.
|
||||
|
|
||||
*/
|
||||
'sheets' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default page margin
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| 1) When set to false, default margins will be used
|
||||
| 2) It's possible to enter a single margin which will
|
||||
| be used for all margins.
|
||||
| 3) Alternatively you can pass an array with 4 margins
|
||||
| Default order: array(top, right, bottom, left)
|
||||
|
|
||||
*/
|
||||
'page_margin' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Value in source array that stands for blank cell
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'nullValue' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Insert array starting from this cell address as the top left coordinate
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'startCell' => 'A1',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Apply strict comparison when testing for null values in the array
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'strictNullComparison' => false,
|
||||
'csv' => [
|
||||
'delimiter' => ',',
|
||||
'enclosure' => '"',
|
||||
'line_ending' => PHP_EOL,
|
||||
'use_bom' => false,
|
||||
'include_separator_line' => false,
|
||||
'excel_compatibility' => false,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Store settings
|
||||
| Worksheet properties
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Configure e.g. default title, creator, subject,...
|
||||
|
|
||||
*/
|
||||
|
||||
'store' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Path
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The path we want to save excel file to
|
||||
|
|
||||
*/
|
||||
'path' => storage_path('exports'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Return info
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Whether we want to return information about the stored file or not
|
||||
|
|
||||
*/
|
||||
'returnInfo' => false,
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| PDF Settings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'pdf' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| PDF Drivers
|
||||
|--------------------------------------------------------------------------
|
||||
| Supported: DomPDF, tcPDF, mPDF
|
||||
*/
|
||||
'driver' => 'DomPDF',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| PDF Driver settings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'drivers' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| DomPDF settings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'DomPDF' => [
|
||||
'path' => base_path('vendor/dompdf/dompdf/'),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| tcPDF settings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'tcPDF' => [
|
||||
'path' => base_path('vendor/tecnick.com/tcpdf/'),
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| mPDF settings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'mPDF' => [
|
||||
'path' => base_path('vendor/mpdf/mpdf/'),
|
||||
],
|
||||
],
|
||||
'properties' => [
|
||||
'creator' => '',
|
||||
'lastModifiedBy' => '',
|
||||
'title' => '',
|
||||
'description' => '',
|
||||
'subject' => '',
|
||||
'keywords' => '',
|
||||
'category' => '',
|
||||
'manager' => '',
|
||||
'company' => '',
|
||||
],
|
||||
],
|
||||
|
||||
'filters' => [
|
||||
'imports' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Register read filters
|
||||
| Read Only
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When dealing with imports, you might only be interested in the
|
||||
| data that the sheet exists. By default we ignore all styles,
|
||||
| however if you want to do some logic based on style data
|
||||
| you can enable it by setting read_only to false.
|
||||
|
|
||||
*/
|
||||
'read_only' => true,
|
||||
|
||||
'registered' => [
|
||||
'chunk' => 'Maatwebsite\Excel\Filters\ChunkReadFilter',
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Ignore Empty
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When dealing with imports, you might be interested in ignoring
|
||||
| rows that have null values or empty strings. By default rows
|
||||
| containing empty strings or empty values are not ignored but can be
|
||||
| ignored by enabling the setting ignore_empty to true.
|
||||
|
|
||||
*/
|
||||
'ignore_empty' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Heading Row Formatter
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Configure the heading row formatter.
|
||||
| Available options: none|slug|custom
|
||||
|
|
||||
*/
|
||||
'heading_row' => [
|
||||
'formatter' => 'slug',
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Enable certain filters for every file read
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
'enabled' => [],
|
||||
],
|
||||
|
||||
'import' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Has heading
|
||||
| CSV Settings
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The sheet has a heading (first) row which we can use as attribute names
|
||||
|
|
||||
| Options: true|false|slugged|slugged_with_count|ascii|numeric|hashed|trans|original
|
||||
| Configure e.g. delimiter, enclosure and line ending for CSV imports.
|
||||
|
|
||||
*/
|
||||
|
||||
'heading' => 'slugged',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| First Row with data or heading of data
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If the heading row is not the first row, or the data doesn't start
|
||||
| on the first row, here you can change the start row.
|
||||
|
|
||||
*/
|
||||
|
||||
'startRow' => 1,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Cell name word separator
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The default separator which is used for the cell names
|
||||
| Note: only applies to 'heading' settings 'true' && 'slugged'
|
||||
|
|
||||
*/
|
||||
|
||||
'separator' => '_',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Include Charts during import
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
'includeCharts' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Sheet heading conversion
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Convert headings to ASCII
|
||||
| Note: only applies to 'heading' settings 'true' && 'slugged'
|
||||
|
|
||||
*/
|
||||
|
||||
'to_ascii' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Import encoding
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
'encoding' => [
|
||||
|
||||
'input' => 'UTF-8',
|
||||
'output' => 'UTF-8',
|
||||
|
||||
'csv' => [
|
||||
'delimiter' => ',',
|
||||
'enclosure' => '"',
|
||||
'escape_character' => '\\',
|
||||
'contiguous' => false,
|
||||
'input_encoding' => 'UTF-8',
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Calculate
|
||||
| Worksheet properties
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| By default cells with formulas will be calculated.
|
||||
| Configure e.g. default title, creator, subject,...
|
||||
|
|
||||
*/
|
||||
|
||||
'calculate' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Ignore empty cells
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| By default empty cells are not ignored
|
||||
|
|
||||
*/
|
||||
|
||||
'ignoreEmpty' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Force sheet collection
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| For a sheet collection even when there is only 1 sheets.
|
||||
| When set to false and only 1 sheet found, the parsed file will return
|
||||
| a row collection instead of a sheet collection.
|
||||
| When set to true, it will return a sheet collection instead.
|
||||
|
|
||||
*/
|
||||
'force_sheets_collection' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Date format
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The format dates will be parsed to
|
||||
|
|
||||
*/
|
||||
|
||||
'dates' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Enable/disable date formatting
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'enabled' => true,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default date format
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If set to false, a carbon object will return
|
||||
|
|
||||
*/
|
||||
'format' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Date columns
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'columns' => [],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Import sheets by config
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'sheets' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Example sheet
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Example sheet "test" will grab the firstname at cell A2
|
||||
|
|
||||
*/
|
||||
|
||||
'test' => [
|
||||
|
||||
'firstname' => 'A2',
|
||||
|
||||
],
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
'views' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Styles
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The default styles which will be used when parsing a view
|
||||
|
|
||||
*/
|
||||
|
||||
'styles' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Table headings
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'th' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 12,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Strong tags
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'strong' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 12,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Bold tags
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'b' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 12,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Italic tags
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'i' => [
|
||||
'font' => [
|
||||
'italic' => true,
|
||||
'size' => 12,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Heading 1
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'h1' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 24,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Heading 2
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'h2' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 18,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Heading 2
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'h3' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 13.5,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Heading 4
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'h4' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 12,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Heading 5
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'h5' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 10,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Heading 6
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'h6' => [
|
||||
'font' => [
|
||||
'bold' => true,
|
||||
'size' => 7.5,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Hyperlinks
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'a' => [
|
||||
'font' => [
|
||||
'underline' => true,
|
||||
'color' => ['argb' => 'FF0000FF'],
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Horizontal rules
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
'hr' => [
|
||||
'borders' => [
|
||||
'bottom' => [
|
||||
'style' => 'thin',
|
||||
'color' => ['FF000000'],
|
||||
],
|
||||
],
|
||||
],
|
||||
'properties' => [
|
||||
'creator' => '',
|
||||
'lastModifiedBy' => '',
|
||||
'title' => '',
|
||||
'description' => '',
|
||||
'subject' => '',
|
||||
'keywords' => '',
|
||||
'category' => '',
|
||||
'manager' => '',
|
||||
'company' => '',
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Extension detector
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Configure here which writer/reader type should be used when the package
|
||||
| needs to guess the correct type based on the extension alone.
|
||||
|
|
||||
*/
|
||||
'extension_detector' => [
|
||||
'xlsx' => Excel::XLSX,
|
||||
'xlsm' => Excel::XLSX,
|
||||
'xltx' => Excel::XLSX,
|
||||
'xltm' => Excel::XLSX,
|
||||
'xls' => Excel::XLS,
|
||||
'xlt' => Excel::XLS,
|
||||
'ods' => Excel::ODS,
|
||||
'ots' => Excel::ODS,
|
||||
'slk' => Excel::SLK,
|
||||
'xml' => Excel::XML,
|
||||
'gnumeric' => Excel::GNUMERIC,
|
||||
'htm' => Excel::HTML,
|
||||
'html' => Excel::HTML,
|
||||
'csv' => Excel::CSV,
|
||||
'tsv' => Excel::TSV,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| PDF Extension
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Configure here which Pdf driver should be used by default.
|
||||
| Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF
|
||||
|
|
||||
*/
|
||||
'pdf' => Excel::DOMPDF,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Value Binder
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| PhpSpreadsheet offers a way to hook into the process of a value being
|
||||
| written to a cell. In there some assumptions are made on how the
|
||||
| value should be formatted. If you want to change those defaults,
|
||||
| you can implement your own default value binder.
|
||||
|
|
||||
| Possible value binders:
|
||||
|
|
||||
| [x] Maatwebsite\Excel\DefaultValueBinder::class
|
||||
| [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class
|
||||
| [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class
|
||||
|
|
||||
*/
|
||||
'value_binder' => [
|
||||
'default' => Maatwebsite\Excel\DefaultValueBinder::class,
|
||||
],
|
||||
|
||||
'cache' => [
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default cell caching driver
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| By default PhpSpreadsheet keeps all cell values in memory, however when
|
||||
| dealing with large files, this might result into memory issues. If you
|
||||
| want to mitigate that, you can configure a cell caching driver here.
|
||||
| When using the illuminate driver, it will store each value in a the
|
||||
| cache store. This can slow down the process, because it needs to
|
||||
| store each value. You can use the "batch" store if you want to
|
||||
| only persist to the store when the memory limit is reached.
|
||||
|
|
||||
| Drivers: memory|illuminate|batch
|
||||
|
|
||||
*/
|
||||
'driver' => 'memory',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Batch memory caching
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When dealing with the "batch" caching driver, it will only
|
||||
| persist to the store when the memory limit is reached.
|
||||
| Here you can tweak the memory limit to your liking.
|
||||
|
|
||||
*/
|
||||
'batch' => [
|
||||
'memory_limit' => 60000,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Illuminate cache
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When using the "illuminate" caching driver, it will automatically use
|
||||
| your default cache store. However if you prefer to have the cell
|
||||
| cache on a separate store, you can configure the store name here.
|
||||
| You can use any store defined in your cache config. When leaving
|
||||
| at "null" it will use the default store.
|
||||
|
|
||||
*/
|
||||
'illuminate' => [
|
||||
'store' => null,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Transaction Handler
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| By default the import is wrapped in a transaction. This is useful
|
||||
| for when an import may fail and you want to retry it. With the
|
||||
| transactions, the previous import gets rolled-back.
|
||||
|
|
||||
| You can disable the transaction handler by setting this to null.
|
||||
| Or you can choose a custom made transaction handler here.
|
||||
|
|
||||
| Supported handlers: null|db
|
||||
|
|
||||
*/
|
||||
'transactions' => [
|
||||
'handler' => 'db',
|
||||
],
|
||||
|
||||
'temporary_files' => [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Local Temporary Path
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When exporting and importing files, we use a temporary file, before
|
||||
| storing reading or downloading. Here you can customize that path.
|
||||
|
|
||||
*/
|
||||
'local_path' => storage_path('framework/laravel-excel'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Remote Temporary Disk
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When dealing with a multi server setup with queues in which you
|
||||
| cannot rely on having a shared local temporary path, you might
|
||||
| want to store the temporary file on a shared disk. During the
|
||||
| queue executing, we'll retrieve the temporary file from that
|
||||
| location instead. When left to null, it will always use
|
||||
| the local path. This setting only has effect when using
|
||||
| in conjunction with queued imports and exports.
|
||||
|
|
||||
*/
|
||||
'remote_disk' => null,
|
||||
'remote_prefix' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Force Resync
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When dealing with a multi server setup as above, it's possible
|
||||
| for the clean up that occurs after entire queue has been run to only
|
||||
| cleanup the server that the last AfterImportJob runs on. The rest of the server
|
||||
| would still have the local temporary file stored on it. In this case your
|
||||
| local storage limits can be exceeded and future imports won't be processed.
|
||||
| To mitigate this you can set this config value to be true, so that after every
|
||||
| queued chunk is processed the local temporary file is deleted on the server that
|
||||
| processed it.
|
||||
|
|
||||
*/
|
||||
'force_resync_remote' => null,
|
||||
],
|
||||
];
|
||||
|
7
vendor/autoload.php
vendored
7
vendor/autoload.php
vendored
@@ -2,6 +2,11 @@
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
if (PHP_VERSION_ID < 50600) {
|
||||
echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit598add4b9b35c76d3599603201ccdd6d::getLoader();
|
||||
return ComposerAutoloaderInit010a6d64109fbd19b023ae0ce2ea0027::getLoader();
|
||||
|
58
vendor/aws/aws-crt-php/.clang-format
vendored
Normal file
58
vendor/aws/aws-crt-php/.clang-format
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
Language: Cpp
|
||||
# BasedOnStyle: Mozilla
|
||||
AlignAfterOpenBracket: AlwaysBreak
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: Inline
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 120
|
||||
ContinuationIndentWidth: 4
|
||||
DerivePointerAlignment: false
|
||||
IncludeBlocks: Preserve
|
||||
IndentCaseLabels: true
|
||||
IndentPPDirectives: AfterHash
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 100000
|
||||
PointerAlignment: Right
|
||||
ReflowComments: true
|
||||
SortIncludes: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp11
|
||||
TabWidth: 4
|
||||
UseTab: Never
|
||||
...
|
||||
|
4
vendor/aws/aws-crt-php/.clang-format-ignore
vendored
Normal file
4
vendor/aws/aws-crt-php/.clang-format-ignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
# ignore generated files
|
||||
ext/api.h
|
||||
ext/*_arginfo.h
|
||||
src/api.h
|
36
vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---bug-report.md
vendored
Normal file
36
vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---bug-report.md
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: "\U0001F41B Bug report"
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug, needs-triage
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Confirm by changing [ ] to [x] below to ensure that it's a bug:
|
||||
- [ ] I've gone though [Developer Guide](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/welcome.html) and [API reference](http://sdk.amazonaws.com/cpp/api/LATEST/index.html)
|
||||
- [ ] I've searched for [previous similar issues](https://github.com/aws/aws-sdk-cpp/issues) and didn't find any solution
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**SDK version number**
|
||||
|
||||
**Platform/OS/Hardware/Device**
|
||||
What are you running the sdk on?
|
||||
|
||||
**To Reproduce (observed behavior)**
|
||||
Steps to reproduce the behavior (please share code)
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Logs/output**
|
||||
If applicable, add logs or error output.
|
||||
|
||||
*REMEMBER TO SANITIZE YOUR PERSONAL INFO*
|
||||
|
||||
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
20
vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---feature-request.md
vendored
Normal file
20
vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---feature-request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: "\U0001F680 Feature request"
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: feature-request, needs-triage
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
23
vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---questions-help.md
vendored
Normal file
23
vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---questions-help.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
name: "\U0001F4AC Questions / Help"
|
||||
about: If you have questions, please check AWS Forums or StackOverflow
|
||||
title: ''
|
||||
labels: guidance, needs-triage
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Confirm by changing [ ] to [x] below:
|
||||
- [ ] I've searched for [previous similar issues](https://github.com/awslabs/aws-crt-php/issues) and didn't find any solution
|
||||
|
||||
**Platform/OS/Hardware/Device**
|
||||
What are you running the sdk on?
|
||||
|
||||
**Describe the question**
|
||||
|
||||
|
||||
**Logs/output**
|
||||
If applicable, add logs or error output.
|
||||
|
||||
*REMEMBER TO SANITIZE YOUR PERSONAL INFO*
|
||||
|
6
vendor/aws/aws-crt-php/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
6
vendor/aws/aws-crt-php/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
*Issue #, if available:*
|
||||
|
||||
*Description of changes:*
|
||||
|
||||
|
||||
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
|
145
vendor/aws/aws-crt-php/.github/workflows/ci.yml
vendored
Normal file
145
vendor/aws/aws-crt-php/.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,145 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- '*'
|
||||
- '!main'
|
||||
|
||||
env:
|
||||
BUILDER_VERSION: v0.8.18
|
||||
BUILDER_SOURCE: releases
|
||||
BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net
|
||||
PACKAGE_NAME: aws-crt-php
|
||||
LINUX_BASE_IMAGE: ubuntu-16-x64
|
||||
RUN: ${{ github.run_id }}-${{ github.run_number }}
|
||||
|
||||
jobs:
|
||||
php-5_5-linux-x64:
|
||||
name: php-linux-x64 (5.5)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup PHP with Xdebug
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
coverage: xdebug
|
||||
php-version: 5.5
|
||||
ini-values: xdebug.overload_var_dump=0, memory_limit=4G, phar.readonly=false
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install ancient PHPUnit
|
||||
run: composer require --dev --ignore-platform-reqs phpunit/phpunit "4.8.36"
|
||||
|
||||
- name: Install depedencies
|
||||
run: composer update --no-interaction
|
||||
|
||||
- name: Build for PHP 5.5
|
||||
env:
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
run: |
|
||||
phpize
|
||||
./configure
|
||||
make
|
||||
|
||||
php-linux-x64:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
version:
|
||||
- "5.6"
|
||||
- "7.0"
|
||||
- "7.1"
|
||||
- "7.2"
|
||||
- "7.3"
|
||||
- "7.4"
|
||||
- "8.0"
|
||||
steps:
|
||||
- name: Setup PHP with Xdebug
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
coverage: xdebug
|
||||
php-version: ${{matrix.version}}
|
||||
ini-values: xdebug.overload_var_dump=0, memory_limit=4G, phar.readonly=false
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install depedencies
|
||||
run: composer update --no-interaction
|
||||
|
||||
- name: Run tests
|
||||
env:
|
||||
CC: clang
|
||||
CXX: clang++
|
||||
run: |
|
||||
phpize
|
||||
./configure
|
||||
make
|
||||
make test
|
||||
|
||||
|
||||
# linux-arm:
|
||||
# name: ARM (${{ matrix.arch }})
|
||||
# runs-on: ubuntu-latest
|
||||
# strategy:
|
||||
# matrix:
|
||||
# arch: [armv6, armv7, arm64]
|
||||
# steps:
|
||||
# - name: Build ${{ env.PACKAGE_NAME }}
|
||||
# run: |
|
||||
# python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
|
||||
# chmod a+x builder
|
||||
# ./builder build -p ${{ env.PACKAGE_NAME }} --target=linux-${{ matrix.arch }} --spec=downstream
|
||||
|
||||
# windows-vc16:
|
||||
# runs-on: windows-latest
|
||||
# strategy:
|
||||
# matrix:
|
||||
# arch: [x64]
|
||||
# steps:
|
||||
# - uses: ilammy/msvc-dev-cmd@v1
|
||||
# with:
|
||||
# arch: ${{ matrix.arch }}
|
||||
# uwp: false
|
||||
# spectre: true
|
||||
# - name: Build ${{ env.PACKAGE_NAME }} + consumers
|
||||
# run: |
|
||||
# python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
|
||||
# python builder.pyz build -p ${{ env.PACKAGE_NAME }} --spec=downstream
|
||||
|
||||
# windows-vc14:
|
||||
# runs-on: windows-latest
|
||||
# strategy:
|
||||
# matrix:
|
||||
# arch: [x86, x64]
|
||||
# steps:
|
||||
# - uses: ilammy/msvc-dev-cmd@v1
|
||||
# with:
|
||||
# toolset: 14.0
|
||||
# arch: ${{ matrix.arch }}
|
||||
# uwp: false
|
||||
# spectre: true
|
||||
# - name: Build ${{ env.PACKAGE_NAME }} + consumers
|
||||
# run: |
|
||||
# python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
|
||||
# python builder.pyz build -p ${{ env.PACKAGE_NAME }} downstream
|
||||
|
||||
macos:
|
||||
runs-on: macos-${{ matrix.version }}
|
||||
strategy:
|
||||
matrix:
|
||||
version: [10.15]
|
||||
steps:
|
||||
- name: Build PHP 8 extension and test
|
||||
run: |
|
||||
python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
|
||||
chmod a+x builder
|
||||
./builder build -p ${{ env.PACKAGE_NAME }} --spec=downstream
|
29
vendor/aws/aws-crt-php/.github/workflows/lint.yml
vendored
Normal file
29
vendor/aws/aws-crt-php/.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
name: Lint
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
clang-format:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Sources
|
||||
uses: actions/checkout@v1
|
||||
|
||||
- name: clang-format lint
|
||||
uses: DoozyX/clang-format-lint-action@v0.3.1
|
||||
with:
|
||||
# List of extensions to check
|
||||
extensions: c
|
||||
|
||||
check-submodules:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Source
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
- name: Check Submodules
|
||||
uses: awslabs/aws-crt-builder/.github/actions/check-submodules@main
|
46
vendor/aws/aws-crt-php/.github/workflows/stale_issue.yml
vendored
Normal file
46
vendor/aws/aws-crt-php/.github/workflows/stale_issue.yml
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
name: "Close stale issues"
|
||||
|
||||
# Controls when the action will run.
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
jobs:
|
||||
cleanup:
|
||||
runs-on: ubuntu-latest
|
||||
name: Stale issue job
|
||||
steps:
|
||||
- uses: aws-actions/stale-issue-cleanup@v3
|
||||
with:
|
||||
# Setting messages to an empty string will cause the automation to skip
|
||||
# that category
|
||||
ancient-issue-message: Greetings! Sorry to say but this is a very old issue that is probably not getting as much attention as it deservers. We encourage you to check if this is still an issue in the latest release and if you find that this is still a problem, please feel free to open a new one.
|
||||
stale-issue-message: Greetings! It looks like this issue hasn’t been active in longer than a week. We encourage you to check if this is still an issue in the latest release. Because it has been longer than a week since the last update on this, and in the absence of more information, we will be closing this issue soon. If you find that this is still a problem, please feel free to provide a comment or add an upvote to prevent automatic closure, or if the issue is already closed, please feel free to open a new one.
|
||||
stale-pr-message: Greetings! It looks like this PR hasn’t been active in longer than a week, add a comment or an upvote to prevent automatic closure, or if the issue is already closed, please feel free to open a new one.
|
||||
|
||||
# These labels are required
|
||||
stale-issue-label: closing-soon
|
||||
exempt-issue-label: automation-exempt
|
||||
stale-pr-label: closing-soon
|
||||
exempt-pr-label: pr/needs-review
|
||||
response-requested-label: response-requested
|
||||
|
||||
# Don't set closed-for-staleness label to skip closing very old issues
|
||||
# regardless of label
|
||||
closed-for-staleness-label: closed-for-staleness
|
||||
|
||||
# Issue timing
|
||||
days-before-stale: 7
|
||||
days-before-close: 4
|
||||
days-before-ancient: 365
|
||||
|
||||
# If you don't want to mark a issue as being ancient based on a
|
||||
# threshold of "upvotes", you can set this here. An "upvote" is
|
||||
# the total number of +1, heart, hooray, and rocket reactions
|
||||
# on an issue.
|
||||
minimum-upvotes-to-exempt: 1
|
||||
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
loglevel: DEBUG
|
||||
# Set dry-run to true to not perform label or close actions.
|
||||
dry-run: false
|
210
vendor/aws/aws-crt-php/.gitignore
vendored
Normal file
210
vendor/aws/aws-crt-php/.gitignore
vendored
Normal file
@@ -0,0 +1,210 @@
|
||||
|
||||
# Created by https://www.toptal.com/developers/gitignore/api/autotools,cmake,phpstorm
|
||||
# Edit at https://www.toptal.com/developers/gitignore?templates=autotools,cmake,phpstorm
|
||||
|
||||
### Autotools ###
|
||||
# http://www.gnu.org/software/automake
|
||||
|
||||
Makefile.in
|
||||
/ar-lib
|
||||
/mdate-sh
|
||||
/py-compile
|
||||
/test-driver
|
||||
/ylwrap
|
||||
.deps/
|
||||
|
||||
# http://www.gnu.org/software/autoconf
|
||||
|
||||
autom4te.cache
|
||||
/autoscan.log
|
||||
/autoscan-*.log
|
||||
/aclocal.m4
|
||||
/compile
|
||||
/config.guess
|
||||
/config.h.in
|
||||
/config.log
|
||||
/config.status
|
||||
/config.sub
|
||||
/configure
|
||||
/configure.scan
|
||||
/depcomp
|
||||
/install-sh
|
||||
/missing
|
||||
/stamp-h1
|
||||
|
||||
# https://www.gnu.org/software/libtool/
|
||||
|
||||
/ltmain.sh
|
||||
|
||||
# http://www.gnu.org/software/texinfo
|
||||
|
||||
/texinfo.tex
|
||||
|
||||
# http://www.gnu.org/software/m4/
|
||||
|
||||
m4/libtool.m4
|
||||
m4/ltoptions.m4
|
||||
m4/ltsugar.m4
|
||||
m4/ltversion.m4
|
||||
m4/lt~obsolete.m4
|
||||
|
||||
# Generated Makefile
|
||||
# (meta build system like autotools,
|
||||
# can automatically generate from config.status script
|
||||
# (which is called by configure script))
|
||||
Makefile
|
||||
|
||||
### Autotools Patch ###
|
||||
|
||||
### CMake ###
|
||||
CMakeLists.txt.user
|
||||
CMakeCache.txt
|
||||
CMakeFiles
|
||||
CMakeScripts
|
||||
Testing
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
compile_commands.json
|
||||
CTestTestfile.cmake
|
||||
_deps
|
||||
|
||||
### CMake Patch ###
|
||||
# External projects
|
||||
*-prefix/
|
||||
|
||||
### PhpStorm ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
.idea/
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# Gradle and Maven with auto-import
|
||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
||||
# since they will be recreated, and may cause churn. Uncomment if using
|
||||
# auto-import.
|
||||
# .idea/artifacts
|
||||
# .idea/compiler.xml
|
||||
# .idea/jarRepositories.xml
|
||||
# .idea/modules.xml
|
||||
# .idea/*.iml
|
||||
# .idea/modules
|
||||
# *.iml
|
||||
# *.ipr
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Mongo Explorer plugin
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
# File-based project format
|
||||
*.iws
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# Editor-based Rest Client
|
||||
.idea/httpRequests
|
||||
|
||||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
### PhpStorm Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# *.iml
|
||||
# modules.xml
|
||||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
# https://plugins.jetbrains.com/plugin/7973-sonarlint
|
||||
.idea/**/sonarlint/
|
||||
|
||||
# SonarQube Plugin
|
||||
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
|
||||
.idea/**/sonarIssues.xml
|
||||
|
||||
# Markdown Navigator plugin
|
||||
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
|
||||
.idea/**/markdown-navigator.xml
|
||||
.idea/**/markdown-navigator-enh.xml
|
||||
.idea/**/markdown-navigator/
|
||||
|
||||
# Cache file creation bug
|
||||
# See https://youtrack.jetbrains.com/issue/JBR-2257
|
||||
.idea/$CACHE_FILE$
|
||||
|
||||
# CodeStream plugin
|
||||
# https://plugins.jetbrains.com/plugin/12206-codestream
|
||||
.idea/codestream.xml
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/autotools,cmake,phpstorm
|
||||
|
||||
.deps
|
||||
.libs/
|
||||
build/
|
||||
configure.in
|
||||
configure.ac
|
||||
mkinstalldirs
|
||||
run-tests.php
|
||||
Makefile.global
|
||||
acinclude.m4
|
||||
libtool
|
||||
modules/
|
||||
*.lo
|
||||
config.h
|
||||
config.nice
|
||||
*.la
|
||||
Makefile*
|
||||
!Makefile.am
|
||||
!Makefile.frag
|
||||
!Makefile.frag.w32
|
||||
/vendor/
|
||||
.idea/
|
||||
.DS_Store
|
||||
composer.lock
|
||||
PHP-Parser*/
|
||||
src/*.so
|
||||
src/*.dylib
|
||||
src/*.dll
|
||||
|
||||
# ignoring output of package.xml as it needs to be generated from ./prepare_release.sh in each publishing
|
||||
package.xml
|
||||
*.tgz
|
3
vendor/aws/aws-crt-php/.gitmodules
vendored
Normal file
3
vendor/aws/aws-crt-php/.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "crt/aws-crt-ffi"]
|
||||
path = crt/aws-crt-ffi
|
||||
url = https://github.com/awslabs/aws-crt-ffi.git
|
4
vendor/aws/aws-crt-php/CODE_OF_CONDUCT.md
vendored
Normal file
4
vendor/aws/aws-crt-php/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
## Code of Conduct
|
||||
This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
|
||||
For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact
|
||||
opensource-codeofconduct@amazon.com with any additional questions or comments.
|
61
vendor/aws/aws-crt-php/CONTRIBUTING.md
vendored
Normal file
61
vendor/aws/aws-crt-php/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
# Contributing Guidelines
|
||||
|
||||
Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional
|
||||
documentation, we greatly value feedback and contributions from our community.
|
||||
|
||||
Please read through this document before submitting any issues or pull requests to ensure we have all the necessary
|
||||
information to effectively respond to your bug report or contribution.
|
||||
|
||||
|
||||
## Reporting Bugs/Feature Requests
|
||||
|
||||
We welcome you to use the GitHub issue tracker to report bugs or suggest features.
|
||||
|
||||
When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already
|
||||
reported the issue. Please try to include as much information as you can. Details like these are incredibly useful:
|
||||
|
||||
* A reproducible test case or series of steps
|
||||
* The version of our code being used
|
||||
* Any modifications you've made relevant to the bug
|
||||
* Anything unusual about your environment or deployment
|
||||
|
||||
|
||||
## Contributing via Pull Requests
|
||||
Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that:
|
||||
|
||||
1. You are working against the latest source on the *master* branch.
|
||||
2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already.
|
||||
3. You open an issue to discuss any significant work - we would hate for your time to be wasted.
|
||||
|
||||
To send us a pull request, please:
|
||||
|
||||
1. Fork the repository.
|
||||
2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change.
|
||||
3. Ensure local tests pass.
|
||||
4. Commit to your fork using clear commit messages.
|
||||
5. Send us a pull request, answering any default questions in the pull request interface.
|
||||
6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation.
|
||||
|
||||
GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and
|
||||
[creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
|
||||
|
||||
|
||||
## Finding contributions to work on
|
||||
Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start.
|
||||
|
||||
|
||||
## Code of Conduct
|
||||
This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct).
|
||||
For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact
|
||||
opensource-codeofconduct@amazon.com with any additional questions or comments.
|
||||
|
||||
|
||||
## Security issue notifications
|
||||
If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue.
|
||||
|
||||
|
||||
## Licensing
|
||||
|
||||
See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution.
|
||||
|
||||
We may ask you to sign a [Contributor License Agreement (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) for larger changes.
|
175
vendor/aws/aws-crt-php/LICENSE
vendored
Normal file
175
vendor/aws/aws-crt-php/LICENSE
vendored
Normal file
@@ -0,0 +1,175 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
72
vendor/aws/aws-crt-php/Makefile.frag
vendored
Normal file
72
vendor/aws/aws-crt-php/Makefile.frag
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
|
||||
INT_DIR=build/install
|
||||
GENERATE_STUBS=$(shell expr `php --version | head -1 | cut -f 2 -d' '` \>= 7.1)
|
||||
|
||||
CMAKE = cmake3
|
||||
ifeq (, $(shell which cmake3))
|
||||
CMAKE = cmake
|
||||
endif
|
||||
|
||||
# default to using system OpenSSL, if disabled aws-lc will be used
|
||||
USE_OPENSSL ?= ON
|
||||
ifneq (OFF,$(USE_OPENSSL))
|
||||
CMAKE_USE_OPENSSL=-DUSE_OPENSSL=ON
|
||||
# if a path was provided, add it to CMAKE_PREFIX_PATH
|
||||
ifneq (ON,$(USE_OPENSSL))
|
||||
CMAKE_PREFIX_PATH=-DCMAKE_PREFIX_PATH=$(USE_OPENSSL)
|
||||
endif
|
||||
endif
|
||||
|
||||
CMAKE_CONFIGURE = $(CMAKE) \
|
||||
-DCMAKE_INSTALL_PREFIX=$(INT_DIR) \
|
||||
-DBUILD_TESTING=OFF \
|
||||
-DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE) \
|
||||
$(CMAKE_USE_OPENSSL) \
|
||||
$(CMAKE_PREFIX_PATH)
|
||||
CMAKE_BUILD = CMAKE_BUILD_PARALLEL_LEVEL='' $(CMAKE) --build
|
||||
CMAKE_BUILD_TYPE ?= RelWithDebInfo
|
||||
CMAKE_TARGET = --config $(CMAKE_BUILD_TYPE) --target install
|
||||
|
||||
all: extension
|
||||
.PHONY: all extension
|
||||
|
||||
# configure for static aws-crt-ffi.a
|
||||
build/aws-crt-ffi-static/CMakeCache.txt:
|
||||
$(CMAKE_CONFIGURE) -Hcrt/aws-crt-ffi -Bbuild/aws-crt-ffi-static -DBUILD_SHARED_LIBS=OFF
|
||||
|
||||
# build static libaws-crt-ffi.a
|
||||
build/aws-crt-ffi-static/libaws-crt-ffi.a: build/aws-crt-ffi-static/CMakeCache.txt
|
||||
$(CMAKE_BUILD) build/aws-crt-ffi-static $(CMAKE_TARGET)
|
||||
|
||||
# PHP extension target
|
||||
extension: ext/awscrt.lo
|
||||
|
||||
# Force the crt object target to depend on the CRT static library
|
||||
ext/awscrt.lo: ext/awscrt.c
|
||||
|
||||
ext/awscrt.c: build/aws-crt-ffi-static/libaws-crt-ffi.a ext/api.h ext/awscrt_arginfo.h
|
||||
|
||||
ext/awscrt_arginfo.h: ext/awscrt.stub.php gen_stub.php
|
||||
ifeq ($(GENERATE_STUBS),1)
|
||||
# generate awscrt_arginfo.h
|
||||
php gen_stub.php --minimal-arginfo ext/awscrt.stub.php
|
||||
endif
|
||||
|
||||
# transform/install api.h from FFI lib
|
||||
src/api.h: crt/aws-crt-ffi/src/api.h
|
||||
php gen_api.php crt/aws-crt-ffi/src/api.h > src/api.h
|
||||
|
||||
# install api.h to ext/ as well
|
||||
ext/api.h : src/api.h
|
||||
cp -v src/api.h ext/api.h
|
||||
|
||||
ext/php_aws_crt.h: ext/awscrt_arginfo.h ext/api.h
|
||||
|
||||
vendor/bin/phpunit:
|
||||
composer update
|
||||
|
||||
test-extension: vendor/bin/phpunit extension
|
||||
composer run test-extension
|
||||
|
||||
# Use PHPUnit to run tests
|
||||
test: test-extension
|
35
vendor/aws/aws-crt-php/Makefile.frag.w32
vendored
Normal file
35
vendor/aws/aws-crt-php/Makefile.frag.w32
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
CMAKE=cmake.exe
|
||||
COMPOSER_PHAR=C:\ProgramData\ComposerSetup\bin\composer.phar
|
||||
PHP_BINARY=$(PHP_PREFIX)\php.exe
|
||||
|
||||
CMAKE_CONFIGURE = $(CMAKE) -DCMAKE_INSTALL_PREFIX=$(AWSCRT_DIR)\build\install -DCMAKE_PREFIX_PATH=$(AWSCRT_DIR)\build\install -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=$(CMAKE_BUILD_TYPE)
|
||||
CMAKE_BUILD = $(CMAKE) --build
|
||||
CMAKE_BUILD_TYPE = Release
|
||||
CMAKE_TARGET = --config $(CMAKE_BUILD_TYPE) --target install
|
||||
|
||||
# configure for static aws-crt-ffi.lib
|
||||
$(AWSCRT_DIR)\build\CMakeCache.txt:
|
||||
$(CMAKE_CONFIGURE) -H$(AWSCRT_DIR)\crt\aws-crt-ffi -B$(AWSCRT_DIR)\build -DBUILD_SHARED_LIBS=OFF
|
||||
|
||||
# build static libaws-crt-ffi.lib
|
||||
$(AWSCRT_DIR)\build\libaws-crt-ffi.lib: $(AWSCRT_DIR)\build\CMakeCache.txt
|
||||
$(CMAKE_BUILD) $(AWSCRT_DIR)\build $(CMAKE_TARGET)
|
||||
|
||||
# Force the awscrt extension DLL target to depend on the extension src
|
||||
$(BUILD_DIR)\php_awscrt.dll: $(AWSCRT_DIR)\ext\awscrt.c
|
||||
|
||||
$(AWSCRT_DIR)\ext\awscrt.c: $(AWSCRT_DIR)\build\libaws-crt-ffi.lib $(AWSCRT_DIR)\ext\api.h $(AWSCRT_DIR)\ext\awscrt_arginfo.h
|
||||
|
||||
# transform\install api.h from FFI lib
|
||||
$(AWSCRT_DIR)\src\api.h: $(AWSCRT_DIR)\crt\aws-crt-ffi\src\api.h
|
||||
php $(AWSCRT_DIR)\gen_api.php $(AWSCRT_DIR)\crt\aws-crt-ffi\src\api.h > $(AWSCRT_DIR)\src\api.h
|
||||
|
||||
# install api.h to ext/ as well
|
||||
$(AWSCRT_DIR)\ext\api.h : $(AWSCRT_DIR)\src\api.h
|
||||
copy $(AWSCRT_DIR)\src\api.h $(AWSCRT_DIR)\ext\api.h
|
||||
|
||||
# Use PHPUnit to run tests
|
||||
test-awscrt: install $(AWSCRT_DIR)\src\api.h $(BUILD_DIR)\php_awscrt.dll
|
||||
$(PHP_BINARY) -c $(AWSCRT_DIR)\php-win.ini $(COMPOSER_PHAR) --working-dir=$(AWSCRT_DIR) update
|
||||
$(PHP_BINARY) -c $(AWSCRT_DIR)\php-win.ini $(COMPOSER_PHAR) --working-dir=$(AWSCRT_DIR) run test-win
|
1
vendor/aws/aws-crt-php/NOTICE
vendored
Normal file
1
vendor/aws/aws-crt-php/NOTICE
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
80
vendor/aws/aws-crt-php/README.md
vendored
Normal file
80
vendor/aws/aws-crt-php/README.md
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
# AWS Common Runtime PHP bindings
|
||||
|
||||
## Requirements
|
||||
* PHP 5.5+ on UNIX platforms, 7.2+ on Windows
|
||||
* CMake 3.x
|
||||
* GCC 4.4+, clang 3.8+ on UNIX, Visual Studio 2017 build tools on Windows
|
||||
* Tests require [Composer](https://getcomposer.org)
|
||||
|
||||
## Building on UNIX
|
||||
```sh
|
||||
$ git clone --recursive https://github.com/awslabs/aws-crt-php.git
|
||||
$ cd aws-crt-php
|
||||
$ phpize
|
||||
$ ./configure
|
||||
$ make && make test
|
||||
```
|
||||
|
||||
## Building on Windows
|
||||
* First, ensure that you are able to build PHP on windows via the PHP SDK (this example assumes installation of the SDK to C:\php-sdk and that you've checked out the PHP source to php-src within the build directory). The following resources are helpful to get PHP building on windows:
|
||||
* https://github.com/microsoft/php-sdk-binary-tools
|
||||
* https://medium.com/@erinus/how-to-build-php-on-windows-a7ad0a87862a
|
||||
* https://medium.com/@erinus/how-to-build-php-extension-on-windows-d1667290f809
|
||||
|
||||
```bat
|
||||
""" From VS2017 Command Prompt
|
||||
> C:\php-sdk\phpsdk-vc15-x64.bat
|
||||
|
||||
C:\php-sdk\
|
||||
$ phpsdk_buildtree php-<version>
|
||||
|
||||
C:\php-sdk\php-<version>\vc15\x64\
|
||||
$ git clone https://github.com/php/php-src.git && cd php-src
|
||||
|
||||
""" This only has to be done once, the first time you set this all up
|
||||
C:\php-sdk\php-<version>\vc15\x64\php-src
|
||||
$ phpsdk_deps --update --branch <php-major.minor-version>
|
||||
|
||||
C:\php-sdk\php-<version>\vc15\x64\php-src
|
||||
$ git clone --recursive https://github.com/awslabs/aws-crt-php.git ..\pecl\awscrt
|
||||
|
||||
C:\php-sdk\php-<version>\vc15\x64\php-src
|
||||
$ buildconf
|
||||
|
||||
C:\php-sdk\php-<version>\vc15\x64\php-src
|
||||
$ configure --enable-cli --with-openssl --enable-awscrt=shared
|
||||
|
||||
C:\php-sdk\php-<version>\vc15\x64\php-src
|
||||
$ nmake
|
||||
|
||||
C:\php-sdk\php-<version>\vc15\x64\php-src
|
||||
$ nmake test-awscrt
|
||||
```
|
||||
|
||||
## Debugging
|
||||
Using [PHPBrew](https://github.com/phpbrew/phpbrew) to build/manage multiple versions of PHP is helpful.
|
||||
|
||||
Note: You must use a debug build of PHP to debug native extensions.
|
||||
See the [PHP Internals Book](https://www.phpinternalsbook.com/php7/build_system/building_php.html) for more info
|
||||
|
||||
```shell
|
||||
# PHP 8 example
|
||||
$ phpbrew install --stdout -j 8 8.0 +default -- CFLAGS=-Wno-error --disable-cgi --enable-debug
|
||||
# PHP 5.5 example
|
||||
$ phpbrew install --stdout -j 8 5.5 +default -openssl -mbstring -- CFLAGS="-w -Wno-error" --enable-debug --with-zlib=/usr/local/opt/zlib
|
||||
$ phpbrew switch php-8.0.6 # or whatever version is current, it'll be at the end of the build output
|
||||
$ phpize
|
||||
$ ./configure
|
||||
$ make CMAKE_BUILD_TYPE=Debug
|
||||
```
|
||||
|
||||
Ensure that the php you launch from your debugger is the result of `which php`, not just
|
||||
the system default php.
|
||||
|
||||
## Security
|
||||
|
||||
See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the Apache-2.0 License.
|
37
vendor/aws/aws-crt-php/builder.json
vendored
Normal file
37
vendor/aws/aws-crt-php/builder.json
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "aws-crt-php",
|
||||
"hosts": {
|
||||
"ubuntu": {
|
||||
"pkg_setup": [
|
||||
"add-apt-repository -y ppa:ondrej/php"
|
||||
],
|
||||
"packages": [
|
||||
"autotools-dev",
|
||||
"autoconf",
|
||||
"libtool",
|
||||
"clang",
|
||||
"php5.6-dev"
|
||||
]
|
||||
},
|
||||
"al2": {
|
||||
"packages": [
|
||||
"autoconf",
|
||||
"automake",
|
||||
"libtool",
|
||||
"clang",
|
||||
"php-devel"
|
||||
]
|
||||
}
|
||||
},
|
||||
"build_steps": [
|
||||
["phpize"],
|
||||
["./configure"],
|
||||
["make"]
|
||||
],
|
||||
"test_env": {
|
||||
"NO_INTERACTION": "1"
|
||||
},
|
||||
"test_steps": [
|
||||
["./run_tests"]
|
||||
]
|
||||
}
|
34
vendor/aws/aws-crt-php/composer.json
vendored
Normal file
34
vendor/aws/aws-crt-php/composer.json
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "aws/aws-crt-php",
|
||||
"homepage": "http://aws.amazon.com/sdkforphp",
|
||||
"description": "AWS Common Runtime for PHP",
|
||||
"keywords": ["aws","amazon","sdk","crt"],
|
||||
"type": "library",
|
||||
"authors": [
|
||||
{
|
||||
"name": "AWS SDK Common Runtime Team",
|
||||
"email": "aws-sdk-common-runtime@amazon.com"
|
||||
}
|
||||
],
|
||||
"config": {
|
||||
"platform": {"php": "5.6"}
|
||||
},
|
||||
"minimum-stability": "alpha",
|
||||
"require": {
|
||||
"php": ">=5.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit":"^4.8.35|^5.4.3"
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"src/"
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"test": "./run_tests",
|
||||
"test-extension": "@test",
|
||||
"test-win": "run_tests"
|
||||
},
|
||||
"license": "Apache-2.0"
|
||||
}
|
30
vendor/aws/aws-crt-php/config.m4
vendored
Normal file
30
vendor/aws/aws-crt-php/config.m4
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
dnl
|
||||
dnl * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
dnl * SPDX-License-Identifier: Apache-2.0.
|
||||
dnl
|
||||
|
||||
PHP_ARG_WITH(awscrt, for AWS Common Runtime support,
|
||||
[ --with-awscrt Include awscrt support])
|
||||
|
||||
if test "$PHP_AWSCRT" != "no"; then
|
||||
# force lib paths to be absolute, or PHP will mangle them
|
||||
cwd=`pwd`
|
||||
# Enable s2n and libcrypto for non-darwin UNIX
|
||||
if uname -a | grep -i darwin > /dev/null 2>&1; then
|
||||
platform_tls_libs=""
|
||||
else
|
||||
platform_tls_libs="-ls2n -lcrypto"
|
||||
fi
|
||||
CRT_LIBPATHS="-L${cwd}/build/install/lib -L${cwd}/build/install/lib64"
|
||||
CRT_LIBS="-laws-crt-ffi -laws-c-auth -laws-c-http -laws-c-io -laws-c-cal -laws-c-compression -laws-checksums -laws-c-common ${platform_tls_libs}"
|
||||
PHP_ADD_INCLUDE(${cwd}/build/install/include)
|
||||
PHP_EVAL_LIBLINE([$CRT_LIBPATHS $CRT_LIBS], AWSCRT_SHARED_LIBADD)
|
||||
|
||||
# Shoves the linker line into the Makefile
|
||||
PHP_SUBST(AWSCRT_SHARED_LIBADD)
|
||||
|
||||
# Sources for the PHP extension itself
|
||||
AWSCRT_SOURCES=ext/awscrt.c
|
||||
PHP_NEW_EXTENSION(awscrt, $AWSCRT_SOURCES, $ext_shared)
|
||||
PHP_ADD_MAKEFILE_FRAGMENT
|
||||
fi
|
13
vendor/aws/aws-crt-php/config.w32
vendored
Normal file
13
vendor/aws/aws-crt-php/config.w32
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
// vim:ft=javascript
|
||||
|
||||
ARG_ENABLE("awscrt", "Include AWS Common Runtime support", "yes");
|
||||
|
||||
if (PHP_AWSCRT != "no") {
|
||||
ADD_MAKEFILE_FRAGMENT();
|
||||
DEFINE('CFLAGS_AWSCRT', '/I ' + configure_module_dirname + '\\build\\install\\include');
|
||||
DEFINE('LIBS_AWSCRT', '/LIBPATH:' + configure_module_dirname + '\\build\\install\\lib ' +
|
||||
'aws-crt-ffi.lib aws-c-auth.lib aws-c-http.lib aws-c-io.lib aws-c-cal.lib aws-c-compression.lib aws-c-common.lib ' +
|
||||
'ncrypt.lib Secur32.lib Crypt32.lib Shlwapi.lib');
|
||||
DEFINE('AWSCRT_DIR', configure_module_dirname);
|
||||
EXTENSION("awscrt", "ext\\awscrt.c", PHP_AWSCRT_SHARED);
|
||||
}
|
2
vendor/aws/aws-crt-php/ext/.gitignore
vendored
Normal file
2
vendor/aws/aws-crt-php/ext/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.so
|
||||
api.h
|
17
vendor/aws/aws-crt-php/ext/awscrt.c
vendored
Normal file
17
vendor/aws/aws-crt-php/ext/awscrt.c
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
/* This is a unity-build style source file, as PHP's build system is simplest with 1 source file per extension */
|
||||
|
||||
#include "credentials.c"
|
||||
#include "crt.c"
|
||||
#include "event_loop.c"
|
||||
#include "http.c"
|
||||
#include "signing.c"
|
||||
#include "stream.c"
|
||||
// #include "hash.c"
|
||||
#include "crc.c"
|
||||
#include "logging.c"
|
||||
#include "php_util.c"
|
88
vendor/aws/aws-crt-php/ext/awscrt.stub.php
vendored
Normal file
88
vendor/aws/aws-crt-php/ext/awscrt.stub.php
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @generate-class-entries
|
||||
* @generate-function-entries
|
||||
*/
|
||||
|
||||
function aws_crt_last_error(): int {}
|
||||
function aws_crt_error_name(int $error_code): string {}
|
||||
function aws_crt_error_str(int $error_code): string {}
|
||||
function aws_crt_error_debug_str(int $error_code): string {}
|
||||
|
||||
function aws_crt_log_to_stdout(): void {}
|
||||
function aws_crt_log_to_stderr(): void {}
|
||||
function aws_crt_log_to_file(string $filename): void {}
|
||||
function aws_crt_log_to_stream(object $stream): void {}
|
||||
function aws_crt_log_stop(): void {}
|
||||
function aws_crt_log_set_level(int $level): void {}
|
||||
function aws_crt_log_message(string $message): void {}
|
||||
|
||||
function aws_crt_event_loop_group_options_new(): int {}
|
||||
function aws_crt_event_loop_group_options_release(int $elg_options): void {}
|
||||
function aws_crt_event_loop_group_options_set_max_threads(int $elg_options, int $max_threads): void {}
|
||||
function aws_crt_event_loop_group_new(object $options): object {}
|
||||
function aws_crt_event_loop_group_release(object $event_loop_group): void {}
|
||||
|
||||
function aws_crt_input_stream_options_new(): object {}
|
||||
function aws_crt_input_stream_options_release(object $options): void {}
|
||||
function aws_crt_input_stream_options_set_user_data(object $options, object $user_data): void {}
|
||||
function aws_crt_input_stream_new(object $options): object {}
|
||||
function aws_crt_input_stream_release(int $stream): void {}
|
||||
function aws_crt_input_stream_seek(int $stream, int $offset, int $basis): int {}
|
||||
function aws_crt_input_stream_read(int $stream, int $length): string {}
|
||||
function aws_crt_input_stream_eof(int $stream): bool {}
|
||||
function aws_crt_input_stream_get_length(int $stream): int {}
|
||||
|
||||
function aws_crt_http_message_new_from_blob(string $blob): int {}
|
||||
function aws_crt_http_message_to_blob(int $message): string {}
|
||||
function aws_crt_http_message_release(int $message): void {}
|
||||
|
||||
function aws_crt_credentials_options_new(): object {}
|
||||
function aws_crt_credentials_options_release(object $options): void {}
|
||||
function aws_crt_credentials_options_set_access_key_id(object $options, string $access_key_id): void {}
|
||||
function aws_crt_credentials_options_set_secret_access_key(object $options, string $secret_access_key): void {}
|
||||
function aws_crt_credentials_options_set_session_token(object $options, string $session_token): void {}
|
||||
function aws_crt_credentials_options_set_expiration_timepoint_seconds(object $options, int $expiration_timepoint_seconds): void {}
|
||||
|
||||
function aws_crt_credentials_new(object $options): object {}
|
||||
function aws_crt_credentials_release(object $credentials): void {}
|
||||
|
||||
function aws_crt_credentials_provider_release(int $credentials): void {}
|
||||
|
||||
function aws_crt_credentials_provider_static_options_new(): object {}
|
||||
function aws_crt_credentials_provider_static_options_release(object $options): void {}
|
||||
function aws_crt_credentials_provider_static_options_set_access_key_id(object $options, string $access_key_id): void {}
|
||||
function aws_crt_credentials_provider_static_options_set_secret_access_key(object $options, string $secret_access_key): void {}
|
||||
function aws_crt_credentials_provider_static_options_set_session_token(object $options, string $session_token): void {}
|
||||
function aws_crt_credentials_provider_static_new(object $options): object {}
|
||||
|
||||
function aws_crt_signing_config_aws_new(): int {}
|
||||
function aws_crt_signing_config_aws_release(int $config): void {}
|
||||
function aws_crt_signing_config_aws_set_algorithm(int $config, int $algorithm): void {}
|
||||
function aws_crt_signing_config_aws_set_signature_type(int $config, int $signature_type): void {}
|
||||
function aws_crt_signing_config_aws_set_credentials_provider(int $config, int $credentials_provider): void {}
|
||||
function aws_crt_signing_config_aws_set_region(int $config, string $region): void {}
|
||||
function aws_crt_signing_config_aws_set_service(int $config, string $service): void {}
|
||||
function aws_crt_signing_config_aws_set_use_double_uri_encode(int $config, bool $use_double_uri_encode): void {}
|
||||
function aws_crt_signing_config_aws_set_should_normalize_uri_path(int $config, bool $should_normalize_uri_path): void {}
|
||||
function aws_crt_signing_config_aws_set_omit_session_token(int $config, bool $omit_session_token): void {}
|
||||
function aws_crt_signing_config_aws_set_signed_body_value(int $config, string $signed_body_value): void {}
|
||||
function aws_crt_signing_config_aws_set_signed_body_header_type(int $config, int $signed_body_header_type): void {}
|
||||
function aws_crt_signing_config_aws_set_expiration_in_seconds(int $config, int $expiration_in_seconds): void {}
|
||||
function aws_crt_signing_config_aws_set_date(int $config, int $timestamp): void {}
|
||||
function aws_crt_signing_config_aws_set_should_sign_header_fn(int $config, object $should_sign_header): void {}
|
||||
|
||||
function aws_crt_signable_new_from_http_request(int $http_message): int {}
|
||||
function aws_crt_signable_new_from_chunk(int $input_stream, string $previous_signature): int {}
|
||||
function aws_crt_signable_new_from_canonical_request(string $request): int {}
|
||||
function aws_crt_signable_release(int $signable): void {}
|
||||
|
||||
function aws_crt_signing_result_release(int $signing_result): void {}
|
||||
function aws_crt_signing_result_apply_to_http_request(object $signing_result, object $http_request): void {}
|
||||
|
||||
function aws_crt_sign_request_aws(int $signable, int $signing_config, object $on_complete, object $user_data): int {}
|
||||
function aws_crt_test_verify_sigv4a_signing(int $signable, int $signing_config, string $expected_canonical_request, string $signature, string $ecc_key_pub_x, string $ecc_key_pub_y): bool {}
|
||||
|
||||
function aws_crt_crc32(string $input, int $prev): int {}
|
||||
function aws_crt_crc32c(string $input, int $prev): int {}
|
413
vendor/aws/aws-crt-php/ext/awscrt_arginfo.h
vendored
Normal file
413
vendor/aws/aws-crt-php/ext/awscrt_arginfo.h
vendored
Normal file
@@ -0,0 +1,413 @@
|
||||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 344f9d59b85697b80bb6808ac7d5eb7c1d07c03f */
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_last_error, 0, 0, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_error_name, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, error_code)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_error_str arginfo_aws_crt_error_name
|
||||
|
||||
#define arginfo_aws_crt_error_debug_str arginfo_aws_crt_error_name
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_stdout, 0, 0, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_log_to_stderr arginfo_aws_crt_log_to_stdout
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_file, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, filename)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_to_stream, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, stream)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_log_stop arginfo_aws_crt_log_to_stdout
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_set_level, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, level)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_log_message, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, message)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_event_loop_group_options_new arginfo_aws_crt_last_error
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_options_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, elg_options)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_options_set_max_threads, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, elg_options)
|
||||
ZEND_ARG_INFO(0, max_threads)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_new, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_event_loop_group_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, event_loop_group)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_new, 0, 0, 0)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_options_set_user_data, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
ZEND_ARG_INFO(0, user_data)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_input_stream_new arginfo_aws_crt_event_loop_group_new
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, stream)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_seek, 0, 0, 3)
|
||||
ZEND_ARG_INFO(0, stream)
|
||||
ZEND_ARG_INFO(0, offset)
|
||||
ZEND_ARG_INFO(0, basis)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_read, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, stream)
|
||||
ZEND_ARG_INFO(0, length)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_eof, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, stream)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_input_stream_get_length, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, stream)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_new_from_blob, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, blob)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_to_blob, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, message)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_http_message_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, message)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_credentials_options_new arginfo_aws_crt_input_stream_options_new
|
||||
|
||||
#define arginfo_aws_crt_credentials_options_release arginfo_aws_crt_input_stream_options_release
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_access_key_id, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
ZEND_ARG_INFO(0, access_key_id)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_secret_access_key, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
ZEND_ARG_INFO(0, secret_access_key)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_session_token, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
ZEND_ARG_INFO(0, session_token)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_options_set_expiration_timepoint_seconds, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, options)
|
||||
ZEND_ARG_INFO(0, expiration_timepoint_seconds)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_credentials_new arginfo_aws_crt_event_loop_group_new
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, credentials)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_credentials_provider_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, credentials)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_credentials_provider_static_options_new arginfo_aws_crt_input_stream_options_new
|
||||
|
||||
#define arginfo_aws_crt_credentials_provider_static_options_release arginfo_aws_crt_input_stream_options_release
|
||||
|
||||
#define arginfo_aws_crt_credentials_provider_static_options_set_access_key_id arginfo_aws_crt_credentials_options_set_access_key_id
|
||||
|
||||
#define arginfo_aws_crt_credentials_provider_static_options_set_secret_access_key arginfo_aws_crt_credentials_options_set_secret_access_key
|
||||
|
||||
#define arginfo_aws_crt_credentials_provider_static_options_set_session_token arginfo_aws_crt_credentials_options_set_session_token
|
||||
|
||||
#define arginfo_aws_crt_credentials_provider_static_new arginfo_aws_crt_event_loop_group_new
|
||||
|
||||
#define arginfo_aws_crt_signing_config_aws_new arginfo_aws_crt_last_error
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_algorithm, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, algorithm)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signature_type, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, signature_type)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_credentials_provider, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, credentials_provider)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_region, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, region)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_service, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, service)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_use_double_uri_encode, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, use_double_uri_encode)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_should_normalize_uri_path, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, should_normalize_uri_path)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_omit_session_token, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, omit_session_token)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signed_body_value, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, signed_body_value)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_signed_body_header_type, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, signed_body_header_type)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_expiration_in_seconds, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, expiration_in_seconds)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_date, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, timestamp)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_config_aws_set_should_sign_header_fn, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, config)
|
||||
ZEND_ARG_INFO(0, should_sign_header)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_http_request, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, http_message)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_chunk, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, input_stream)
|
||||
ZEND_ARG_INFO(0, previous_signature)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_new_from_canonical_request, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, request)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signable_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, signable)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_result_release, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, signing_result)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_signing_result_apply_to_http_request, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, signing_result)
|
||||
ZEND_ARG_INFO(0, http_request)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_sign_request_aws, 0, 0, 4)
|
||||
ZEND_ARG_INFO(0, signable)
|
||||
ZEND_ARG_INFO(0, signing_config)
|
||||
ZEND_ARG_INFO(0, on_complete)
|
||||
ZEND_ARG_INFO(0, user_data)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_test_verify_sigv4a_signing, 0, 0, 6)
|
||||
ZEND_ARG_INFO(0, signable)
|
||||
ZEND_ARG_INFO(0, signing_config)
|
||||
ZEND_ARG_INFO(0, expected_canonical_request)
|
||||
ZEND_ARG_INFO(0, signature)
|
||||
ZEND_ARG_INFO(0, ecc_key_pub_x)
|
||||
ZEND_ARG_INFO(0, ecc_key_pub_y)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_aws_crt_crc32, 0, 0, 2)
|
||||
ZEND_ARG_INFO(0, input)
|
||||
ZEND_ARG_INFO(0, prev)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
#define arginfo_aws_crt_crc32c arginfo_aws_crt_crc32
|
||||
|
||||
|
||||
ZEND_FUNCTION(aws_crt_last_error);
|
||||
ZEND_FUNCTION(aws_crt_error_name);
|
||||
ZEND_FUNCTION(aws_crt_error_str);
|
||||
ZEND_FUNCTION(aws_crt_error_debug_str);
|
||||
ZEND_FUNCTION(aws_crt_log_to_stdout);
|
||||
ZEND_FUNCTION(aws_crt_log_to_stderr);
|
||||
ZEND_FUNCTION(aws_crt_log_to_file);
|
||||
ZEND_FUNCTION(aws_crt_log_to_stream);
|
||||
ZEND_FUNCTION(aws_crt_log_stop);
|
||||
ZEND_FUNCTION(aws_crt_log_set_level);
|
||||
ZEND_FUNCTION(aws_crt_log_message);
|
||||
ZEND_FUNCTION(aws_crt_event_loop_group_options_new);
|
||||
ZEND_FUNCTION(aws_crt_event_loop_group_options_release);
|
||||
ZEND_FUNCTION(aws_crt_event_loop_group_options_set_max_threads);
|
||||
ZEND_FUNCTION(aws_crt_event_loop_group_new);
|
||||
ZEND_FUNCTION(aws_crt_event_loop_group_release);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_options_new);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_options_release);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_options_set_user_data);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_new);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_release);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_seek);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_read);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_eof);
|
||||
ZEND_FUNCTION(aws_crt_input_stream_get_length);
|
||||
ZEND_FUNCTION(aws_crt_http_message_new_from_blob);
|
||||
ZEND_FUNCTION(aws_crt_http_message_to_blob);
|
||||
ZEND_FUNCTION(aws_crt_http_message_release);
|
||||
ZEND_FUNCTION(aws_crt_credentials_options_new);
|
||||
ZEND_FUNCTION(aws_crt_credentials_options_release);
|
||||
ZEND_FUNCTION(aws_crt_credentials_options_set_access_key_id);
|
||||
ZEND_FUNCTION(aws_crt_credentials_options_set_secret_access_key);
|
||||
ZEND_FUNCTION(aws_crt_credentials_options_set_session_token);
|
||||
ZEND_FUNCTION(aws_crt_credentials_options_set_expiration_timepoint_seconds);
|
||||
ZEND_FUNCTION(aws_crt_credentials_new);
|
||||
ZEND_FUNCTION(aws_crt_credentials_release);
|
||||
ZEND_FUNCTION(aws_crt_credentials_provider_release);
|
||||
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_new);
|
||||
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_release);
|
||||
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_access_key_id);
|
||||
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_secret_access_key);
|
||||
ZEND_FUNCTION(aws_crt_credentials_provider_static_options_set_session_token);
|
||||
ZEND_FUNCTION(aws_crt_credentials_provider_static_new);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_new);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_release);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_algorithm);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_signature_type);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_credentials_provider);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_region);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_service);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_use_double_uri_encode);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_should_normalize_uri_path);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_omit_session_token);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_signed_body_value);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_signed_body_header_type);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_expiration_in_seconds);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_date);
|
||||
ZEND_FUNCTION(aws_crt_signing_config_aws_set_should_sign_header_fn);
|
||||
ZEND_FUNCTION(aws_crt_signable_new_from_http_request);
|
||||
ZEND_FUNCTION(aws_crt_signable_new_from_chunk);
|
||||
ZEND_FUNCTION(aws_crt_signable_new_from_canonical_request);
|
||||
ZEND_FUNCTION(aws_crt_signable_release);
|
||||
ZEND_FUNCTION(aws_crt_signing_result_release);
|
||||
ZEND_FUNCTION(aws_crt_signing_result_apply_to_http_request);
|
||||
ZEND_FUNCTION(aws_crt_sign_request_aws);
|
||||
ZEND_FUNCTION(aws_crt_test_verify_sigv4a_signing);
|
||||
ZEND_FUNCTION(aws_crt_crc32);
|
||||
ZEND_FUNCTION(aws_crt_crc32c);
|
||||
|
||||
|
||||
static const zend_function_entry ext_functions[] = {
|
||||
ZEND_FE(aws_crt_last_error, arginfo_aws_crt_last_error)
|
||||
ZEND_FE(aws_crt_error_name, arginfo_aws_crt_error_name)
|
||||
ZEND_FE(aws_crt_error_str, arginfo_aws_crt_error_str)
|
||||
ZEND_FE(aws_crt_error_debug_str, arginfo_aws_crt_error_debug_str)
|
||||
ZEND_FE(aws_crt_log_to_stdout, arginfo_aws_crt_log_to_stdout)
|
||||
ZEND_FE(aws_crt_log_to_stderr, arginfo_aws_crt_log_to_stderr)
|
||||
ZEND_FE(aws_crt_log_to_file, arginfo_aws_crt_log_to_file)
|
||||
ZEND_FE(aws_crt_log_to_stream, arginfo_aws_crt_log_to_stream)
|
||||
ZEND_FE(aws_crt_log_stop, arginfo_aws_crt_log_stop)
|
||||
ZEND_FE(aws_crt_log_set_level, arginfo_aws_crt_log_set_level)
|
||||
ZEND_FE(aws_crt_log_message, arginfo_aws_crt_log_message)
|
||||
ZEND_FE(aws_crt_event_loop_group_options_new, arginfo_aws_crt_event_loop_group_options_new)
|
||||
ZEND_FE(aws_crt_event_loop_group_options_release, arginfo_aws_crt_event_loop_group_options_release)
|
||||
ZEND_FE(aws_crt_event_loop_group_options_set_max_threads, arginfo_aws_crt_event_loop_group_options_set_max_threads)
|
||||
ZEND_FE(aws_crt_event_loop_group_new, arginfo_aws_crt_event_loop_group_new)
|
||||
ZEND_FE(aws_crt_event_loop_group_release, arginfo_aws_crt_event_loop_group_release)
|
||||
ZEND_FE(aws_crt_input_stream_options_new, arginfo_aws_crt_input_stream_options_new)
|
||||
ZEND_FE(aws_crt_input_stream_options_release, arginfo_aws_crt_input_stream_options_release)
|
||||
ZEND_FE(aws_crt_input_stream_options_set_user_data, arginfo_aws_crt_input_stream_options_set_user_data)
|
||||
ZEND_FE(aws_crt_input_stream_new, arginfo_aws_crt_input_stream_new)
|
||||
ZEND_FE(aws_crt_input_stream_release, arginfo_aws_crt_input_stream_release)
|
||||
ZEND_FE(aws_crt_input_stream_seek, arginfo_aws_crt_input_stream_seek)
|
||||
ZEND_FE(aws_crt_input_stream_read, arginfo_aws_crt_input_stream_read)
|
||||
ZEND_FE(aws_crt_input_stream_eof, arginfo_aws_crt_input_stream_eof)
|
||||
ZEND_FE(aws_crt_input_stream_get_length, arginfo_aws_crt_input_stream_get_length)
|
||||
ZEND_FE(aws_crt_http_message_new_from_blob, arginfo_aws_crt_http_message_new_from_blob)
|
||||
ZEND_FE(aws_crt_http_message_to_blob, arginfo_aws_crt_http_message_to_blob)
|
||||
ZEND_FE(aws_crt_http_message_release, arginfo_aws_crt_http_message_release)
|
||||
ZEND_FE(aws_crt_credentials_options_new, arginfo_aws_crt_credentials_options_new)
|
||||
ZEND_FE(aws_crt_credentials_options_release, arginfo_aws_crt_credentials_options_release)
|
||||
ZEND_FE(aws_crt_credentials_options_set_access_key_id, arginfo_aws_crt_credentials_options_set_access_key_id)
|
||||
ZEND_FE(aws_crt_credentials_options_set_secret_access_key, arginfo_aws_crt_credentials_options_set_secret_access_key)
|
||||
ZEND_FE(aws_crt_credentials_options_set_session_token, arginfo_aws_crt_credentials_options_set_session_token)
|
||||
ZEND_FE(aws_crt_credentials_options_set_expiration_timepoint_seconds, arginfo_aws_crt_credentials_options_set_expiration_timepoint_seconds)
|
||||
ZEND_FE(aws_crt_credentials_new, arginfo_aws_crt_credentials_new)
|
||||
ZEND_FE(aws_crt_credentials_release, arginfo_aws_crt_credentials_release)
|
||||
ZEND_FE(aws_crt_credentials_provider_release, arginfo_aws_crt_credentials_provider_release)
|
||||
ZEND_FE(aws_crt_credentials_provider_static_options_new, arginfo_aws_crt_credentials_provider_static_options_new)
|
||||
ZEND_FE(aws_crt_credentials_provider_static_options_release, arginfo_aws_crt_credentials_provider_static_options_release)
|
||||
ZEND_FE(aws_crt_credentials_provider_static_options_set_access_key_id, arginfo_aws_crt_credentials_provider_static_options_set_access_key_id)
|
||||
ZEND_FE(aws_crt_credentials_provider_static_options_set_secret_access_key, arginfo_aws_crt_credentials_provider_static_options_set_secret_access_key)
|
||||
ZEND_FE(aws_crt_credentials_provider_static_options_set_session_token, arginfo_aws_crt_credentials_provider_static_options_set_session_token)
|
||||
ZEND_FE(aws_crt_credentials_provider_static_new, arginfo_aws_crt_credentials_provider_static_new)
|
||||
ZEND_FE(aws_crt_signing_config_aws_new, arginfo_aws_crt_signing_config_aws_new)
|
||||
ZEND_FE(aws_crt_signing_config_aws_release, arginfo_aws_crt_signing_config_aws_release)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_algorithm, arginfo_aws_crt_signing_config_aws_set_algorithm)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_signature_type, arginfo_aws_crt_signing_config_aws_set_signature_type)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_credentials_provider, arginfo_aws_crt_signing_config_aws_set_credentials_provider)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_region, arginfo_aws_crt_signing_config_aws_set_region)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_service, arginfo_aws_crt_signing_config_aws_set_service)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_use_double_uri_encode, arginfo_aws_crt_signing_config_aws_set_use_double_uri_encode)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_should_normalize_uri_path, arginfo_aws_crt_signing_config_aws_set_should_normalize_uri_path)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_omit_session_token, arginfo_aws_crt_signing_config_aws_set_omit_session_token)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_signed_body_value, arginfo_aws_crt_signing_config_aws_set_signed_body_value)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_signed_body_header_type, arginfo_aws_crt_signing_config_aws_set_signed_body_header_type)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_expiration_in_seconds, arginfo_aws_crt_signing_config_aws_set_expiration_in_seconds)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_date, arginfo_aws_crt_signing_config_aws_set_date)
|
||||
ZEND_FE(aws_crt_signing_config_aws_set_should_sign_header_fn, arginfo_aws_crt_signing_config_aws_set_should_sign_header_fn)
|
||||
ZEND_FE(aws_crt_signable_new_from_http_request, arginfo_aws_crt_signable_new_from_http_request)
|
||||
ZEND_FE(aws_crt_signable_new_from_chunk, arginfo_aws_crt_signable_new_from_chunk)
|
||||
ZEND_FE(aws_crt_signable_new_from_canonical_request, arginfo_aws_crt_signable_new_from_canonical_request)
|
||||
ZEND_FE(aws_crt_signable_release, arginfo_aws_crt_signable_release)
|
||||
ZEND_FE(aws_crt_signing_result_release, arginfo_aws_crt_signing_result_release)
|
||||
ZEND_FE(aws_crt_signing_result_apply_to_http_request, arginfo_aws_crt_signing_result_apply_to_http_request)
|
||||
ZEND_FE(aws_crt_sign_request_aws, arginfo_aws_crt_sign_request_aws)
|
||||
ZEND_FE(aws_crt_test_verify_sigv4a_signing, arginfo_aws_crt_test_verify_sigv4a_signing)
|
||||
ZEND_FE(aws_crt_crc32, arginfo_aws_crt_crc32)
|
||||
ZEND_FE(aws_crt_crc32c, arginfo_aws_crt_crc32c)
|
||||
ZEND_FE_END
|
||||
};
|
32
vendor/aws/aws-crt-php/ext/crc.c
vendored
Normal file
32
vendor/aws/aws-crt-php/ext/crc.c
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
PHP_FUNCTION(aws_crt_crc32) {
|
||||
zend_ulong prev = 0;
|
||||
const char *input = NULL;
|
||||
size_t len = 0;
|
||||
|
||||
aws_php_parse_parameters("sl", &input, &len, &prev);
|
||||
|
||||
if (prev > UINT32_MAX) {
|
||||
aws_php_throw_exception("previous crc cannot be larger than UINT32_MAX");
|
||||
}
|
||||
RETURN_LONG((zend_ulong)aws_crt_crc32((const uint8_t *)input, len, prev));
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_crc32c) {
|
||||
zend_ulong prev = 0;
|
||||
const char *input = NULL;
|
||||
size_t len = 0;
|
||||
|
||||
aws_php_parse_parameters("sl", &input, &len, &prev);
|
||||
|
||||
if (prev > UINT32_MAX) {
|
||||
aws_php_throw_exception("previous crc cannot be larger than UINT32_MAX");
|
||||
}
|
||||
RETURN_LONG((zend_ulong)aws_crt_crc32c((const uint8_t *)input, len, prev));
|
||||
}
|
154
vendor/aws/aws-crt-php/ext/credentials.c
vendored
Normal file
154
vendor/aws/aws-crt-php/ext/credentials.c
vendored
Normal file
@@ -0,0 +1,154 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_options_new) {
|
||||
aws_crt_credentials_options *options = aws_crt_credentials_options_new();
|
||||
RETURN_LONG((zend_ulong)options);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_options_release) {
|
||||
zend_ulong php_options = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_options);
|
||||
|
||||
aws_crt_credentials_options *options = (void *)php_options;
|
||||
aws_crt_credentials_options_release(options);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_options_set_access_key_id) {
|
||||
zend_ulong php_options = 0;
|
||||
const char *access_key_id = NULL;
|
||||
size_t access_key_id_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &php_options, &access_key_id, &access_key_id_len);
|
||||
|
||||
aws_crt_credentials_options *options = (void *)php_options;
|
||||
aws_crt_credentials_options_set_access_key_id(options, (uint8_t *)access_key_id, access_key_id_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_options_set_secret_access_key) {
|
||||
zend_ulong php_options = 0;
|
||||
const char *secret_access_key = NULL;
|
||||
size_t secret_access_key_len = 0;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ls", &php_options, &secret_access_key, &secret_access_key_len) ==
|
||||
FAILURE) {
|
||||
RETURN_NULL();
|
||||
}
|
||||
|
||||
aws_crt_credentials_options *options = (void *)php_options;
|
||||
aws_crt_credentials_options_set_secret_access_key(options, (uint8_t *)secret_access_key, secret_access_key_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_options_set_session_token) {
|
||||
zend_ulong php_options = 0;
|
||||
const char *session_token = NULL;
|
||||
size_t session_token_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &php_options, &session_token, &session_token_len);
|
||||
|
||||
aws_crt_credentials_options *options = (void *)php_options;
|
||||
aws_crt_credentials_options_set_session_token(options, (uint8_t *)session_token, session_token_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_options_set_expiration_timepoint_seconds) {
|
||||
zend_ulong php_options = 0;
|
||||
zend_ulong expiration_timepoint_seconds = 0;
|
||||
aws_php_parse_parameters("ll", &php_options, &expiration_timepoint_seconds);
|
||||
|
||||
aws_crt_credentials_options *options = (void *)php_options;
|
||||
aws_crt_credentials_options_set_expiration_timepoint_seconds(options, expiration_timepoint_seconds);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_new) {
|
||||
zend_ulong php_options = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_options);
|
||||
|
||||
aws_crt_credentials_options *options = (void *)php_options;
|
||||
aws_crt_credentials *credentials = aws_crt_credentials_new(options);
|
||||
RETURN_LONG((zend_ulong)credentials);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_release) {
|
||||
zend_ulong php_credentials = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_credentials);
|
||||
|
||||
aws_crt_credentials *credentials = (void *)php_credentials;
|
||||
aws_crt_credentials_release(credentials);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_provider_release) {
|
||||
zend_ulong php_creds_provider = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_creds_provider);
|
||||
|
||||
aws_crt_credentials_provider *provider = (void *)php_creds_provider;
|
||||
aws_crt_credentials_provider_release(provider);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_provider_static_options_new) {
|
||||
aws_crt_credentials_provider_static_options *options = aws_crt_credentials_provider_static_options_new();
|
||||
RETURN_LONG((zend_ulong)options);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_provider_static_options_release) {
|
||||
zend_ulong php_options = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_options);
|
||||
|
||||
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
||||
aws_crt_credentials_provider_static_options_release(options);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_access_key_id) {
|
||||
zend_ulong php_options = 0;
|
||||
const char *access_key_id = NULL;
|
||||
size_t access_key_id_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &php_options, &access_key_id, &access_key_id_len);
|
||||
|
||||
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
||||
aws_crt_credentials_provider_static_options_set_access_key_id(options, (uint8_t *)access_key_id, access_key_id_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_secret_access_key) {
|
||||
zend_ulong php_options = 0;
|
||||
const char *secret_access_key = NULL;
|
||||
size_t secret_access_key_len = 0;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ls", &php_options, &secret_access_key, &secret_access_key_len) ==
|
||||
FAILURE) {
|
||||
RETURN_NULL();
|
||||
}
|
||||
|
||||
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
||||
aws_crt_credentials_provider_static_options_set_secret_access_key(
|
||||
options, (uint8_t *)secret_access_key, secret_access_key_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_provider_static_options_set_session_token) {
|
||||
zend_ulong php_options = 0;
|
||||
const char *session_token = NULL;
|
||||
size_t session_token_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &php_options, &session_token, &session_token_len);
|
||||
|
||||
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
||||
aws_crt_credentials_provider_static_options_set_session_token(options, (uint8_t *)session_token, session_token_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_credentials_provider_static_new) {
|
||||
zend_ulong php_options = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_options);
|
||||
|
||||
aws_crt_credentials_provider_static_options *options = (void *)php_options;
|
||||
aws_crt_credentials_provider *provider = aws_crt_credentials_provider_static_new(options);
|
||||
RETURN_LONG((zend_ulong)provider);
|
||||
}
|
314
vendor/aws/aws-crt-php/ext/crt.c
vendored
Normal file
314
vendor/aws/aws-crt-php/ext/crt.c
vendored
Normal file
@@ -0,0 +1,314 @@
|
||||
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
/* Helpful references for this extension:
|
||||
* zend_parse_parameters and friends -
|
||||
* https://git.php.net/?p=php-src.git;a=blob;f=docs/parameter-parsing-api.md;h=c962fc6ee58cc756aaac9e65759b7d5ea5c18fc4;hb=HEAD
|
||||
* https://git.php.net/?p=php-src.git;a=blob;f=docs/self-contained-extensions.md;h=47f4c636baca8ca195118e2cc234ac7fd2842c1b;hb=HEAD
|
||||
* Threads:
|
||||
* http://blog.jpauli.tech/2017-01-12-threads-and-php-html/
|
||||
* Examples:
|
||||
* Curl extension: https://github.com/php/php-src/blob/PHP-5.6/ext/curl/interface.c
|
||||
* libuv extension: https://github.com/amphp/ext-uv/blob/master/php_uv.c
|
||||
*/
|
||||
|
||||
zval aws_php_invoke_callback(zval *callback, const char *arg_types, ...) {
|
||||
|
||||
char *error = NULL;
|
||||
zend_fcall_info fci = {0};
|
||||
zend_fcall_info_cache fcc = empty_fcall_info_cache;
|
||||
if (zend_fcall_info_init(callback, IS_CALLABLE_CHECK_SYNTAX_ONLY, &fci, &fcc, NULL, &error) == FAILURE) {
|
||||
aws_php_throw_exception("Unable to initialize callback from callable via zend_fcall_info_init: %s", error);
|
||||
}
|
||||
|
||||
/* Allocate the stack frame of zval arguments and fill them in */
|
||||
const size_t num_args = strlen(arg_types);
|
||||
zval *stack = alloca(sizeof(zval) * num_args);
|
||||
int arg_idx = 0;
|
||||
va_list va;
|
||||
va_start(va, arg_types);
|
||||
while (arg_idx < num_args) {
|
||||
const char arg_type = arg_types[arg_idx];
|
||||
switch (arg_type) {
|
||||
/* zval types */
|
||||
case 'a':
|
||||
case 'A':
|
||||
case 'n':
|
||||
case 'o':
|
||||
case 'r':
|
||||
case 'z': {
|
||||
zval *zval_val = va_arg(va, zval *);
|
||||
ZVAL_ZVAL(&stack[arg_idx], zval_val, 0, 0);
|
||||
break;
|
||||
}
|
||||
/* buffers/strings (char *, size_t) */
|
||||
case 'p':
|
||||
case 's': {
|
||||
const char *buf = va_arg(va, const char *);
|
||||
const size_t len = va_arg(va, size_t);
|
||||
aws_php_zval_stringl(&stack[arg_idx], buf, len);
|
||||
break;
|
||||
}
|
||||
/* other primitives */
|
||||
case 'b': {
|
||||
zend_bool bool_val = va_arg(va, int);
|
||||
ZVAL_BOOL(&stack[arg_idx], bool_val);
|
||||
break;
|
||||
}
|
||||
case 'd': {
|
||||
double double_val = va_arg(va, double);
|
||||
ZVAL_DOUBLE(&stack[arg_idx], double_val);
|
||||
break;
|
||||
}
|
||||
case 'l': {
|
||||
zend_ulong long_val = va_arg(va, zend_ulong);
|
||||
ZVAL_LONG(&stack[arg_idx], long_val);
|
||||
break;
|
||||
}
|
||||
/* strings (zend_string), not supported in PHP 5.6, therefore not supported */
|
||||
case 'P':
|
||||
case 'S':
|
||||
/* unsupported */
|
||||
case 'C':
|
||||
case 'f':
|
||||
case 'h':
|
||||
case 'H':
|
||||
case 'O':
|
||||
aws_php_throw_exception("Unsupported argument type to aws_php_invoke_callback: %c", arg_type);
|
||||
break;
|
||||
default:
|
||||
aws_php_throw_exception("Unsupported argument type to aws_php_invoke_callback: %c", arg_type);
|
||||
break;
|
||||
}
|
||||
++arg_idx;
|
||||
}
|
||||
va_end(va);
|
||||
|
||||
/* set up the stack for the call */
|
||||
#if AWS_PHP_AT_LEAST_7
|
||||
zend_fcall_info_argp(&fci, num_args, stack);
|
||||
#else
|
||||
/* PHP5.6 may mutate the arguments due to coercion */
|
||||
zval **arg_ptrs = alloca(sizeof(zval *) * num_args);
|
||||
zval ***args = alloca(sizeof(zval **) * num_args);
|
||||
for (int arg_idx = 0; arg_idx < num_args; ++arg_idx) {
|
||||
arg_ptrs[arg_idx] = &stack[arg_idx];
|
||||
args[arg_idx] = &arg_ptrs[arg_idx];
|
||||
}
|
||||
fci.param_count = num_args;
|
||||
fci.params = args;
|
||||
#endif
|
||||
|
||||
zval retval;
|
||||
/* PHP5 allocates its own return value, 7+ uses an existing one we provide */
|
||||
#if !AWS_PHP_AT_LEAST_7
|
||||
zval *retval5 = NULL;
|
||||
fci.retval_ptr_ptr = &retval5;
|
||||
#else
|
||||
fci.retval = &retval;
|
||||
#endif
|
||||
|
||||
if (zend_call_function(&fci, &fcc) == FAILURE) {
|
||||
aws_php_throw_exception("zend_call_function failed in aws_php_invoke_callback");
|
||||
}
|
||||
|
||||
#if !AWS_PHP_AT_LEAST_7
|
||||
/* initialize the local retval from the retval in retval_ptr_ptr above */
|
||||
if (retval5) {
|
||||
ZVAL_ZVAL(&retval, retval5, 1, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Clean up arguments */
|
||||
#if AWS_PHP_AT_LEAST_7
|
||||
zend_fcall_info_args_clear(&fci, 1);
|
||||
#endif
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
void aws_php_zval_stringl(zval *val, const char *str, size_t len) {
|
||||
AWS_FATAL_ASSERT(val != NULL);
|
||||
#if AWS_PHP_AT_LEAST_7
|
||||
ZVAL_STRINGL(val, str, len);
|
||||
#else
|
||||
ZVAL_STRINGL(val, str, len, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
aws_php_thread_queue s_aws_php_main_thread_queue;
|
||||
|
||||
bool aws_php_is_main_thread(void) {
|
||||
return s_aws_php_main_thread_queue.thread_id == aws_thread_current_thread_id();
|
||||
}
|
||||
|
||||
void aws_php_thread_queue_init(aws_php_thread_queue *queue) {
|
||||
aws_mutex_init(&queue->mutex);
|
||||
memset(queue->queue, 0, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
|
||||
queue->write_slot = 0;
|
||||
queue->thread_id = aws_thread_current_thread_id();
|
||||
}
|
||||
|
||||
void aws_php_thread_queue_clean_up(aws_php_thread_queue *queue) {
|
||||
assert(queue->write_slot == 0 && "aws_php_thread_queue cannot be cleaned up while queue is not empty");
|
||||
aws_mutex_clean_up(&queue->mutex);
|
||||
}
|
||||
|
||||
void aws_php_thread_queue_push(aws_php_thread_queue *queue, aws_php_task task) {
|
||||
aws_mutex_lock(&queue->mutex);
|
||||
assert(queue->write_slot < AWS_PHP_THREAD_QUEUE_MAX_DEPTH && "thread queue is full");
|
||||
queue->queue[queue->write_slot++] = task;
|
||||
aws_mutex_unlock(&queue->mutex);
|
||||
}
|
||||
|
||||
bool aws_php_thread_queue_drain(aws_php_thread_queue *queue) {
|
||||
assert(
|
||||
queue->thread_id == aws_thread_current_thread_id() &&
|
||||
"thread queue cannot be drained from a thread other than its home");
|
||||
aws_php_task drain_queue[AWS_PHP_THREAD_QUEUE_MAX_DEPTH];
|
||||
aws_mutex_lock(&queue->mutex);
|
||||
/* copy any queued tasks into the drain queue, then reset the queue */
|
||||
memcpy(drain_queue, queue->queue, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
|
||||
memset(queue->queue, 0, sizeof(aws_php_task) * AWS_PHP_THREAD_QUEUE_MAX_DEPTH);
|
||||
queue->write_slot = 0;
|
||||
aws_mutex_unlock(&queue->mutex);
|
||||
|
||||
bool did_work = false;
|
||||
for (int idx = 0; idx < AWS_PHP_THREAD_QUEUE_MAX_DEPTH; ++idx) {
|
||||
aws_php_task *task = &drain_queue[idx];
|
||||
if (!task->callback) {
|
||||
break;
|
||||
}
|
||||
did_work = true;
|
||||
task->callback(task->data);
|
||||
if (task->dtor) {
|
||||
task->dtor(task->data);
|
||||
}
|
||||
}
|
||||
|
||||
return did_work;
|
||||
}
|
||||
|
||||
/* called on main thread after delivery */
|
||||
static void s_thread_queue_complete_promise(void *data) {
|
||||
struct aws_promise *promise = data;
|
||||
aws_promise_complete(promise, NULL, NULL);
|
||||
}
|
||||
|
||||
/* called from worker thread to wait for the main thread to execute any queued work in PHP */
|
||||
void aws_php_thread_queue_yield(aws_php_thread_queue *queue) {
|
||||
/* If on the main thread, then just drain the queue */
|
||||
if (aws_php_is_main_thread()) {
|
||||
aws_php_thread_queue_drain(queue);
|
||||
} else {
|
||||
/* push a task onto the end of the queue, we will return once this task completes our promise */
|
||||
struct aws_promise *queue_drained = aws_promise_new(aws_crt_default_allocator());
|
||||
aws_php_task queue_drained_task = {
|
||||
.callback = s_thread_queue_complete_promise,
|
||||
.data = queue_drained,
|
||||
};
|
||||
aws_php_thread_queue_push(queue, queue_drained_task);
|
||||
aws_promise_wait(queue_drained);
|
||||
aws_promise_release(queue_drained);
|
||||
}
|
||||
}
|
||||
|
||||
/* called from PHP thread to wait on async queued jobs, one of which should complete the promise */
|
||||
void aws_php_thread_queue_wait(aws_php_thread_queue *queue, struct aws_promise *promise) {
|
||||
while (!aws_promise_is_complete(promise)) {
|
||||
aws_php_thread_queue_drain(queue);
|
||||
}
|
||||
}
|
||||
|
||||
ZEND_DECLARE_MODULE_GLOBALS(awscrt);
|
||||
|
||||
PHP_INI_BEGIN()
|
||||
STD_PHP_INI_ENTRY(
|
||||
"awscrt.log_level",
|
||||
"",
|
||||
PHP_INI_ALL,
|
||||
OnUpdateLongGEZero,
|
||||
log_level,
|
||||
zend_awscrt_globals,
|
||||
awscrt_globals)
|
||||
PHP_INI_END()
|
||||
|
||||
static PHP_MINIT_FUNCTION(awscrt) {
|
||||
REGISTER_INI_ENTRIES();
|
||||
|
||||
/* prevent s2n from initializing/de-initializing OpenSSL/libcrypto */
|
||||
aws_crt_crypto_share();
|
||||
aws_crt_init();
|
||||
aws_php_thread_queue_init(&s_aws_php_main_thread_queue);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static PHP_MSHUTDOWN_FUNCTION(awscrt) {
|
||||
UNREGISTER_INI_ENTRIES();
|
||||
aws_php_thread_queue_clean_up(&s_aws_php_main_thread_queue);
|
||||
aws_crt_thread_join_all(0);
|
||||
aws_crt_clean_up();
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
static PHP_GINIT_FUNCTION(awscrt) {
|
||||
#if defined(COMPILE_DL_ASTKIT) && defined(ZTS)
|
||||
ZEND_TSRMLS_CACHE_UPDATE();
|
||||
#endif
|
||||
awscrt_globals->log_level = 0;
|
||||
}
|
||||
|
||||
zend_module_entry awscrt_module_entry = {
|
||||
STANDARD_MODULE_HEADER,
|
||||
"awscrt",
|
||||
ext_functions, /* functions */
|
||||
PHP_MINIT(awscrt),
|
||||
PHP_MSHUTDOWN(awscrt),
|
||||
NULL, /* RINIT */
|
||||
NULL, /* RSHUTDOWN */
|
||||
NULL, /* MINFO */
|
||||
NO_VERSION_YET,
|
||||
PHP_MODULE_GLOBALS(awscrt),
|
||||
PHP_GINIT(awscrt),
|
||||
NULL, /* GSHUTDOWN */
|
||||
NULL, /* RPOSTSHUTDOWN */
|
||||
STANDARD_MODULE_PROPERTIES_EX,
|
||||
};
|
||||
|
||||
#ifdef COMPILE_DL_AWSCRT
|
||||
ZEND_GET_MODULE(awscrt)
|
||||
#endif
|
||||
|
||||
/* aws_crt_last_error() */
|
||||
PHP_FUNCTION(aws_crt_last_error) {
|
||||
RETURN_LONG(aws_crt_last_error());
|
||||
}
|
||||
|
||||
/* aws_crt_error_str(int error_code) */
|
||||
PHP_FUNCTION(aws_crt_error_str) {
|
||||
zend_ulong error_code = 0;
|
||||
aws_php_parse_parameters("l", &error_code);
|
||||
|
||||
XRETURN_STRING(aws_crt_error_str(error_code));
|
||||
}
|
||||
|
||||
/* aws_crt_error_name(int error_code) */
|
||||
PHP_FUNCTION(aws_crt_error_name) {
|
||||
zend_ulong error_code = 0;
|
||||
aws_php_parse_parameters("l", &error_code);
|
||||
|
||||
XRETURN_STRING(aws_crt_error_name(error_code));
|
||||
}
|
||||
|
||||
/* aws_crt_error_debug_str(int error_code) */
|
||||
PHP_FUNCTION(aws_crt_error_debug_str) {
|
||||
zend_ulong error_code = 0;
|
||||
aws_php_parse_parameters("l", &error_code);
|
||||
|
||||
XRETURN_STRING(aws_crt_error_debug_str(error_code));
|
||||
}
|
48
vendor/aws/aws-crt-php/ext/event_loop.c
vendored
Normal file
48
vendor/aws/aws-crt-php/ext/event_loop.c
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
PHP_FUNCTION(aws_crt_event_loop_group_options_new) {
|
||||
aws_php_parse_parameters_none();
|
||||
aws_crt_event_loop_group_options *options = aws_crt_event_loop_group_options_new();
|
||||
RETURN_LONG((zend_ulong)options);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_event_loop_group_options_release) {
|
||||
zend_ulong php_options = 0;
|
||||
aws_php_parse_parameters("l", &php_options);
|
||||
|
||||
aws_crt_event_loop_group_options *options = (void *)php_options;
|
||||
aws_crt_event_loop_group_options_release(options);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_event_loop_group_options_set_max_threads) {
|
||||
zend_ulong php_options = 0;
|
||||
zend_ulong num_threads = 0;
|
||||
aws_php_parse_parameters("ll", &php_options, &num_threads);
|
||||
|
||||
aws_crt_event_loop_group_options *options = (void *)php_options;
|
||||
aws_crt_event_loop_group_options_set_max_threads(options, num_threads);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_event_loop_group_new) {
|
||||
zend_ulong php_options = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_options);
|
||||
|
||||
aws_crt_event_loop_group_options *options = (void *)php_options;
|
||||
aws_crt_event_loop_group *elg = aws_crt_event_loop_group_new(options);
|
||||
RETURN_LONG((zend_ulong)elg);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_event_loop_group_release) {
|
||||
zend_ulong php_elg = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_elg);
|
||||
|
||||
aws_crt_event_loop_group *elg = (void *)php_elg;
|
||||
aws_crt_event_loop_group_release(elg);
|
||||
}
|
36
vendor/aws/aws-crt-php/ext/http.c
vendored
Normal file
36
vendor/aws/aws-crt-php/ext/http.c
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
PHP_FUNCTION(aws_crt_http_message_new_from_blob) {
|
||||
const char *blob = NULL;
|
||||
size_t blob_len = 0;
|
||||
|
||||
aws_php_parse_parameters("s", &blob, &blob_len);
|
||||
|
||||
aws_crt_http_message *message = aws_crt_http_message_new_from_blob((uint8_t *)blob, blob_len);
|
||||
RETURN_LONG((zend_ulong)message);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_http_message_to_blob) {
|
||||
zend_ulong php_msg = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_msg);
|
||||
|
||||
aws_crt_http_message *message = (void *)php_msg;
|
||||
aws_crt_buf blob;
|
||||
aws_crt_http_message_to_blob(message, &blob);
|
||||
XRETURN_STRINGL((const char *)blob.blob, blob.length);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_http_message_release) {
|
||||
zend_ulong php_msg = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_msg);
|
||||
|
||||
aws_crt_http_message *message = (void *)php_msg;
|
||||
aws_crt_http_message_release(message);
|
||||
}
|
65
vendor/aws/aws-crt-php/ext/logging.c
vendored
Normal file
65
vendor/aws/aws-crt-php/ext/logging.c
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
PHP_FUNCTION(aws_crt_log_to_stdout) {
|
||||
aws_php_parse_parameters_none();
|
||||
aws_crt_log_to_stdout();
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_log_to_stderr) {
|
||||
aws_php_parse_parameters_none();
|
||||
aws_crt_log_to_stderr();
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_log_to_file) {
|
||||
const char *filename = NULL;
|
||||
size_t filename_len = 0;
|
||||
/* read the filename as a path, which guarantees no NUL bytes */
|
||||
aws_php_parse_parameters("p", &filename, &filename_len);
|
||||
aws_crt_log_to_file(filename);
|
||||
}
|
||||
|
||||
static void php_crt_log(const char *message, size_t len, void *user_data) {
|
||||
php_stream *stream = user_data;
|
||||
php_stream_write(stream, message, len);
|
||||
php_stream_flush(stream);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_log_to_stream) {
|
||||
zval *php_log_stream = NULL;
|
||||
aws_php_parse_parameters("r", &php_log_stream);
|
||||
|
||||
if (php_log_stream) {
|
||||
php_stream *stream = NULL;
|
||||
Z_ADDREF(*php_log_stream);
|
||||
AWS_PHP_STREAM_FROM_ZVAL(stream, php_log_stream);
|
||||
aws_crt_log_to_callback((aws_crt_log_callback *)php_crt_log, stream);
|
||||
} else {
|
||||
aws_crt_log_to_callback(NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_log_set_level) {
|
||||
zend_ulong log_level = 0;
|
||||
aws_php_parse_parameters("l", &log_level);
|
||||
aws_crt_log_set_level((aws_crt_log_level)log_level);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_log_stop) {
|
||||
aws_php_parse_parameters_none();
|
||||
aws_crt_log_stop();
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_log_message) {
|
||||
zend_ulong log_level = 0;
|
||||
const char *message = NULL;
|
||||
size_t message_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &log_level, &message, &message_len);
|
||||
|
||||
aws_crt_log_message((aws_crt_log_level)log_level, (const uint8_t *)message, message_len);
|
||||
}
|
171
vendor/aws/aws-crt-php/ext/php_aws_crt.h
vendored
Normal file
171
vendor/aws/aws-crt-php/ext/php_aws_crt.h
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
|
||||
#ifndef PHP_AWS_CRT_H
|
||||
#define PHP_AWS_CRT_H
|
||||
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include "php.h"
|
||||
|
||||
#include "Zend/zend_extensions.h" /* for ZEND_EXTENSION_API_NO */
|
||||
|
||||
#include <aws/common/common.h>
|
||||
#include <aws/common/mutex.h>
|
||||
#include <aws/common/promise.h>
|
||||
#include <aws/common/thread.h>
|
||||
|
||||
/* ZEND_EXTENSION_API_NO from each branch of the PHP source */
|
||||
#define AWS_PHP_EXTENSION_API_5_5 220121212
|
||||
#define AWS_PHP_EXTENSION_API_5_6 220131226
|
||||
#define AWS_PHP_EXTENSION_API_7_0 320151012
|
||||
#define AWS_PHP_EXTENSION_API_7_1 320160303
|
||||
#define AWS_PHP_EXTENSION_API_7_2 320170718
|
||||
#define AWS_PHP_EXTENSION_API_7_3 320180731
|
||||
#define AWS_PHP_EXTENSION_API_7_4 320190902
|
||||
#define AWS_PHP_EXTENSION_API_8_0 420200930
|
||||
|
||||
#if ZEND_EXTENSION_API_NO < AWS_PHP_EXTENSION_API_5_5
|
||||
# error "PHP >= 5.5 is required"
|
||||
#endif
|
||||
|
||||
#define AWS_PHP_AT_LEAST_7 (ZEND_EXTENSION_API_NO >= AWS_PHP_EXTENSION_API_7_0)
|
||||
#define AWS_PHP_AT_LEAST_7_2 (ZEND_EXTENSION_API_NO >= AWS_PHP_EXTENSION_API_7_2)
|
||||
|
||||
ZEND_BEGIN_MODULE_GLOBALS(awscrt)
|
||||
long log_level;
|
||||
ZEND_END_MODULE_GLOBALS(awscrt)
|
||||
|
||||
ZEND_EXTERN_MODULE_GLOBALS(awscrt)
|
||||
|
||||
#define AWSCRT_GLOBAL(v) ZEND_MODULE_GLOBALS_ACCESSOR(awscrt, v)
|
||||
|
||||
#if AWS_PHP_AT_LEAST_7
|
||||
/* PHP 7 takes a zval*, PHP5 takes a zval** */
|
||||
# define AWS_PHP_STREAM_FROM_ZVAL(s, z) php_stream_from_zval(s, z)
|
||||
#define XRETURN_STRINGL RETURN_STRINGL
|
||||
#define XRETURN_STRING RETURN_STRING
|
||||
#define XRETVAL_STRINGL RETVAL_STRINGL
|
||||
#define XRETVAL_STRING RETVAL_STRING
|
||||
#else /* PHP 5.5-5.6 */
|
||||
# define AWS_PHP_STREAM_FROM_ZVAL(s, z) php_stream_from_zval(s, &z)
|
||||
#define XRETURN_STRINGL(s, l) RETURN_STRINGL(s, l, 1)
|
||||
#define XRETURN_STRING(s) RETURN_STRING(s, 1)
|
||||
#define XRETVAL_STRINGL(s, l) RETVAL_STRINGL(s, l, 1)
|
||||
#define XRETVAL_STRING(s) RETVAL_STRING(s, 1)
|
||||
#endif /* PHP 5.x */
|
||||
|
||||
#include "api.h"
|
||||
#include "awscrt_arginfo.h"
|
||||
|
||||
/* Utility macros borrowed from common */
|
||||
#define GLUE(x, y) x y
|
||||
|
||||
#define RETURN_ARG_COUNT(_1_, _2_, _3_, _4_, _5_, count, ...) count
|
||||
#define EXPAND_ARGS(args) RETURN_ARG_COUNT args
|
||||
#define COUNT_ARGS_MAX5(...) EXPAND_ARGS((__VA_ARGS__, 5, 4, 3, 2, 1, 0))
|
||||
|
||||
#define OVERLOAD_MACRO2(name, count) name##count
|
||||
#define OVERLOAD_MACRO1(name, count) OVERLOAD_MACRO2(name, count)
|
||||
#define OVERLOAD_MACRO(name, count) OVERLOAD_MACRO1(name, count)
|
||||
|
||||
#define CALL_OVERLOAD(name, ...) GLUE(OVERLOAD_MACRO(name, COUNT_ARGS_MAX5(__VA_ARGS__)), (__VA_ARGS__))
|
||||
|
||||
#define VARIABLE_LENGTH_ARRAY(type, name, length) type *name = alloca(sizeof(type) * (length))
|
||||
|
||||
/*
|
||||
* PHP utility APIs for this extension
|
||||
*/
|
||||
/*
|
||||
* Exception throwing mechanism, will never return
|
||||
*/
|
||||
#define aws_php_throw_exception(...) CALL_OVERLOAD(_AWS_PHP_THROW_EXCEPTION, __VA_ARGS__);
|
||||
#define _AWS_PHP_THROW_EXCEPTION5(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
|
||||
#define _AWS_PHP_THROW_EXCEPTION4(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
|
||||
#define _AWS_PHP_THROW_EXCEPTION3(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
|
||||
#define _AWS_PHP_THROW_EXCEPTION2(format, ...) zend_error_noreturn(E_ERROR, format, __VA_ARGS__)
|
||||
#define _AWS_PHP_THROW_EXCEPTION1(format) zend_error_noreturn(E_ERROR, format)
|
||||
|
||||
/**
|
||||
* throws an exception resulting from argument parsing, notes the current function name in the exception
|
||||
*/
|
||||
#define aws_php_argparse_fail() \
|
||||
do { \
|
||||
aws_php_throw_exception("Failed to parse arguments to %s", __func__); \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* calls zend_parse_parameters() with the arguments and throws an exception if parsing fails
|
||||
*/
|
||||
#define aws_php_parse_parameters(type_spec, ...) \
|
||||
do { \
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), type_spec, __VA_ARGS__) == FAILURE) { \
|
||||
aws_php_argparse_fail(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* calls zend_parse_parameters_none() and throws an exception if parsing fails
|
||||
*/
|
||||
#define aws_php_parse_parameters_none() \
|
||||
do { \
|
||||
if (zend_parse_parameters_none() == FAILURE) { \
|
||||
aws_php_argparse_fail(); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* PHP/Zend utility functions to work across PHP versions */
|
||||
zval *aws_php_zval_new(void);
|
||||
void aws_php_zval_dtor(void *zval_ptr);
|
||||
bool aws_php_zval_as_bool(zval *z);
|
||||
void aws_php_zval_copy(zval *dest, zval *src);
|
||||
/**
|
||||
* Replacement for ZVAL_STRINGL that is PHP version agnostic
|
||||
*/
|
||||
void aws_php_zval_stringl(zval *val, const char *str, size_t len);
|
||||
|
||||
/* Thread queue functions for managing PHP's optional threading situation */
|
||||
typedef struct _aws_php_task {
|
||||
void (*callback)(void *); /* task function */
|
||||
void (*dtor)(void *); /* deletes task_data, if non-null */
|
||||
void *data;
|
||||
} aws_php_task;
|
||||
|
||||
/* maximum number of queued callbacks to execute at once. Since this is to support single-threaded usage,
|
||||
* this can be a fairly small number, as how many callbacks could we reasonably be stacking up?! */
|
||||
#define AWS_PHP_THREAD_QUEUE_MAX_DEPTH 32
|
||||
|
||||
typedef struct _aws_php_thread_queue {
|
||||
struct aws_mutex mutex;
|
||||
aws_php_task queue[AWS_PHP_THREAD_QUEUE_MAX_DEPTH];
|
||||
size_t write_slot;
|
||||
aws_thread_id_t thread_id;
|
||||
} aws_php_thread_queue;
|
||||
|
||||
extern aws_php_thread_queue s_aws_php_main_thread_queue;
|
||||
bool aws_php_is_main_thread(void);
|
||||
|
||||
void aws_php_thread_queue_init(aws_php_thread_queue *queue);
|
||||
void aws_php_thread_queue_clean_up(aws_php_thread_queue *queue);
|
||||
void aws_php_thread_queue_push(aws_php_thread_queue *queue, aws_php_task task);
|
||||
bool aws_php_thread_queue_drain(aws_php_thread_queue *queue);
|
||||
|
||||
/* called from worker thread to wait for the main thread to execute any queued work in PHP */
|
||||
void aws_php_thread_queue_yield(aws_php_thread_queue *queue);
|
||||
|
||||
/* called from PHP thread to wait on async queued jobs, one of which MUST complete the promise */
|
||||
void aws_php_thread_queue_wait(aws_php_thread_queue *queue, struct aws_promise *promise);
|
||||
|
||||
/**
|
||||
* generic dispatch mechanism to call a callback provided as a zval with arguments
|
||||
* that are converted to zvals based on the arg_types format string
|
||||
* Uses the same format string as zend_parse_parameters
|
||||
*/
|
||||
zval aws_php_invoke_callback(zval *callback, const char *arg_types, ...);
|
||||
|
||||
#endif /* PHP_AWS_CRT_H */
|
33
vendor/aws/aws-crt-php/ext/php_util.c
vendored
Normal file
33
vendor/aws/aws-crt-php/ext/php_util.c
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
zval *aws_php_zval_new(void) {
|
||||
return emalloc(sizeof(zval));
|
||||
}
|
||||
|
||||
void aws_php_zval_dtor(void *zval_ptr) {
|
||||
zval *z = zval_ptr;
|
||||
zval_dtor(z);
|
||||
efree(z);
|
||||
}
|
||||
|
||||
bool aws_php_zval_as_bool(zval *z) {
|
||||
#if AWS_PHP_AT_LEAST_7
|
||||
return (Z_TYPE_P(z) == IS_TRUE);
|
||||
#else
|
||||
return (Z_TYPE_P(z) == IS_BOOL && Z_LVAL_P(z) != 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
void aws_php_zval_copy(zval *dest, zval *src) {
|
||||
#if AWS_PHP_AT_LEAST_7
|
||||
ZVAL_COPY(dest, src);
|
||||
#else
|
||||
ZVAL_COPY_VALUE(dest, src);
|
||||
#endif
|
||||
}
|
374
vendor/aws/aws-crt-php/ext/signing.c
vendored
Normal file
374
vendor/aws/aws-crt-php/ext/signing.c
vendored
Normal file
@@ -0,0 +1,374 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_new) {
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
RETURN_NULL();
|
||||
}
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = aws_crt_signing_config_aws_new();
|
||||
RETURN_LONG((zend_ulong)signing_config);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_release) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_signing_config);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_release(signing_config);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_algorithm) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_ulong php_algorithm = 0;
|
||||
|
||||
aws_php_parse_parameters("ll", &php_signing_config, &php_algorithm);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_algorithm algorithm = php_algorithm;
|
||||
aws_crt_signing_config_aws_set_algorithm(signing_config, algorithm);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_signature_type) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_ulong php_signature_type = 0;
|
||||
|
||||
aws_php_parse_parameters("ll", &php_signing_config, &php_signature_type);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signature_type signature_type = php_signature_type;
|
||||
aws_crt_signing_config_aws_set_signature_type(signing_config, signature_type);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_credentials_provider) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_ulong php_credentials_provider = 0;
|
||||
|
||||
aws_php_parse_parameters("ll", &php_signing_config, &php_credentials_provider);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_credentials_provider *credentials_provider = (void *)php_credentials_provider;
|
||||
aws_crt_signing_config_aws_set_credentials_provider(signing_config, credentials_provider);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_region) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
const char *region = NULL;
|
||||
size_t region_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &php_signing_config, ®ion, ®ion_len);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_set_region(signing_config, (uint8_t *)region, region_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_service) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
const char *service = NULL;
|
||||
size_t service_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &php_signing_config, &service, &service_len);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_set_service(signing_config, (uint8_t *)service, service_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_use_double_uri_encode) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_bool php_use_double_uri_encode = 0;
|
||||
|
||||
aws_php_parse_parameters("lb", &php_signing_config, &php_use_double_uri_encode);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_set_use_double_uri_encode(signing_config, php_use_double_uri_encode);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_should_normalize_uri_path) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_bool php_should_normalize_uri_path = 0;
|
||||
|
||||
aws_php_parse_parameters("lb", &php_signing_config, &php_should_normalize_uri_path);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_set_should_normalize_uri_path(signing_config, php_should_normalize_uri_path);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_omit_session_token) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_bool php_omit_session_token = 0;
|
||||
|
||||
aws_php_parse_parameters("lb", &php_signing_config, &php_omit_session_token);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_set_omit_session_token(signing_config, php_omit_session_token);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_signed_body_value) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
const char *signed_body_value = NULL;
|
||||
size_t signed_body_value_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &php_signing_config, &signed_body_value, &signed_body_value_len);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_set_signed_body_value(
|
||||
signing_config, (uint8_t *)signed_body_value, signed_body_value_len);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_signed_body_header_type) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_ulong php_signed_body_header_type = 0;
|
||||
|
||||
aws_php_parse_parameters("ll", &php_signing_config, &php_signed_body_header_type);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signed_body_header_type signed_body_header_type = php_signed_body_header_type;
|
||||
aws_crt_signing_config_aws_set_signed_body_header_type(signing_config, signed_body_header_type);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_expiration_in_seconds) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_ulong php_expiration_in_seconds = 0;
|
||||
|
||||
aws_php_parse_parameters("ll", &php_signing_config, &php_expiration_in_seconds);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_set_expiration_in_seconds(signing_config, php_expiration_in_seconds);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_date) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zend_ulong php_timestamp = 0;
|
||||
|
||||
aws_php_parse_parameters("ll", &php_signing_config, &php_timestamp);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
aws_crt_signing_config_aws_set_date(signing_config, php_timestamp);
|
||||
}
|
||||
|
||||
typedef struct _should_sign_header_data {
|
||||
zval *should_sign_header;
|
||||
zval *header_name;
|
||||
bool result;
|
||||
} should_sign_header_data;
|
||||
|
||||
static void should_sign_header_task(void *data) {
|
||||
should_sign_header_data *task = data;
|
||||
zval result = aws_php_invoke_callback(task->should_sign_header, "z", task->header_name);
|
||||
task->result = aws_php_zval_as_bool(&result);
|
||||
zval_dtor(&result);
|
||||
}
|
||||
|
||||
static bool aws_php_should_sign_header(const char *header_name, size_t header_length, void *user_data) {
|
||||
zval php_header_name;
|
||||
aws_php_zval_stringl(&php_header_name, header_name, header_length);
|
||||
|
||||
should_sign_header_data task_data = {
|
||||
.should_sign_header = user_data,
|
||||
.header_name = &php_header_name,
|
||||
.result = false,
|
||||
};
|
||||
|
||||
aws_php_task task = {
|
||||
.callback = should_sign_header_task,
|
||||
.data = &task_data,
|
||||
};
|
||||
|
||||
aws_php_thread_queue_push(&s_aws_php_main_thread_queue, task);
|
||||
aws_php_thread_queue_yield(&s_aws_php_main_thread_queue);
|
||||
|
||||
zval_dtor(&php_header_name);
|
||||
|
||||
return task_data.result;
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_config_aws_set_should_sign_header_fn) {
|
||||
zend_ulong php_signing_config = 0;
|
||||
zval *php_should_sign_header = NULL;
|
||||
|
||||
aws_php_parse_parameters("lz", &php_signing_config, &php_should_sign_header);
|
||||
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
|
||||
/* copy/retain PHP callback, add as user data for signing_config resource */
|
||||
zval *should_sign_header = aws_php_zval_new();
|
||||
aws_php_zval_copy(should_sign_header, php_should_sign_header);
|
||||
aws_crt_resource_set_user_data(signing_config, should_sign_header, aws_php_zval_dtor);
|
||||
|
||||
aws_crt_signing_config_aws_set_should_sign_header_fn(
|
||||
signing_config, aws_php_should_sign_header, should_sign_header);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signable_new_from_http_request) {
|
||||
zend_ulong php_http_message = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_http_message);
|
||||
|
||||
const aws_crt_http_message *http_message = (void *)php_http_message;
|
||||
aws_crt_signable *signable = aws_crt_signable_new_from_http_request(http_message);
|
||||
RETURN_LONG((zend_ulong)signable);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signable_new_from_chunk) {
|
||||
zend_ulong php_input_stream = 0;
|
||||
const char *previous_signature = NULL;
|
||||
size_t previous_signature_len = 0;
|
||||
|
||||
aws_php_parse_parameters("ls", &php_input_stream, &previous_signature, &previous_signature_len);
|
||||
|
||||
aws_crt_input_stream *input_stream = (void *)php_input_stream;
|
||||
aws_crt_signable *signable =
|
||||
aws_crt_signable_new_from_chunk(input_stream, (uint8_t *)previous_signature, previous_signature_len);
|
||||
RETURN_LONG((zend_ulong)signable);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signable_new_from_canonical_request) {
|
||||
const char *canonical_request = NULL;
|
||||
size_t canonical_request_len = 0;
|
||||
|
||||
aws_crt_signable *signable =
|
||||
aws_crt_signable_new_from_canonical_request((uint8_t *)canonical_request, canonical_request_len);
|
||||
RETURN_LONG((zend_ulong)signable);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signable_release) {
|
||||
zend_ulong php_signable = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_signable);
|
||||
|
||||
aws_crt_signable *signable = (void *)php_signable;
|
||||
aws_crt_signable_release(signable);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_result_release) {
|
||||
zend_ulong php_signing_result = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_signing_result);
|
||||
aws_crt_signing_result *result = (void *)php_signing_result;
|
||||
aws_crt_signing_result_release(result);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_signing_result_apply_to_http_request) {
|
||||
zend_ulong php_signing_result = 0;
|
||||
zend_ulong php_http_request = 0;
|
||||
|
||||
aws_php_parse_parameters("ll", &php_signing_result, &php_http_request);
|
||||
aws_crt_signing_result *result = (void *)php_signing_result;
|
||||
aws_crt_http_message *request = (void *)php_http_request;
|
||||
|
||||
if (aws_crt_signing_result_apply_to_http_request(result, request)) {
|
||||
aws_php_throw_exception(
|
||||
"Failed to apply signing result to HTTP request: %s", aws_crt_error_name(aws_crt_last_error()));
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct _signing_state {
|
||||
struct aws_promise *promise;
|
||||
zval *on_complete;
|
||||
aws_crt_signing_result *signing_result;
|
||||
int error_code;
|
||||
} signing_state;
|
||||
|
||||
/* called on main thread to deliver result to php */
|
||||
static void s_sign_aws_complete(void *data) {
|
||||
signing_state *state = data;
|
||||
zval *on_complete = state->on_complete;
|
||||
aws_php_invoke_callback(on_complete, "ll", (zend_ulong)state->signing_result, (zend_ulong)state->error_code);
|
||||
}
|
||||
|
||||
/* called from signing process in aws_sign_request_aws */
|
||||
static void s_on_sign_request_aws_complete(aws_crt_signing_result *result, int error_code, void *user_data) {
|
||||
signing_state *state = user_data;
|
||||
struct aws_promise *promise = state->promise;
|
||||
|
||||
state->signing_result = result;
|
||||
state->error_code = error_code;
|
||||
|
||||
/*
|
||||
* Must execute PHP callback before this function returns, or signing_result will be killed
|
||||
* so the callback is queued back to the main thread and will have run when yield returns
|
||||
*/
|
||||
aws_php_task complete_callback_task = {
|
||||
.callback = s_sign_aws_complete,
|
||||
.data = state,
|
||||
};
|
||||
aws_php_thread_queue_push(&s_aws_php_main_thread_queue, complete_callback_task);
|
||||
aws_php_thread_queue_yield(&s_aws_php_main_thread_queue);
|
||||
|
||||
if (error_code) {
|
||||
aws_promise_fail(promise, error_code);
|
||||
} else {
|
||||
aws_promise_complete(promise, result, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_sign_request_aws) {
|
||||
zend_ulong php_signable = 0;
|
||||
zend_ulong php_signing_config = 0;
|
||||
zval *php_on_complete = 0;
|
||||
zend_ulong php_user_data = 0;
|
||||
|
||||
aws_php_parse_parameters("llzl", &php_signable, &php_signing_config, &php_on_complete, &php_user_data);
|
||||
|
||||
aws_crt_signable *signable = (void *)php_signable;
|
||||
aws_crt_signing_config_aws *signing_config = (void *)php_signing_config;
|
||||
|
||||
struct aws_promise *promise = aws_promise_new(aws_crt_default_allocator());
|
||||
signing_state state = {
|
||||
.promise = promise,
|
||||
.on_complete = php_on_complete,
|
||||
};
|
||||
int ret = aws_crt_sign_request_aws(signable, signing_config, s_on_sign_request_aws_complete, &state);
|
||||
if (ret != 0) {
|
||||
int last_error = aws_crt_last_error();
|
||||
aws_promise_fail(promise, last_error);
|
||||
aws_php_throw_exception(
|
||||
"aws_crt_sign_request_aws: error starting signing process: %s", aws_crt_error_name(last_error));
|
||||
}
|
||||
|
||||
aws_php_thread_queue_wait(&s_aws_php_main_thread_queue, promise);
|
||||
|
||||
done:
|
||||
aws_promise_release(promise);
|
||||
RETURN_LONG(ret);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_test_verify_sigv4a_signing) {
|
||||
zend_ulong php_signable = 0;
|
||||
zend_ulong php_signing_config = 0;
|
||||
const char *expected_canonical_request = NULL;
|
||||
size_t expected_canonical_request_len = 0;
|
||||
const char *signature = NULL;
|
||||
size_t signature_len = 0;
|
||||
const char *ecc_key_pub_x = NULL;
|
||||
size_t ecc_key_pub_x_len = 0;
|
||||
const char *ecc_key_pub_y = NULL;
|
||||
size_t ecc_key_pub_y_len = 0;
|
||||
|
||||
aws_php_parse_parameters(
|
||||
"llssss",
|
||||
&php_signable,
|
||||
&php_signing_config,
|
||||
&expected_canonical_request,
|
||||
&expected_canonical_request_len,
|
||||
&signature,
|
||||
&signature_len,
|
||||
&ecc_key_pub_x,
|
||||
&ecc_key_pub_x_len,
|
||||
&ecc_key_pub_y,
|
||||
&ecc_key_pub_y_len);
|
||||
|
||||
const aws_crt_signable *signable = (void *)php_signable;
|
||||
const aws_crt_signing_config *signing_config = (void *)php_signing_config;
|
||||
|
||||
bool result = AWS_OP_SUCCESS ==
|
||||
aws_crt_test_verify_sigv4a_signing(
|
||||
signable, signing_config, expected_canonical_request, signature, ecc_key_pub_x, ecc_key_pub_y);
|
||||
|
||||
RETURN_BOOL(result);
|
||||
}
|
148
vendor/aws/aws-crt-php/ext/stream.c
vendored
Normal file
148
vendor/aws/aws-crt-php/ext/stream.c
vendored
Normal file
@@ -0,0 +1,148 @@
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
#include "php_aws_crt.h"
|
||||
|
||||
/* PHP streams info:
|
||||
* https://git.php.net/?p=php-src.git;a=blob;f=docs/streams.md;h=0ec3846d68bf70067297d8a6c691d2591c49b48a;hb=HEAD
|
||||
* https://github.com/php/php-src/blob/PHP-5.6.0/main/php_streams.h
|
||||
*/
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_options_new) {
|
||||
if (zend_parse_parameters_none() == FAILURE) {
|
||||
aws_php_argparse_fail();
|
||||
}
|
||||
|
||||
aws_crt_input_stream_options *options = aws_crt_input_stream_options_new();
|
||||
RETURN_LONG((zend_ulong)options);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_options_release) {
|
||||
zend_ulong php_options = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_options);
|
||||
|
||||
aws_crt_input_stream_options *options = (void *)php_options;
|
||||
aws_crt_input_stream_options_release(options);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_options_set_user_data) {
|
||||
zend_ulong php_options = 0;
|
||||
zval *user_data = NULL;
|
||||
|
||||
aws_php_parse_parameters("lz", &php_options, &user_data);
|
||||
|
||||
aws_crt_input_stream_options *options = (void *)php_options;
|
||||
php_stream *stream = NULL;
|
||||
AWS_PHP_STREAM_FROM_ZVAL(stream, user_data);
|
||||
aws_crt_input_stream_options_set_user_data(options, stream);
|
||||
}
|
||||
|
||||
static int s_php_stream_seek(void *user_data, int64_t offset, aws_crt_input_stream_seek_basis basis) {
|
||||
php_stream *stream = user_data;
|
||||
return php_stream_seek(stream, offset, basis);
|
||||
}
|
||||
|
||||
static int s_php_stream_read(void *user_data, uint8_t *dest, size_t dest_length) {
|
||||
php_stream *stream = user_data;
|
||||
return php_stream_read(stream, (char *)dest, dest_length) != 0;
|
||||
}
|
||||
|
||||
static int s_php_stream_get_length(void *user_data, int64_t *out_length) {
|
||||
php_stream *stream = user_data;
|
||||
size_t pos = php_stream_tell(stream);
|
||||
php_stream_seek(stream, 0, SEEK_END);
|
||||
*out_length = php_stream_tell(stream);
|
||||
php_stream_seek(stream, pos, SEEK_SET);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int s_php_stream_get_status(void *user_data, aws_crt_input_stream_status *out_status) {
|
||||
php_stream *stream = user_data;
|
||||
out_status->is_valid = stream != NULL;
|
||||
/* We would like to use php_stream_eof here, but certain streams (notably php://memory)
|
||||
* are not actually capable of EOF, so we get to do it the hard way */
|
||||
int64_t length = 0;
|
||||
int64_t pos = 0;
|
||||
s_php_stream_get_length(stream, &length);
|
||||
pos = php_stream_tell(stream);
|
||||
out_status->is_end_of_stream = pos == length;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void s_php_stream_destroy(void *user_data) {
|
||||
(void)user_data;
|
||||
/* no op, stream will be freed by PHP refcount dropping from InputStream::stream */
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_new) {
|
||||
zend_ulong php_options = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_options);
|
||||
|
||||
aws_crt_input_stream_options *options = (void *)php_options;
|
||||
aws_crt_input_stream_options_set_seek(options, s_php_stream_seek);
|
||||
aws_crt_input_stream_options_set_read(options, s_php_stream_read);
|
||||
aws_crt_input_stream_options_set_get_status(options, s_php_stream_get_status);
|
||||
aws_crt_input_stream_options_set_get_length(options, s_php_stream_get_length);
|
||||
aws_crt_input_stream_options_set_destroy(options, s_php_stream_destroy);
|
||||
aws_crt_input_stream *stream = aws_crt_input_stream_new(options);
|
||||
RETURN_LONG((zend_ulong)stream);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_release) {
|
||||
zend_ulong php_stream = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_stream);
|
||||
|
||||
aws_crt_input_stream *stream = (void *)php_stream;
|
||||
aws_crt_input_stream_release(stream);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_seek) {
|
||||
zend_ulong php_stream = 0;
|
||||
zend_ulong offset = 0;
|
||||
zend_ulong basis = 0;
|
||||
|
||||
aws_php_parse_parameters("lll", &php_stream, &offset, &basis);
|
||||
|
||||
aws_crt_input_stream *stream = (void *)php_stream;
|
||||
RETURN_LONG(aws_crt_input_stream_seek(stream, offset, basis));
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_read) {
|
||||
zend_ulong php_stream = 0;
|
||||
zend_ulong length = 0;
|
||||
|
||||
aws_php_parse_parameters("ll", &php_stream, &length);
|
||||
|
||||
aws_crt_input_stream *stream = (void *)php_stream;
|
||||
uint8_t *buf = emalloc(length);
|
||||
int ret = aws_crt_input_stream_read(stream, buf, length);
|
||||
XRETVAL_STRINGL((const char *)buf, length);
|
||||
efree(buf);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_eof) {
|
||||
zend_ulong php_stream = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_stream);
|
||||
|
||||
aws_crt_input_stream *stream = (void *)php_stream;
|
||||
aws_crt_input_stream_status status = {0};
|
||||
aws_crt_input_stream_get_status(stream, &status);
|
||||
RETURN_BOOL(status.is_end_of_stream);
|
||||
}
|
||||
|
||||
PHP_FUNCTION(aws_crt_input_stream_get_length) {
|
||||
zend_ulong php_stream = 0;
|
||||
|
||||
aws_php_parse_parameters("l", &php_stream);
|
||||
|
||||
aws_crt_input_stream *stream = (void *)php_stream;
|
||||
int64_t length = 0;
|
||||
aws_crt_input_stream_get_length(stream, &length);
|
||||
RETURN_LONG(length);
|
||||
}
|
24
vendor/aws/aws-crt-php/format-check.sh
vendored
Executable file
24
vendor/aws/aws-crt-php/format-check.sh
vendored
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -z $CLANG_FORMAT ]] ; then
|
||||
CLANG_FORMAT=clang-format
|
||||
fi
|
||||
|
||||
if NOT type $CLANG_FORMAT 2> /dev/null ; then
|
||||
echo "No appropriate clang-format found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FAIL=0
|
||||
SOURCE_FILES=`find src ext -type f \( -name '*.c' \)`
|
||||
for i in $SOURCE_FILES
|
||||
do
|
||||
$CLANG_FORMAT -output-replacements-xml $i | grep -c "<replacement " > /dev/null
|
||||
if [ $? -ne 1 ]
|
||||
then
|
||||
echo "$i failed clang-format check."
|
||||
FAIL=1
|
||||
fi
|
||||
done
|
||||
|
||||
exit $FAIL
|
24
vendor/aws/aws-crt-php/gen_api.php
vendored
Normal file
24
vendor/aws/aws-crt-php/gen_api.php
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
$source = "php://stdin";
|
||||
if (isset($argv[1])) {
|
||||
$source = $argv[1];
|
||||
}
|
||||
|
||||
$input_lines = file($source);
|
||||
foreach ($input_lines as $line) {
|
||||
// Strip AWS_EXTERN_C_BEGIN/END
|
||||
if (preg_match('/AWS_EXTERN_C/', $line)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Strip macros/includes
|
||||
if (preg_match('/^#/', $line)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Strip visibility attributes
|
||||
$line = str_replace('AWS_CRT_API ', '', $line);
|
||||
|
||||
echo($line);
|
||||
}
|
1998
vendor/aws/aws-crt-php/gen_stub.php
vendored
Executable file
1998
vendor/aws/aws-crt-php/gen_stub.php
vendored
Executable file
File diff suppressed because it is too large
Load Diff
19
vendor/aws/aws-crt-php/package.xml-template_post
vendored
Normal file
19
vendor/aws/aws-crt-php/package.xml-template_post
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
</contents>
|
||||
<dependencies>
|
||||
<required>
|
||||
<php>
|
||||
<min>7.4.0</min>
|
||||
</php>
|
||||
<pearinstaller>
|
||||
<min>1.10.0</min>
|
||||
</pearinstaller>
|
||||
</required>
|
||||
</dependencies>
|
||||
<providesextension>awscrt</providesextension>
|
||||
<extsrcrelease/>
|
||||
<changelog>
|
||||
<release>
|
||||
|
||||
</release>
|
||||
</changelog>
|
||||
</package>
|
24
vendor/aws/aws-crt-php/package.xml-template_pre
vendored
Normal file
24
vendor/aws/aws-crt-php/package.xml-template_pre
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<package packagerversion="1.8.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
|
||||
<name>awscrt</name>
|
||||
<channel>pecl.php.net</channel>
|
||||
<summary>AWS Common Runtime PHP bindings</summary>
|
||||
<description>AWS Common Runtime provides a set of low level tools as network protocols and authentication used by the AWSSDK for PHP to provide high level API to access AWS services.</description>
|
||||
<lead>
|
||||
<name>{{{NAME}}}</name>
|
||||
<user>{{{USER}}}</user>
|
||||
<email>{{{EMAIL}}}</email>
|
||||
<active>yes</active>
|
||||
</lead>
|
||||
<date>{{{TODAY}}}</date>
|
||||
<version>
|
||||
<release>{{{VERSION}}}</release>
|
||||
<api>1.0.0</api>
|
||||
</version>
|
||||
<stability>
|
||||
<release>devel</release>
|
||||
<api>stable</api>
|
||||
</stability>
|
||||
<license uri="https://www.apache.org/licenses/LICENSE-2.0">Apache License Version 2.0</license>
|
||||
<notes>{{{NOTES}}}</notes>
|
||||
<contents>
|
2
vendor/aws/aws-crt-php/php-win.ini
vendored
Normal file
2
vendor/aws/aws-crt-php/php-win.ini
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
extension=php_awscrt.dll
|
||||
extension=php_openssl.dll
|
1
vendor/aws/aws-crt-php/php.ini
vendored
Normal file
1
vendor/aws/aws-crt-php/php.ini
vendored
Normal file
@@ -0,0 +1 @@
|
||||
extension=modules/awscrt.so
|
144
vendor/aws/aws-crt-php/prepare_package_xml.sh
vendored
Executable file
144
vendor/aws/aws-crt-php/prepare_package_xml.sh
vendored
Executable file
@@ -0,0 +1,144 @@
|
||||
#!/bin/zsh
|
||||
zparseopts -A opts -name: -user: -email: -version: -notes:
|
||||
if [[ $# -lt 10 ]]
|
||||
then
|
||||
echo "Usage ${0} --name NAME, --user USER --email EMAIL --version VERSION --notes NOTES"
|
||||
exit 1
|
||||
fi
|
||||
NAME="${opts[--name]}"
|
||||
USER="${opts[--user]}"
|
||||
EMAIL="${opts[--email]}"
|
||||
VERSION="${opts[--version]}"
|
||||
NOTES="${opts[--notes]}"
|
||||
|
||||
TODAY=$(date -u +%Y-%m-%d)
|
||||
|
||||
cat package.xml-template_pre \
|
||||
| sed "s/{{{NAME}}}/$NAME/g" \
|
||||
| sed "s/{{{USER}}}/$USER/g" \
|
||||
| sed "s/{{{EMAIL}}}/$EMAIL/g" \
|
||||
| sed "s/{{{TODAY}}}/$TODAY/g" \
|
||||
| sed "s/{{{VERSION}}}/$VERSION/g" \
|
||||
| sed "s/{{{NOTES}}}/$NOTES/g"
|
||||
|
||||
source_ext='(c|cc|h|cpp|hpp|m4|w32|ini|frag|cmake|inl|in|py|gnu|yaml|def|pl|S|s|errordata|go|lds|num|asm|mod|peg|mk|rs|toml|sh)'
|
||||
doc_ext='(md|json|html|dot|graphml|png|gn|sha1|css|rst|)'
|
||||
|
||||
special_docs='(LICENSE*|NOTICE|changelog.txt|CHANGELOG|THIRD-PARTY|README*|readme|METADATA|CONTRIBUTORS|UPDATING|doc.config)'
|
||||
special_tests='(ci-test.sh|format-check.sh|run_tests*|sanitizer-blacklist.txt|run-clang-tidy.sh|benchmark-build-run.sh|break-tests.sh|generate-coverage.sh|test.xml)'
|
||||
special_src='(gen_api.php|gen_stub.php|CMakeLists.txt|post.sh|postun.sh|Makefile*|build-buildspec.sh|build-deps.sh|objects.txt|go.*|BUILD*|DEPS|install_and_run.sh|codemod.sh|requirements.txt)'
|
||||
skip_files='(package.xml*|prepare_release.sh|codereview.settings|*.o|*.a|*.obj|*.lib|break-tests-android.sh|whitespace.txt|prepare_package_xml.sh|crypto_test_data.cc|*.pdf|*.svg|*.docx|cbmc-proof.txt|codecov*|litani*|*.toml)'
|
||||
|
||||
special_scripts='(awscrt.stub.php)'
|
||||
|
||||
skip_directories='(tests|test|AWSCRTAndroidTestRunner|docker-images|codebuild|fuzz|verfication|third_party|docs|generated-src|aws-lc|aws-crt-sys)'
|
||||
|
||||
process_file() {
|
||||
if (( $# == 0 ))
|
||||
then
|
||||
echo "ERROR: filename not passed"
|
||||
exit 1
|
||||
fi
|
||||
if [[ $1 = $~skip_files ]]
|
||||
then
|
||||
# This file is not part of the release bundle
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo -n '<file name="'"$1"'" role="'
|
||||
# Special cases
|
||||
case ${a} in
|
||||
$~special_scripts)
|
||||
echo -n 'script'
|
||||
;;
|
||||
$~special_docs)
|
||||
echo -n 'doc'
|
||||
;;
|
||||
$~special_tests)
|
||||
echo -n 'test'
|
||||
;;
|
||||
$~special_src)
|
||||
echo -n 'src'
|
||||
;;
|
||||
*)
|
||||
# Extension based cases
|
||||
case ${a:t:e} in
|
||||
$~source_ext)
|
||||
echo -n 'src'
|
||||
;;
|
||||
$~doc_ext)
|
||||
echo -n 'doc'
|
||||
;;
|
||||
php)
|
||||
echo -n 'script'
|
||||
;;
|
||||
*)
|
||||
echo "${a:t:e} - ${a} - FAIL TO RECOGNIZE"
|
||||
exit 1
|
||||
esac
|
||||
esac
|
||||
echo '"/>'
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
process_dir() {
|
||||
if (( $# == 0 ))
|
||||
then
|
||||
echo "WARNING: dirname not passed"
|
||||
exit 1
|
||||
fi
|
||||
if [[ "${1}" = $~skip_directories ]]
|
||||
then
|
||||
return 0
|
||||
fi
|
||||
echo '<dir name="'"$1"'">'
|
||||
cd "$1"
|
||||
for a in *
|
||||
do
|
||||
if [[ -f ${a} ]]
|
||||
then process_file "${a}"
|
||||
else process_dir "${a}"
|
||||
fi
|
||||
done
|
||||
# Special cases for compiler features placed in tests directories in and s2n
|
||||
if [[ "${1}" = "s2n" && -d tests ]]
|
||||
then
|
||||
echo '<dir name="tests">'
|
||||
echo '<dir name="features">'
|
||||
cd tests/features
|
||||
for a in *
|
||||
do
|
||||
process_file "${a}"
|
||||
done
|
||||
cd ../..
|
||||
echo '</dir>'
|
||||
echo '</dir>'
|
||||
fi
|
||||
echo '</dir>'
|
||||
cd ..
|
||||
return 0
|
||||
}
|
||||
|
||||
echo '<dir name="/">'
|
||||
for a in *
|
||||
do
|
||||
if [[ ${a} == 'tests' ]]
|
||||
then
|
||||
echo '<dir name="tests">'
|
||||
for b in tests/*
|
||||
do
|
||||
echo '<file name="'$( basename "${b}" )'" role="test" />'
|
||||
done
|
||||
echo '</dir>'
|
||||
continue
|
||||
fi
|
||||
if [[ -f ${a} ]]
|
||||
then process_file "${a}"
|
||||
else process_dir "${a}"
|
||||
fi
|
||||
done
|
||||
echo '</dir>'
|
||||
|
||||
cat package.xml-template_post
|
||||
|
31
vendor/aws/aws-crt-php/prepare_release.sh
vendored
Executable file
31
vendor/aws/aws-crt-php/prepare_release.sh
vendored
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/bin/zsh
|
||||
zparseopts -A opts -name: -user: -email: -version: -notes:
|
||||
if [[ $# -lt 10 ]]; then
|
||||
echo "Usage ${0} --name NAME --user USER --email EMAIL --version VERSION --notes NOTES"
|
||||
exit 1
|
||||
fi
|
||||
PACKAGE='awscrt'
|
||||
NAME="${opts[--name]}"
|
||||
USER="${opts[--user]}"
|
||||
EMAIL="${opts[--email]}"
|
||||
VERSION="${opts[--version]}"
|
||||
NOTES="${opts[--notes]}"
|
||||
|
||||
./prepare_package_xml.sh --name "${NAME}" --user "${USER}" --email "${EMAIL}" --version "${VERSION}" --notes "${NOTES}" >package.xml
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "ERROR PROCESSING review package.xml"
|
||||
exit 1
|
||||
fi
|
||||
tidy -xml -m -i package.xml
|
||||
pear package-validate
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "ERROR VALIDATING review package.xml"
|
||||
exit 1
|
||||
fi
|
||||
pear package
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "ERROR PROCESSING review package.xml"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Size of ${PACKAGE}-${VERSION}.tgz: " $(du -h "${PACKAGE}-${VERSION}.tgz")
|
18
vendor/aws/aws-crt-php/run_tests
vendored
Executable file
18
vendor/aws/aws-crt-php/run_tests
vendored
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
launcher=
|
||||
if command -v catchsegv; then
|
||||
launcher=catchsegv
|
||||
fi
|
||||
|
||||
if [ -z $PHP_BINARY ]; then
|
||||
PHP_BINARY=$(which php)
|
||||
fi
|
||||
|
||||
if [ ! -d vendor ]; then
|
||||
composer update
|
||||
fi
|
||||
|
||||
$launcher $PHP_BINARY -c php.ini vendor/bin/phpunit tests --debug
|
4
vendor/aws/aws-crt-php/run_tests.bat
vendored
Normal file
4
vendor/aws/aws-crt-php/run_tests.bat
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
@echo on
|
||||
|
||||
%PHP_BINARY% -c php-win.ini vendor/bin/phpunit tests --debug
|
3
vendor/aws/aws-crt-php/src/.gitignore
vendored
Normal file
3
vendor/aws/aws-crt-php/src/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
api.h
|
||||
pkgconfig/
|
||||
*.so*
|
69
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php
vendored
Normal file
69
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/AwsCredentials.php
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
use AWS\CRT\NativeResource as NativeResource;
|
||||
use AWS\CRT\Options as Options;
|
||||
|
||||
/**
|
||||
* Represents a set of AWS credentials
|
||||
*
|
||||
* @param array options:
|
||||
* - string access_key_id - AWS Access Key Id
|
||||
* - string secret_access_key - AWS Secret Access Key
|
||||
* - string session_token - Optional STS session token
|
||||
* - int expiration_timepoint_seconds - Optional time to expire these credentials
|
||||
*/
|
||||
final class AwsCredentials extends NativeResource {
|
||||
|
||||
static function defaults() {
|
||||
return [
|
||||
'access_key_id' => '',
|
||||
'secret_access_key' => '',
|
||||
'session_token' => '',
|
||||
'expiration_timepoint_seconds' => 0,
|
||||
];
|
||||
}
|
||||
|
||||
private $access_key_id;
|
||||
private $secret_access_key;
|
||||
private $session_token;
|
||||
private $expiration_timepoint_seconds = 0;
|
||||
|
||||
public function __get($name) {
|
||||
return $this->$name;
|
||||
}
|
||||
|
||||
function __construct(array $options = []) {
|
||||
parent::__construct();
|
||||
|
||||
$options = new Options($options, self::defaults());
|
||||
$this->access_key_id = $options->access_key_id->asString();
|
||||
$this->secret_access_key = $options->secret_access_key->asString();
|
||||
$this->session_token = $options->session_token ? $options->session_token->asString() : null;
|
||||
$this->expiration_timepoint_seconds = $options->expiration_timepoint_seconds->asInt();
|
||||
|
||||
if (strlen($this->access_key_id) == 0) {
|
||||
throw new \InvalidArgumentException("access_key_id must be provided");
|
||||
}
|
||||
if (strlen($this->secret_access_key) == 0) {
|
||||
throw new \InvalidArgumentException("secret_access_key must be provided");
|
||||
}
|
||||
|
||||
$creds_options = self::$crt->aws_credentials_options_new();
|
||||
self::$crt->aws_credentials_options_set_access_key_id($creds_options, $this->access_key_id);
|
||||
self::$crt->aws_credentials_options_set_secret_access_key($creds_options, $this->secret_access_key);
|
||||
self::$crt->aws_credentials_options_set_session_token($creds_options, $this->session_token);
|
||||
self::$crt->aws_credentials_options_set_expiration_timepoint_seconds($creds_options, $this->expiration_timepoint_seconds);
|
||||
$this->acquire(self::$crt->aws_credentials_new($creds_options));
|
||||
self::$crt->aws_credentials_options_release($creds_options);
|
||||
}
|
||||
|
||||
function __destruct() {
|
||||
self::$crt->aws_credentials_release($this->release());
|
||||
parent::__destruct();
|
||||
}
|
||||
}
|
23
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php
vendored
Normal file
23
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/CredentialsProvider.php
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
use AWS\CRT\NativeResource as NativeResource;
|
||||
|
||||
/**
|
||||
* Base class for credentials providers
|
||||
*/
|
||||
abstract class CredentialsProvider extends NativeResource {
|
||||
|
||||
function __construct(array $options = []) {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function __destruct() {
|
||||
self::$crt->credentials_provider_release($this->release());
|
||||
parent::__destruct();
|
||||
}
|
||||
}
|
43
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php
vendored
Normal file
43
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/Signable.php
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
use AWS\CRT\IO\InputStream;
|
||||
use AWS\CRT\NativeResource as NativeResource;
|
||||
|
||||
class Signable extends NativeResource {
|
||||
|
||||
public static function fromHttpRequest($http_message) {
|
||||
return new Signable(function() use ($http_message) {
|
||||
return self::$crt->signable_new_from_http_request($http_message->native);
|
||||
});
|
||||
}
|
||||
|
||||
public static function fromChunk($chunk_stream, $previous_signature="") {
|
||||
if (!($chunk_stream instanceof InputStream)) {
|
||||
$chunk_stream = new InputStream($chunk_stream);
|
||||
}
|
||||
return new Signable(function() use($chunk_stream, $previous_signature) {
|
||||
return self::$crt->signable_new_from_chunk($chunk_stream->native, $previous_signature);
|
||||
});
|
||||
}
|
||||
|
||||
public static function fromCanonicalRequest($canonical_request) {
|
||||
return new Signable(function() use($canonical_request) {
|
||||
return self::$crt->signable_new_from_canonical_request($canonical_request);
|
||||
});
|
||||
}
|
||||
|
||||
protected function __construct($ctor) {
|
||||
parent::__construct();
|
||||
$this->acquire($ctor());
|
||||
}
|
||||
|
||||
function __destruct() {
|
||||
self::$crt->signable_release($this->release());
|
||||
parent::__destruct();
|
||||
}
|
||||
}
|
15
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php
vendored
Normal file
15
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SignatureType.php
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
class SignatureType {
|
||||
const HTTP_REQUEST_HEADERS = 0;
|
||||
const HTTP_REQUEST_QUERY_PARAMS = 1;
|
||||
const HTTP_REQUEST_CHUNK = 2;
|
||||
const HTTP_REQUEST_EVENT = 3;
|
||||
const CANONICAL_REQUEST_HEADERS = 4;
|
||||
const CANONICAL_REQUEST_QUERY_PARAMS = 5;
|
||||
}
|
11
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php
vendored
Normal file
11
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SignedBodyHeaderType.php
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
class SignedBodyHeaderType {
|
||||
const NONE = 0;
|
||||
const X_AMZ_CONTENT_SHA256 = 1;
|
||||
}
|
22
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php
vendored
Normal file
22
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/Signing.php
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
use AWS\CRT\NativeResource;
|
||||
|
||||
abstract class Signing extends NativeResource {
|
||||
static function signRequestAws($signable, $signing_config, $on_complete) {
|
||||
return self::$crt->sign_request_aws($signable->native, $signing_config->native,
|
||||
function($result, $error_code) use ($on_complete) {
|
||||
$signing_result = SigningResult::fromNative($result);
|
||||
$on_complete($signing_result, $error_code);
|
||||
}, null);
|
||||
}
|
||||
|
||||
static function testVerifySigV4ASigning($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y) {
|
||||
return self::$crt->test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y);
|
||||
}
|
||||
}
|
11
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php
vendored
Normal file
11
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SigningAlgorithm.php
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
class SigningAlgorithm {
|
||||
const SIGv4 = 0;
|
||||
const SIGv4_ASYMMETRIC = 1;
|
||||
}
|
75
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php
vendored
Normal file
75
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SigningConfigAWS.php
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
use AWS\CRT\NativeResource as NativeResource;
|
||||
use AWS\CRT\Options as Options;
|
||||
|
||||
class SigningConfigAWS extends NativeResource {
|
||||
|
||||
public static function defaults() {
|
||||
return [
|
||||
'algorithm' => SigningAlgorithm::SIGv4,
|
||||
'signature_type' => SignatureType::HTTP_REQUEST_HEADERS,
|
||||
'credentials_provider' => null,
|
||||
'region' => null,
|
||||
'service' => null,
|
||||
'use_double_uri_encode' => false,
|
||||
'should_normalize_uri_path' => false,
|
||||
'omit_session_token' => false,
|
||||
'signed_body_value' => null,
|
||||
'signed_body_header_type' => SignedBodyHeaderType::NONE,
|
||||
'expiration_in_seconds' => 0,
|
||||
'date' => time(),
|
||||
'should_sign_header' => null,
|
||||
];
|
||||
}
|
||||
|
||||
private $options;
|
||||
|
||||
public function __construct(array $options = []) {
|
||||
parent::__construct();
|
||||
$this->options = $options = new Options($options, self::defaults());
|
||||
$sc = $this->acquire(self::$crt->signing_config_aws_new());
|
||||
self::$crt->signing_config_aws_set_algorithm($sc, $options->algorithm->asInt());
|
||||
self::$crt->signing_config_aws_set_signature_type($sc, $options->signature_type->asInt());
|
||||
if ($credentials_provider = $options->credentials_provider->asObject()) {
|
||||
self::$crt->signing_config_aws_set_credentials_provider(
|
||||
$sc,
|
||||
$credentials_provider->native);
|
||||
}
|
||||
self::$crt->signing_config_aws_set_region(
|
||||
$sc, $options->region->asString());
|
||||
self::$crt->signing_config_aws_set_service(
|
||||
$sc, $options->service->asString());
|
||||
self::$crt->signing_config_aws_set_use_double_uri_encode(
|
||||
$sc, $options->use_double_uri_encode->asBool());
|
||||
self::$crt->signing_config_aws_set_should_normalize_uri_path(
|
||||
$sc, $options->should_normalize_uri_path->asBool());
|
||||
self::$crt->signing_config_aws_set_omit_session_token(
|
||||
$sc, $options->omit_session_token->asBool());
|
||||
self::$crt->signing_config_aws_set_signed_body_value(
|
||||
$sc, $options->signed_body_value->asString());
|
||||
self::$crt->signing_config_aws_set_signed_body_header_type(
|
||||
$sc, $options->signed_body_header_type->asInt());
|
||||
self::$crt->signing_config_aws_set_expiration_in_seconds(
|
||||
$sc, $options->expiration_in_seconds->asInt());
|
||||
self::$crt->signing_config_aws_set_date($sc, $options->date->asInt());
|
||||
if ($should_sign_header = $options->should_sign_header->asCallable()) {
|
||||
self::$crt->signing_config_aws_set_should_sign_header_fn($sc, $should_sign_header);
|
||||
}
|
||||
}
|
||||
|
||||
function __destruct()
|
||||
{
|
||||
self::$crt->signing_config_aws_release($this->release());
|
||||
parent::__destruct();
|
||||
}
|
||||
|
||||
public function __get($name) {
|
||||
return $this->options->get($name);
|
||||
}
|
||||
}
|
33
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php
vendored
Normal file
33
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/SigningResult.php
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
use AWS\CRT\NativeResource;
|
||||
use AWS\CRT\HTTP\Request;
|
||||
|
||||
class SigningResult extends NativeResource {
|
||||
protected function __construct($native) {
|
||||
parent::__construct();
|
||||
|
||||
$this->acquire($native);
|
||||
}
|
||||
|
||||
function __destruct() {
|
||||
// No destruction necessary, SigningResults are transient, just release
|
||||
$this->release();
|
||||
parent::__destruct();
|
||||
}
|
||||
|
||||
public static function fromNative($ptr) {
|
||||
return new SigningResult($ptr);
|
||||
}
|
||||
|
||||
public function applyToHttpRequest(&$http_request) {
|
||||
self::$crt->signing_result_apply_to_http_request($this->native, $http_request->native);
|
||||
// Update http_request from native
|
||||
$http_request = Request::unmarshall($http_request->toBlob());
|
||||
}
|
||||
}
|
35
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php
vendored
Normal file
35
vendor/aws/aws-crt-php/src/AWS/CRT/Auth/StaticCredentialsProvider.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Auth;
|
||||
|
||||
/**
|
||||
* Provides a static set of AWS credentials
|
||||
*
|
||||
* @param array options:
|
||||
* - string access_key_id - AWS Access Key Id
|
||||
* - string secret_access_key - AWS Secret Access Key
|
||||
* - string session_token - Optional STS session token
|
||||
*/
|
||||
final class StaticCredentialsProvider extends CredentialsProvider {
|
||||
|
||||
private $credentials;
|
||||
|
||||
public function __get($name) {
|
||||
return $this->$name;
|
||||
}
|
||||
|
||||
function __construct(array $options = []) {
|
||||
parent::__construct();
|
||||
$this->credentials = new AwsCredentials($options);
|
||||
|
||||
$provider_options = self::$crt->credentials_provider_static_options_new();
|
||||
self::$crt->credentials_provider_static_options_set_access_key_id($provider_options, $this->credentials->access_key_id);
|
||||
self::$crt->credentials_provider_static_options_set_secret_access_key($provider_options, $this->credentials->secret_access_key);
|
||||
self::$crt->credentials_provider_static_options_set_session_token($provider_options, $this->credentials->session_token);
|
||||
$this->acquire(self::$crt->credentials_provider_static_new($provider_options));
|
||||
self::$crt->credentials_provider_static_options_release($provider_options);
|
||||
}
|
||||
}
|
358
vendor/aws/aws-crt-php/src/AWS/CRT/CRT.php
vendored
Normal file
358
vendor/aws/aws-crt-php/src/AWS/CRT/CRT.php
vendored
Normal file
@@ -0,0 +1,358 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT;
|
||||
|
||||
use AWS\CRT\Internal\Extension;
|
||||
|
||||
use \RuntimeException;
|
||||
|
||||
/**
|
||||
* Wrapper for the interface to the CRT. There only ever needs to be one of these, but
|
||||
* additional instances won't cost anything other than their memory.
|
||||
* Creating an instance of any NativeResource will activate the CRT binding. User code
|
||||
* should only need to create one of these if they are only accessing CRT:: static functions.
|
||||
*/
|
||||
final class CRT {
|
||||
|
||||
private static $impl = null;
|
||||
private static $refcount = 0;
|
||||
|
||||
function __construct() {
|
||||
if (is_null(self::$impl)) {
|
||||
try {
|
||||
self::$impl = new Extension();
|
||||
} catch (RuntimeException $rex) {
|
||||
throw new RuntimeException("Unable to initialize AWS CRT via awscrt extension: \n$rex", -1);
|
||||
}
|
||||
}
|
||||
++self::$refcount;
|
||||
}
|
||||
|
||||
function __destruct() {
|
||||
if (--self::$refcount == 0) {
|
||||
self::$impl = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool whether or not the CRT is currently loaded
|
||||
*/
|
||||
public static function isLoaded() {
|
||||
return !is_null(self::$impl);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool whether or not the CRT is available via one of the possible backends
|
||||
*/
|
||||
public static function isAvailable() {
|
||||
try {
|
||||
new CRT();
|
||||
return true;
|
||||
} catch (RuntimeException $ex) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return integer last error code reported within the CRT
|
||||
*/
|
||||
public static function last_error() {
|
||||
return self::$impl->aws_crt_last_error();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $error Error code from the CRT, usually delivered via callback or {@see last_error}
|
||||
* @return string Human-readable description of the provided error code
|
||||
*/
|
||||
public static function error_str($error) {
|
||||
return self::$impl->aws_crt_error_str((int) $error);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $error Error code from the CRT, usually delivered via callback or {@see last_error}
|
||||
* @return string Name/enum identifier for the provided error code
|
||||
*/
|
||||
public static function error_name($error) {
|
||||
return self::$impl->aws_crt_error_name((int) $error);
|
||||
}
|
||||
|
||||
public static function log_to_stdout() {
|
||||
return self::$impl->aws_crt_log_to_stdout();
|
||||
}
|
||||
|
||||
public static function log_to_stderr() {
|
||||
return self::$impl->aws_crt_log_to_stderr();
|
||||
}
|
||||
|
||||
public static function log_to_file($filename) {
|
||||
return self::$impl->aws_crt_log_to_file($filename);
|
||||
}
|
||||
|
||||
public static function log_to_stream($stream) {
|
||||
return self::$impl->aws_crt_log_to_stream($stream);
|
||||
}
|
||||
|
||||
public static function log_set_level($level) {
|
||||
return self::$impl->aws_crt_log_set_level($level);
|
||||
}
|
||||
|
||||
public static function log_stop() {
|
||||
return self::$impl->aws_crt_log_stop();
|
||||
}
|
||||
|
||||
public static function log_message($level, $message) {
|
||||
return self::$impl->aws_crt_log_message($level, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return object Pointer to native event_loop_group_options
|
||||
*/
|
||||
function event_loop_group_options_new() {
|
||||
return self::$impl->aws_crt_event_loop_group_options_new();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $elg_options Pointer to native event_loop_group_options
|
||||
*/
|
||||
function event_loop_group_options_release($elg_options) {
|
||||
self::$impl->aws_crt_event_loop_group_options_release($elg_options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $elg_options Pointer to native event_loop_group_options
|
||||
* @param integer $max_threads Maximum number of threads to allow the event loop group to use, default: 0/1 per CPU core
|
||||
*/
|
||||
function event_loop_group_options_set_max_threads($elg_options, $max_threads) {
|
||||
self::$impl->aws_crt_event_loop_group_options_set_max_threads($elg_options, (int)$max_threads);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object Pointer to event_loop_group_options, {@see event_loop_group_options_new}
|
||||
* @return object Pointer to the new event loop group
|
||||
*/
|
||||
function event_loop_group_new($options) {
|
||||
return self::$impl->aws_crt_event_loop_group_new($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $elg Pointer to the event loop group to release
|
||||
*/
|
||||
function event_loop_group_release($elg) {
|
||||
self::$impl->aws_crt_event_loop_group_release($elg);
|
||||
}
|
||||
|
||||
/**
|
||||
* return object Pointer to native AWS credentials options
|
||||
*/
|
||||
function aws_credentials_options_new() {
|
||||
return self::$impl->aws_crt_credentials_options_new();
|
||||
}
|
||||
|
||||
function aws_credentials_options_release($options) {
|
||||
self::$impl->aws_crt_credentials_options_release($options);
|
||||
}
|
||||
|
||||
function aws_credentials_options_set_access_key_id($options, $access_key_id) {
|
||||
self::$impl->aws_crt_credentials_options_set_access_key_id($options, $access_key_id);
|
||||
}
|
||||
|
||||
function aws_credentials_options_set_secret_access_key($options, $secret_access_key) {
|
||||
self::$impl->aws_crt_credentials_options_set_secret_access_key($options, $secret_access_key);
|
||||
}
|
||||
|
||||
function aws_credentials_options_set_session_token($options, $session_token) {
|
||||
self::$impl->aws_crt_credentials_options_set_session_token($options, $session_token);
|
||||
}
|
||||
|
||||
function aws_credentials_options_set_expiration_timepoint_seconds($options, $expiration_timepoint_seconds) {
|
||||
self::$impl->aws_crt_credentials_options_set_expiration_timepoint_seconds($options, $expiration_timepoint_seconds);
|
||||
}
|
||||
|
||||
function aws_credentials_new($options) {
|
||||
return self::$impl->aws_crt_credentials_new($options);
|
||||
}
|
||||
|
||||
function aws_credentials_release($credentials) {
|
||||
self::$impl->aws_crt_credentials_release($credentials);
|
||||
}
|
||||
|
||||
function credentials_provider_release($provider) {
|
||||
self::$impl->aws_crt_credentials_provider_release($provider);
|
||||
}
|
||||
|
||||
function credentials_provider_static_options_new() {
|
||||
return self::$impl->aws_crt_credentials_provider_static_options_new();
|
||||
}
|
||||
|
||||
function credentials_provider_static_options_release($options) {
|
||||
self::$impl->aws_crt_credentials_provider_static_options_release($options);
|
||||
}
|
||||
|
||||
function credentials_provider_static_options_set_access_key_id($options, $access_key_id) {
|
||||
self::$impl->aws_crt_credentials_provider_static_options_set_access_key_id($options, $access_key_id);
|
||||
}
|
||||
|
||||
function credentials_provider_static_options_set_secret_access_key($options, $secret_access_key) {
|
||||
self::$impl->aws_crt_credentials_provider_static_options_set_secret_access_key($options, $secret_access_key);
|
||||
}
|
||||
|
||||
function credentials_provider_static_options_set_session_token($options, $session_token) {
|
||||
self::$impl->aws_crt_credentials_provider_static_options_set_session_token($options, $session_token);
|
||||
}
|
||||
|
||||
function credentials_provider_static_new($options) {
|
||||
return self::$impl->aws_crt_credentials_provider_static_new($options);
|
||||
}
|
||||
|
||||
function input_stream_options_new() {
|
||||
return self::$impl->aws_crt_input_stream_options_new();
|
||||
}
|
||||
|
||||
function input_stream_options_release($options) {
|
||||
self::$impl->aws_crt_input_stream_options_release($options);
|
||||
}
|
||||
|
||||
function input_stream_options_set_user_data($options, $user_data) {
|
||||
self::$impl->aws_crt_input_stream_options_set_user_data($options, $user_data);
|
||||
}
|
||||
|
||||
function input_stream_new($options) {
|
||||
return self::$impl->aws_crt_input_stream_new($options);
|
||||
}
|
||||
|
||||
function input_stream_release($stream) {
|
||||
self::$impl->aws_crt_input_stream_release($stream);
|
||||
}
|
||||
|
||||
function input_stream_seek($stream, $offset, $basis) {
|
||||
return self::$impl->aws_crt_input_stream_seek($stream, $offset, $basis);
|
||||
}
|
||||
|
||||
function input_stream_read($stream, $length) {
|
||||
return self::$impl->aws_crt_input_stream_read($stream, $length);
|
||||
}
|
||||
|
||||
function input_stream_eof($stream) {
|
||||
return self::$impl->aws_crt_input_stream_eof($stream);
|
||||
}
|
||||
|
||||
function input_stream_get_length($stream) {
|
||||
return self::$impl->aws_crt_input_stream_get_length($stream);
|
||||
}
|
||||
|
||||
function http_message_new_from_blob($blob) {
|
||||
return self::$impl->aws_crt_http_message_new_from_blob($blob);
|
||||
}
|
||||
|
||||
function http_message_to_blob($message) {
|
||||
return self::$impl->aws_crt_http_message_to_blob($message);
|
||||
}
|
||||
|
||||
function http_message_release($message) {
|
||||
self::$impl->aws_crt_http_message_release($message);
|
||||
}
|
||||
|
||||
function signing_config_aws_new() {
|
||||
return self::$impl->aws_crt_signing_config_aws_new();
|
||||
}
|
||||
|
||||
function signing_config_aws_release($signing_config) {
|
||||
return self::$impl->aws_crt_signing_config_aws_release($signing_config);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_algorithm($signing_config, $algorithm) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_algorithm($signing_config, (int)$algorithm);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_signature_type($signing_config, $signature_type) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_signature_type($signing_config, (int)$signature_type);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_credentials_provider($signing_config, $credentials_provider) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_credentials_provider($signing_config, $credentials_provider);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_region($signing_config, $region) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_region($signing_config, $region);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_service($signing_config, $service) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_service($signing_config, $service);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_use_double_uri_encode($signing_config, $use_double_uri_encode) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_use_double_uri_encode($signing_config, $use_double_uri_encode);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_should_normalize_uri_path($signing_config, $should_normalize_uri_path) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_should_normalize_uri_path($signing_config, $should_normalize_uri_path);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_omit_session_token($signing_config, $omit_session_token) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_omit_session_token($signing_config, $omit_session_token);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_signed_body_value($signing_config, $signed_body_value) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_signed_body_value($signing_config, $signed_body_value);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_signed_body_header_type($signing_config, $signed_body_header_type) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_signed_body_header_type($signing_config, $signed_body_header_type);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_expiration_in_seconds($signing_config, $expiration_in_seconds) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_expiration_in_seconds($signing_config, $expiration_in_seconds);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_date($signing_config, $timestamp) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_date($signing_config, $timestamp);
|
||||
}
|
||||
|
||||
function signing_config_aws_set_should_sign_header_fn($signing_config, $should_sign_header_fn) {
|
||||
self::$impl->aws_crt_signing_config_aws_set_should_sign_header_fn($signing_config, $should_sign_header_fn);
|
||||
}
|
||||
|
||||
function signable_new_from_http_request($http_message) {
|
||||
return self::$impl->aws_crt_signable_new_from_http_request($http_message);
|
||||
}
|
||||
|
||||
function signable_new_from_chunk($chunk_stream, $previous_signature) {
|
||||
return self::$impl->aws_crt_signable_new_from_chunk($chunk_stream, $previous_signature);
|
||||
}
|
||||
|
||||
function signable_new_from_canonical_request($canonical_request) {
|
||||
return self::$impl->aws_crt_signable_new_from_canonical_request($canonical_request);
|
||||
}
|
||||
|
||||
function signable_release($signable) {
|
||||
self::$impl->aws_crt_signable_release($signable);
|
||||
}
|
||||
|
||||
function signing_result_release($signing_result) {
|
||||
self::$impl->aws_crt_signing_result_release($signing_result);
|
||||
}
|
||||
|
||||
function signing_result_apply_to_http_request($signing_result, $http_message) {
|
||||
return self::$impl->aws_crt_signing_result_apply_to_http_request(
|
||||
$signing_result, $http_message);
|
||||
}
|
||||
|
||||
function sign_request_aws($signable, $signing_config, $on_complete, $user_data) {
|
||||
return self::$impl->aws_crt_sign_request_aws($signable, $signing_config, $on_complete, $user_data);
|
||||
}
|
||||
|
||||
function test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y) {
|
||||
return self::$impl->aws_crt_test_verify_sigv4a_signing($signable, $signing_config, $expected_canonical_request, $signature, $ecc_key_pub_x, $ecc_key_pub_y);
|
||||
}
|
||||
|
||||
public static function crc32($input, $previous = 0) {
|
||||
return self::$impl->aws_crt_crc32($input, $previous);
|
||||
}
|
||||
|
||||
public static function crc32c($input, $previous = 0) {
|
||||
return self::$impl->aws_crt_crc32c($input, $previous);
|
||||
}
|
||||
}
|
50
vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php
vendored
Normal file
50
vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Headers.php
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\HTTP;
|
||||
|
||||
use AWS\CRT\Internal\Encoding;
|
||||
|
||||
final class Headers {
|
||||
private $headers;
|
||||
|
||||
public function __construct($headers = []) {
|
||||
$this->headers = $headers;
|
||||
}
|
||||
|
||||
public static function marshall($headers) {
|
||||
$buf = "";
|
||||
foreach ($headers->headers as $header => $value) {
|
||||
$buf .= Encoding::encodeString($header);
|
||||
$buf .= Encoding::encodeString($value);
|
||||
}
|
||||
return $buf;
|
||||
}
|
||||
|
||||
public static function unmarshall($buf) {
|
||||
$strings = Encoding::readStrings($buf);
|
||||
$headers = [];
|
||||
for ($idx = 0; $idx < count($strings);) {
|
||||
$headers[$strings[$idx++]] = $strings[$idx++];
|
||||
}
|
||||
return new Headers($headers);
|
||||
}
|
||||
|
||||
public function count() {
|
||||
return count($this->headers);
|
||||
}
|
||||
|
||||
public function get($header) {
|
||||
return isset($this->headers[$header]) ? $this->headers[$header] : null;
|
||||
}
|
||||
|
||||
public function set($header, $value) {
|
||||
$this->headers[$header] = $value;
|
||||
}
|
||||
|
||||
public function toArray() {
|
||||
return $this->headers;
|
||||
}
|
||||
}
|
95
vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php
vendored
Normal file
95
vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Message.php
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\HTTP;
|
||||
|
||||
use AWS\CRT\NativeResource;
|
||||
use AWS\CRT\Internal\Encoding;
|
||||
|
||||
abstract class Message extends NativeResource {
|
||||
private $method;
|
||||
private $path;
|
||||
private $query;
|
||||
private $headers;
|
||||
|
||||
public function __construct($method, $path, $query = [], $headers = []) {
|
||||
parent::__construct();
|
||||
$this->method = $method;
|
||||
$this->path = $path;
|
||||
$this->query = $query;
|
||||
$this->headers = new Headers($headers);
|
||||
$this->acquire(self::$crt->http_message_new_from_blob(self::marshall($this)));
|
||||
}
|
||||
|
||||
public function __destruct() {
|
||||
self::$crt->http_message_release($this->release());
|
||||
parent::__destruct();
|
||||
}
|
||||
|
||||
public function toBlob() {
|
||||
return self::$crt->http_message_to_blob($this->native);
|
||||
}
|
||||
|
||||
protected static function marshall($msg) {
|
||||
$buf = "";
|
||||
$buf .= Encoding::encodeString($msg->method);
|
||||
$buf .= Encoding::encodeString($msg->pathAndQuery());
|
||||
$buf .= Headers::marshall($msg->headers);
|
||||
return $buf;
|
||||
}
|
||||
|
||||
protected static function _unmarshall($buf, $class=Message::class) {
|
||||
$method = Encoding::readString($buf);
|
||||
$path_and_query = Encoding::readString($buf);
|
||||
$parts = explode("?", $path_and_query, 2);
|
||||
$path = isset($parts[0]) ? $parts[0] : "";
|
||||
$query = isset($parts[1]) ? $parts[1] : "";
|
||||
$headers = Headers::unmarshall($buf);
|
||||
|
||||
// Turn query params back into a dictionary
|
||||
if (strlen($query)) {
|
||||
$query = rawurldecode($query);
|
||||
$query = explode("&", $query);
|
||||
$query = array_reduce($query, function($params, $pair) {
|
||||
list($param, $value) = explode("=", $pair, 2);
|
||||
$params[$param] = $value;
|
||||
return $params;
|
||||
}, []);
|
||||
} else {
|
||||
$query = [];
|
||||
}
|
||||
|
||||
return new $class($method, $path, $query, $headers->toArray());
|
||||
}
|
||||
|
||||
public function pathAndQuery() {
|
||||
$path = $this->path;
|
||||
$queries = [];
|
||||
foreach ($this->query as $param => $value) {
|
||||
$queries []= urlencode($param) . "=" . urlencode($value);
|
||||
}
|
||||
$query = implode("&", $queries);
|
||||
if (strlen($query)) {
|
||||
$path = implode("?", [$path, $query]);
|
||||
}
|
||||
return $path;
|
||||
}
|
||||
|
||||
public function method() {
|
||||
return $this->method;
|
||||
}
|
||||
|
||||
public function path() {
|
||||
return $this->path;
|
||||
}
|
||||
|
||||
public function query() {
|
||||
return $this->query;
|
||||
}
|
||||
|
||||
public function headers() {
|
||||
return $this->headers;
|
||||
}
|
||||
}
|
32
vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php
vendored
Normal file
32
vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\HTTP;
|
||||
|
||||
use AWS\CRT\IO\InputStream;
|
||||
|
||||
class Request extends Message {
|
||||
private $body_stream = null;
|
||||
|
||||
public function __construct($method, $path, $query = [], $headers = [], $body_stream = null) {
|
||||
parent::__construct($method, $path, $query, $headers);
|
||||
if (!is_null($body_stream) && !($body_stream instanceof InputStream)) {
|
||||
throw InvalidArgumentException('body_stream must be an instance of ' . InputStream::class);
|
||||
}
|
||||
$this->body_stream = $body_stream;
|
||||
}
|
||||
|
||||
public static function marshall($request) {
|
||||
return parent::marshall($request);
|
||||
}
|
||||
|
||||
public static function unmarshall($buf) {
|
||||
return parent::_unmarshall($buf, Request::class);
|
||||
}
|
||||
|
||||
public function body_stream() {
|
||||
return $this->body_stream;
|
||||
}
|
||||
}
|
27
vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php
vendored
Normal file
27
vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Response.php
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\HTTP;
|
||||
|
||||
class Response extends Message {
|
||||
private $status_code;
|
||||
|
||||
public function __construct($method, $path, $query, $headers, $status_code) {
|
||||
parent::__construct($method, $path, $query, $headers);
|
||||
$this->status_code = $status_code;
|
||||
}
|
||||
|
||||
public static function marshall($response) {
|
||||
return parent::marshall($response);
|
||||
}
|
||||
|
||||
public static function unmarshall($buf) {
|
||||
return parent::_unmarshall($buf, Response::class);
|
||||
}
|
||||
|
||||
public function status_code() {
|
||||
return $this->status_code;
|
||||
}
|
||||
}
|
39
vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php
vendored
Normal file
39
vendor/aws/aws-crt-php/src/AWS/CRT/IO/EventLoopGroup.php
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\IO;
|
||||
|
||||
use AWS\CRT\NativeResource as NativeResource;
|
||||
use AWS\CRT\Options as Options;
|
||||
|
||||
/**
|
||||
* Represents 1 or more event loops (1 per thread) for doing I/O and background tasks.
|
||||
* Typically, every application has one EventLoopGroup.
|
||||
*
|
||||
* @param array options:
|
||||
* - int num_threads - Number of worker threads in the EventLoopGroup. Defaults to 0/1 per logical core.
|
||||
*/
|
||||
final class EventLoopGroup extends NativeResource {
|
||||
|
||||
static function defaults() {
|
||||
return [
|
||||
'max_threads' => 0,
|
||||
];
|
||||
}
|
||||
|
||||
function __construct(array $options = []) {
|
||||
parent::__construct();
|
||||
$options = new Options($options, self::defaults());
|
||||
$elg_options = self::$crt->event_loop_group_options_new();
|
||||
self::$crt->event_loop_group_options_set_max_threads($elg_options, $options->getInt('max_threads'));
|
||||
$this->acquire(self::$crt->event_loop_group_new($elg_options));
|
||||
self::$crt->event_loop_group_options_release($elg_options);
|
||||
}
|
||||
|
||||
function __destruct() {
|
||||
self::$crt->event_loop_group_release($this->release());
|
||||
parent::__destruct();
|
||||
}
|
||||
}
|
49
vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php
vendored
Normal file
49
vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\IO;
|
||||
|
||||
use AWS\CRT\NativeResource as NativeResource;
|
||||
|
||||
final class InputStream extends NativeResource {
|
||||
private $stream = null;
|
||||
|
||||
const SEEK_BEGIN = 0;
|
||||
const SEEK_END = 2;
|
||||
|
||||
public function __construct($stream) {
|
||||
$this->stream = $stream;
|
||||
$options = self::$crt->input_stream_options_new();
|
||||
// The stream implementation in native just converts the PHP stream into
|
||||
// a native php_stream* and executes operations entirely in native
|
||||
self::$crt->input_stream_options_set_user_data($options, $stream);
|
||||
$this->acquire(self::$crt->input_stream_new($options));
|
||||
self::$crt->input_stream_options_release($options);
|
||||
}
|
||||
|
||||
public function __destruct() {
|
||||
self::$crt->input_stream_release($this->release());
|
||||
parent::__destruct();
|
||||
}
|
||||
|
||||
public function eof() {
|
||||
return self::$crt->input_stream_eof($this->native);
|
||||
}
|
||||
|
||||
public function length() {
|
||||
return self::$crt->input_stream_get_length($this->native);
|
||||
}
|
||||
|
||||
public function read($length = 0) {
|
||||
if ($length == 0) {
|
||||
$length = $this->length();
|
||||
}
|
||||
return self::$crt->input_stream_read($this->native, $length);
|
||||
}
|
||||
|
||||
public function seek($offset, $basis) {
|
||||
return self::$crt->input_stream_seek($this->native, $offset, $basis);
|
||||
}
|
||||
}
|
37
vendor/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php
vendored
Normal file
37
vendor/aws/aws-crt-php/src/AWS/CRT/Internal/Encoding.php
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Internal;
|
||||
|
||||
final class Encoding {
|
||||
public static function readString(&$buffer) {
|
||||
list($len, $str) = self::decodeString($buffer);
|
||||
// Advance by sizeof(length) + strlen(str)
|
||||
$buffer = substr($buffer, 4 + $len);
|
||||
return $str;
|
||||
}
|
||||
|
||||
public static function readStrings($buffer) {
|
||||
$strings = [];
|
||||
while (strlen($buffer)) {
|
||||
$strings []= self::readString($buffer);
|
||||
}
|
||||
return $strings;
|
||||
}
|
||||
|
||||
public static function decodeString($buffer) {
|
||||
$len = unpack("N", $buffer)[1];
|
||||
$buffer = substr($buffer, 4);
|
||||
$str = unpack("a${len}", $buffer)[1];
|
||||
return [$len, $str];
|
||||
}
|
||||
|
||||
public static function encodeString($str) {
|
||||
if (is_array($str)) {
|
||||
$str = $str[0];
|
||||
}
|
||||
return pack("Na*", strlen($str), $str);
|
||||
}
|
||||
}
|
29
vendor/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php
vendored
Normal file
29
vendor/aws/aws-crt-php/src/AWS/CRT/Internal/Extension.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT\Internal;
|
||||
|
||||
use \RuntimeException;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* Forwards calls on to awscrt PHP extension functions
|
||||
*/
|
||||
final class Extension {
|
||||
function __construct() {
|
||||
if (!extension_loaded('awscrt')) {
|
||||
throw new RuntimeException('awscrt extension is not loaded');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Forwards any call made on this object to the extension function of the
|
||||
* same name with the supplied arguments. Argument type hinting and checking
|
||||
* occurs at the CRT wrapper.
|
||||
*/
|
||||
function __call($name, $args) {
|
||||
return call_user_func_array($name, $args);
|
||||
}
|
||||
}
|
47
vendor/aws/aws-crt-php/src/AWS/CRT/Log.php
vendored
Normal file
47
vendor/aws/aws-crt-php/src/AWS/CRT/Log.php
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT;
|
||||
use AWS\CRT\CRT;
|
||||
|
||||
final class Log {
|
||||
const NONE = 0;
|
||||
const FATAL = 1;
|
||||
const ERROR = 2;
|
||||
const WARN = 3;
|
||||
const INFO = 4;
|
||||
const DEBUG = 5;
|
||||
const TRACE = 6;
|
||||
|
||||
public static function toStdout() {
|
||||
CRT::log_to_stdout();
|
||||
}
|
||||
|
||||
public static function toStderr() {
|
||||
CRT::log_to_stderr();
|
||||
}
|
||||
|
||||
public static function toFile($filename) {
|
||||
CRT::log_to_file($filename);
|
||||
}
|
||||
|
||||
public static function toStream($stream) {
|
||||
assert(get_resource_type($stream) == "stream");
|
||||
CRT::log_to_stream($stream);
|
||||
}
|
||||
|
||||
public static function stop() {
|
||||
CRT::log_stop();
|
||||
}
|
||||
|
||||
public static function setLogLevel($level) {
|
||||
assert($level >= self::NONE && $level <= self::TRACE);
|
||||
CRT::log_set_level($level);
|
||||
}
|
||||
|
||||
public static function log($level, $message) {
|
||||
CRT::log_message($level, $message);
|
||||
}
|
||||
}
|
42
vendor/aws/aws-crt-php/src/AWS/CRT/NativeResource.php
vendored
Normal file
42
vendor/aws/aws-crt-php/src/AWS/CRT/NativeResource.php
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT;
|
||||
|
||||
use AWS\CRT\CRT as CRT;
|
||||
|
||||
/**
|
||||
* Base class for all native resources, tracks all outstanding resources
|
||||
* and provides basic leak checking
|
||||
*/
|
||||
abstract class NativeResource {
|
||||
protected static $crt = null;
|
||||
protected static $resources = [];
|
||||
protected $native = null;
|
||||
|
||||
protected function __construct() {
|
||||
if (is_null(self::$crt)) {
|
||||
self::$crt = new CRT();
|
||||
}
|
||||
|
||||
self::$resources[spl_object_hash($this)] = 1;
|
||||
}
|
||||
|
||||
protected function acquire($handle) {
|
||||
return $this->native = $handle;
|
||||
}
|
||||
|
||||
protected function release() {
|
||||
$native = $this->native;
|
||||
$this->native = null;
|
||||
return $native;
|
||||
}
|
||||
|
||||
function __destruct() {
|
||||
// Should have been destroyed and released by derived resource
|
||||
assert($this->native == null);
|
||||
unset(self::$resources[spl_object_hash($this)]);
|
||||
}
|
||||
}
|
77
vendor/aws/aws-crt-php/src/AWS/CRT/Options.php
vendored
Normal file
77
vendor/aws/aws-crt-php/src/AWS/CRT/Options.php
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
namespace AWS\CRT;
|
||||
|
||||
final class OptionValue {
|
||||
private $value;
|
||||
function __construct($value) {
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
public function asObject() {
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
public function asMixed() {
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
public function asInt() {
|
||||
return empty($this->value) ? 0 : (int)$this->value;
|
||||
}
|
||||
|
||||
public function asBool() {
|
||||
return boolval($this->value);
|
||||
}
|
||||
|
||||
public function asString() {
|
||||
return !empty($this->value) ? strval($this->value) : "";
|
||||
}
|
||||
|
||||
public function asArray() {
|
||||
return is_array($this->value) ? $this->value : (!empty($this->value) ? [$this->value] : []);
|
||||
}
|
||||
|
||||
public function asCallable() {
|
||||
return is_callable($this->value) ? $this->value : null;
|
||||
}
|
||||
}
|
||||
|
||||
final class Options {
|
||||
private $options;
|
||||
|
||||
public function __construct($opts = [], $defaults = []) {
|
||||
$this->options = array_replace($defaults, empty($opts) ? [] : $opts);
|
||||
}
|
||||
|
||||
public function __get($name) {
|
||||
return $this->get($name);
|
||||
}
|
||||
|
||||
public function asArray() {
|
||||
return $this->options;
|
||||
}
|
||||
|
||||
public function toArray() {
|
||||
return array_merge_recursive([], $this->options);
|
||||
}
|
||||
|
||||
public function get($name) {
|
||||
return new OptionValue($this->options[$name]);
|
||||
}
|
||||
|
||||
public function getInt($name) {
|
||||
return $this->get($name)->asInt();
|
||||
}
|
||||
|
||||
public function getString($name) {
|
||||
return $this->get($name)->asString();
|
||||
}
|
||||
|
||||
public function getBool($name) {
|
||||
return $this->get($name)->asBool();
|
||||
}
|
||||
}
|
22
vendor/aws/aws-crt-php/tests/000_CoreTest.php
vendored
Normal file
22
vendor/aws/aws-crt-php/tests/000_CoreTest.php
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\CRT;
|
||||
|
||||
require_once('common.inc');
|
||||
|
||||
// This intentionally does not inherit from CrtTestCase because it needs a clean-room environment
|
||||
final class CoreTest extends PHPUnit_Framework_TestCase {
|
||||
|
||||
// The CRT should always be available in this test suite
|
||||
public function testIsAvailable() {
|
||||
$this->assertTrue(CRT::isAvailable());
|
||||
}
|
||||
|
||||
// We have done nothing to necessitate loading the CRT, it should not be loaded
|
||||
public function testIsLoaded() {
|
||||
$this->assertTrue(!CRT::isLoaded());
|
||||
}
|
||||
}
|
90
vendor/aws/aws-crt-php/tests/CrcTest.php
vendored
Normal file
90
vendor/aws/aws-crt-php/tests/CrcTest.php
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\CRT;
|
||||
|
||||
require_once('common.inc');
|
||||
|
||||
final class CrcTest extends CrtTestCase {
|
||||
|
||||
public function testCrc32ZeroesOneShot() {
|
||||
$input = implode(array_map("chr", array_fill(0, 32, 0)));
|
||||
$output = CRT::crc32($input);
|
||||
$expected = 0x190A55AD;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32ZeroesIterated() {
|
||||
$output = 0;
|
||||
for ($i = 0; $i < 32; $i++) {
|
||||
$output = CRT::crc32("\x00", $output);
|
||||
}
|
||||
$expected = 0x190A55AD;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32ValuesOneShot() {
|
||||
$input = implode(array_map("chr", range(0, 31)));
|
||||
$output = CRT::crc32($input);
|
||||
$expected = 0x91267E8A;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32ValuesIterated() {
|
||||
$output = 0;
|
||||
foreach (range(0, 31) as $n) {
|
||||
$output = CRT::crc32(chr($n), $output);
|
||||
}
|
||||
$expected = 0x91267E8A;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32LargeBuffer() {
|
||||
$input = implode(array_map("chr", array_fill(0, 1 << 20, 0)));
|
||||
$output = CRT::crc32($input);
|
||||
$expected = 0xA738EA1C;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32cZeroesOneShot() {
|
||||
$input = implode(array_map("chr", array_fill(0, 32, 0)));
|
||||
$output = CRT::crc32c($input);
|
||||
$expected = 0x8A9136AA;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32cZeroesIterated() {
|
||||
$output = 0;
|
||||
for ($i = 0; $i < 32; $i++) {
|
||||
$output = CRT::crc32c("\x00", $output);
|
||||
}
|
||||
$expected = 0x8A9136AA;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32cValuesOneShot() {
|
||||
$input = implode(array_map("chr", range(0, 31)));
|
||||
$output = CRT::crc32c($input);
|
||||
$expected = 0x46DD794E;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32cValuesIterated() {
|
||||
$output = 0;
|
||||
foreach (range(0, 31) as $n) {
|
||||
$output = CRT::crc32c(chr($n), $output);
|
||||
}
|
||||
$expected = 0x46DD794E;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
public function testCrc32cLargeBuffer() {
|
||||
$input = implode(array_map("chr", array_fill(0, 1 << 20, 0)));
|
||||
$output = CRT::crc32c($input);
|
||||
$expected = 0x14298C12;
|
||||
$this->assertEquals($output, $expected);
|
||||
}
|
||||
|
||||
}
|
46
vendor/aws/aws-crt-php/tests/CredentialsTest.php
vendored
Normal file
46
vendor/aws/aws-crt-php/tests/CredentialsTest.php
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\Auth\AwsCredentials as AwsCredentials;
|
||||
use AWS\CRT\Auth\StaticCredentialsProvider as StaticCredentialsProvider;
|
||||
|
||||
require_once('common.inc');
|
||||
|
||||
final class CredentialsTest extends CrtTestCase {
|
||||
|
||||
public function testEmptyCredentials() {
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
$creds = new AwsCredentials(AwsCredentials::defaults());
|
||||
$this->assertNotNull($creds, "Failed to create default/empty credentials");
|
||||
$creds = null;
|
||||
}
|
||||
|
||||
private function getCredentialsConfig() {
|
||||
$options = AwsCredentials::defaults();
|
||||
$options['access_key_id'] = 'TESTAWSACCESSKEYID';
|
||||
$options['secret_access_key'] = 'TESTSECRETaccesskeyThatDefinitelyDoesntWork';
|
||||
$options['session_token'] = 'ThisIsMyTestSessionTokenIMadeItUpMyself';
|
||||
$options['expiration_timepoint_seconds'] = 42;
|
||||
return $options;
|
||||
}
|
||||
|
||||
public function testCredentialsLifetime() {
|
||||
$options = $this->getCredentialsConfig();
|
||||
$creds = new AwsCredentials($options);
|
||||
$this->assertNotNull($creds, "Failed to create Credentials with options");
|
||||
$this->assertEquals($creds->access_key_id, $options['access_key_id']);
|
||||
$this->assertEquals($creds->secret_access_key, $options['secret_access_key']);
|
||||
$this->assertEquals($creds->session_token, $options['session_token']);
|
||||
$this->assertEquals($creds->expiration_timepoint_seconds, $options['expiration_timepoint_seconds']);
|
||||
$creds = null;
|
||||
}
|
||||
|
||||
public function testStaticCredentialsProviderLifetime() {
|
||||
$options = $this->getCredentialsConfig();
|
||||
$provider = new StaticCredentialsProvider($options);
|
||||
$this->assertNotNull($provider, "Failed to create StaticCredentialsProvider");
|
||||
$provider = null;
|
||||
}
|
||||
}
|
21
vendor/aws/aws-crt-php/tests/ErrorTest.php
vendored
Normal file
21
vendor/aws/aws-crt-php/tests/ErrorTest.php
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\CRT;
|
||||
|
||||
final class ErrorTest extends PHPUnit_Framework_TestCase {
|
||||
|
||||
public function testNoInitialError() {
|
||||
$this->assertEquals(0, CRT::last_error());
|
||||
}
|
||||
|
||||
public function testCanResolveErrorName() {
|
||||
$this->assertEquals("AWS_ERROR_SUCCESS", CRT::error_name(0));
|
||||
}
|
||||
|
||||
public function testCanResolveErrorStr() {
|
||||
$this->assertEquals("Success.", CRT::error_str(0));
|
||||
}
|
||||
}
|
25
vendor/aws/aws-crt-php/tests/EventLoopGroupTest.php
vendored
Normal file
25
vendor/aws/aws-crt-php/tests/EventLoopGroupTest.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\IO\EventLoopGroup as EventLoopGroup;
|
||||
|
||||
require_once('common.inc');
|
||||
|
||||
final class EventLoopGroupTest extends CrtTestCase {
|
||||
|
||||
public function testLifetime() {
|
||||
$elg = new EventLoopGroup();
|
||||
$this->assertNotNull($elg, "Failed to create default EventLoopGroup");
|
||||
$elg = null;
|
||||
}
|
||||
|
||||
public function testConstructionWithOptions() {
|
||||
$options = EventLoopGroup::defaults();
|
||||
$options['num_threads'] = 1;
|
||||
$elg = new EventLoopGroup($options);
|
||||
$this->assertNotNull($elg, "Failed to create EventLoopGroup with 1 thread");
|
||||
$elg = null;
|
||||
}
|
||||
}
|
95
vendor/aws/aws-crt-php/tests/HttpMessageTest.php
vendored
Normal file
95
vendor/aws/aws-crt-php/tests/HttpMessageTest.php
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\HTTP\Headers;
|
||||
use AWS\CRT\HTTP\Request;
|
||||
use AWS\CRT\HTTP\Response;
|
||||
|
||||
require_once('common.inc');
|
||||
|
||||
final class HttpMessageTest extends CrtTestCase {
|
||||
public function testHeaders() {
|
||||
$headers = new Headers();
|
||||
$this->assertSame(0, $headers->count());
|
||||
}
|
||||
|
||||
public function testHeadersMarshalling() {
|
||||
$headers_array = [
|
||||
"host" => "s3.amazonaws.com",
|
||||
"test" => "this is a test header value"
|
||||
];
|
||||
$headers = new Headers($headers_array);
|
||||
$this->assertSame(2, $headers->count());
|
||||
$this->assertSame($headers_array['host'], $headers->get('host'));
|
||||
$this->assertSame($headers_array['test'], $headers->get('test'));
|
||||
$buffer = Headers::marshall($headers);
|
||||
$headers_copy = Headers::unmarshall($buffer);
|
||||
$this->assertSame(2, $headers_copy->count());
|
||||
$this->assertSame($headers_array['host'], $headers_copy->get('host'));
|
||||
$this->assertSame($headers_array['test'], $headers_copy->get('test'));
|
||||
}
|
||||
|
||||
private function assertMessagesMatch($a, $b) {
|
||||
$this->assertSame($a->method(), $b->method());
|
||||
$this->assertSame($a->path(), $b->path());
|
||||
$this->assertSame($a->query(), $b->query());
|
||||
$this->assertSame($a->headers()->toArray(), $b->headers()->toArray());
|
||||
}
|
||||
|
||||
public function testRequestMarshalling() {
|
||||
$headers = [
|
||||
"host" => "s3.amazonaws.com",
|
||||
"test" => "this is a test header value"
|
||||
];
|
||||
$method = "GET";
|
||||
$path = "/index.php";
|
||||
$query = [];
|
||||
|
||||
$msg = new Request($method, $path, $query, $headers);
|
||||
$msg_buf = Request::marshall($msg);
|
||||
$msg_copy = Request::unmarshall($msg_buf);
|
||||
|
||||
$this->assertMessagesMatch($msg, $msg_copy);
|
||||
}
|
||||
|
||||
public function testRequestMarshallingWithQueryParams() {
|
||||
$headers = [
|
||||
"host" => "s3.amazonaws.com",
|
||||
"test" => "this is a test header value"
|
||||
];
|
||||
$method = "GET";
|
||||
$path = "/index.php";
|
||||
$query = [
|
||||
'request' => '1',
|
||||
'test' => 'true',
|
||||
'answer' => '42',
|
||||
'foo' => 'bar',
|
||||
];
|
||||
|
||||
$msg = new Request($method, $path, $query, $headers);
|
||||
$msg_buf = Request::marshall($msg);
|
||||
$msg_copy = Request::unmarshall($msg_buf);
|
||||
|
||||
$this->assertMessagesMatch($msg, $msg_copy);
|
||||
}
|
||||
|
||||
public function testResponseMarshalling() {
|
||||
$headers = [
|
||||
"content-length" => "42",
|
||||
"test" => "this is a test header value"
|
||||
];
|
||||
$method = "GET";
|
||||
$path = "/index.php";
|
||||
$query = [
|
||||
'response' => '1'
|
||||
];
|
||||
|
||||
$msg = new Response($method, $path, $query, $headers, 200);
|
||||
$msg_buf = Request::marshall($msg);
|
||||
$msg_copy = Request::unmarshall($msg_buf);
|
||||
|
||||
$this->assertMessagesMatch($msg, $msg_copy);
|
||||
}
|
||||
}
|
23
vendor/aws/aws-crt-php/tests/LogTest.php
vendored
Normal file
23
vendor/aws/aws-crt-php/tests/LogTest.php
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\Log;
|
||||
|
||||
require_once('common.inc');
|
||||
|
||||
class LogTest extends CrtTestCase {
|
||||
|
||||
public function testLogToStream() {
|
||||
$log_stream = fopen("php://memory", "r+");
|
||||
$this->assertNotNull($log_stream);
|
||||
Log::toStream($log_stream);
|
||||
Log::setLogLevel(Log::TRACE);
|
||||
Log::log(Log::TRACE, "THIS IS A TEST");
|
||||
$this->assertTrue(rewind($log_stream));
|
||||
$log_contents = stream_get_contents($log_stream, -1, 0);
|
||||
$this->assertStringEndsWith("THIS IS A TEST", trim($log_contents));
|
||||
Log::stop();
|
||||
}
|
||||
}
|
176
vendor/aws/aws-crt-php/tests/SigningTest.php
vendored
Normal file
176
vendor/aws/aws-crt-php/tests/SigningTest.php
vendored
Normal file
@@ -0,0 +1,176 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
|
||||
use AWS\CRT\Auth\SignatureType;
|
||||
use AWS\CRT\Auth\SigningAlgorithm;
|
||||
use AWS\CRT\Auth\SigningConfigAWS;
|
||||
use AWS\CRT\Auth\Signing;
|
||||
use AWS\CRT\Auth\Signable;
|
||||
use AWS\CRT\Auth\StaticCredentialsProvider;
|
||||
use AWS\CRT\HTTP\Request;
|
||||
|
||||
require_once('common.inc');
|
||||
|
||||
final class SigningTest extends CrtTestCase {
|
||||
|
||||
public function testConfigAWSLifetime() {
|
||||
$config = new SigningConfigAWS();
|
||||
$this->assertNotNull($config, "Failed to create default SigningConfigAWS");
|
||||
$config = null;
|
||||
}
|
||||
|
||||
public function testConfigAWSConstructionWithOptions() {
|
||||
$options = SigningConfigAWS::defaults();
|
||||
$options['service'] = 'CRT';
|
||||
$options['region'] = 'CRT';
|
||||
$config = new SigningConfigAWS($options);
|
||||
$this->assertNotNull($config, "Failed to create SigningConfigAWS with custom options");
|
||||
$config = null;
|
||||
}
|
||||
|
||||
public function testSignableFromHttpRequestLifetime() {
|
||||
$request = new Request('GET', '/');
|
||||
$signable = Signable::fromHttpRequest($request);
|
||||
$this->assertNotNull($signable, "Failed to create Signable from HTTP::Request");
|
||||
$signable = null;
|
||||
}
|
||||
|
||||
public function testSignableFromChunkLifetime() {
|
||||
$chunk = "THIS IS A TEST CHUNK IT CONTAINS MULTITUDES";
|
||||
$stream = fopen("php://memory", 'r+');
|
||||
fputs($stream, $chunk);
|
||||
rewind($stream);
|
||||
$signable = Signable::fromChunk($stream);
|
||||
$this->assertNotNull($signable, "Failed to create Signable from chunk stream");
|
||||
$signable = null;
|
||||
}
|
||||
|
||||
public function testSignableFromCanonicalRequestLifetime() {
|
||||
$canonical_request = "THIS IS A CANONICAL_REQUEST. IT IS DEEPLY CANONICAL";
|
||||
$signable = Signable::fromCanonicalRequest($canonical_request);
|
||||
$this->assertNotNull($signable, "Failed to create Signable from canonical request");
|
||||
$signable = null;
|
||||
}
|
||||
|
||||
const SIGV4TEST_ACCESS_KEY_ID = 'AKIDEXAMPLE';
|
||||
const SIGV4TEST_SECRET_ACCESS_KEY = 'wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY';
|
||||
const SIGV4TEST_SESSION_TOKEN = null;
|
||||
const SIGV4TEST_SERVICE = 'service';
|
||||
const SIGV4TEST_REGION = 'us-east-1';
|
||||
private static function SIGV4TEST_DATE() {
|
||||
return mktime(12, 36, 0, 8, 30, 2015);
|
||||
}
|
||||
|
||||
public function testShouldSignHeader() {
|
||||
$credentials_provider = new StaticCredentialsProvider([
|
||||
'access_key_id' => self::SIGV4TEST_ACCESS_KEY_ID,
|
||||
'secret_access_key' => self::SIGV4TEST_SECRET_ACCESS_KEY,
|
||||
'session_token' => self::SIGV4TEST_SESSION_TOKEN,
|
||||
]);
|
||||
$signing_config = new SigningConfigAWS([
|
||||
'algorithm' => SigningAlgorithm::SIGv4,
|
||||
'signature_type' => SignatureType::HTTP_REQUEST_HEADERS,
|
||||
'credentials_provider' => $credentials_provider,
|
||||
'region' => self::SIGV4TEST_REGION,
|
||||
'service' => self::SIGV4TEST_SERVICE,
|
||||
'date' => self::SIGV4TEST_DATE(),
|
||||
'should_sign_header' => function($header) {
|
||||
return strtolower($header) != 'x-do-not-sign';
|
||||
}
|
||||
]);
|
||||
$http_request = new Request('GET', '/', [], [
|
||||
'Host' => 'example.amazonaws.com',
|
||||
'X-Do-Not-Sign' => 'DO NOT SIGN THIS']);
|
||||
$this->assertNotNull($http_request, "Unable to create HttpRequest for signing");
|
||||
$signable = Signable::fromHttpRequest($http_request);
|
||||
$this->assertNotNull($signable, "Unable to create signable from HttpRequest");
|
||||
|
||||
Signing::signRequestAws(
|
||||
$signable, $signing_config,
|
||||
function($signing_result, $error_code) use (&$http_request) {
|
||||
$this->assertEquals(0, $error_code);
|
||||
$signing_result->applyToHttpRequest($http_request);
|
||||
}
|
||||
);
|
||||
|
||||
// This signature value is computed without the X-Do-Not-Sign header above
|
||||
$headers = $http_request->headers();
|
||||
$this->assertEquals(
|
||||
'AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5fa00fa31553b73ebf1942676e86291e8372ff2a2260956d9b8aae1d763fbf31',
|
||||
$headers->get('Authorization'));
|
||||
}
|
||||
|
||||
public function testSigv4HeaderSigning() {
|
||||
$credentials_provider = new StaticCredentialsProvider([
|
||||
'access_key_id' => self::SIGV4TEST_ACCESS_KEY_ID,
|
||||
'secret_access_key' => self::SIGV4TEST_SECRET_ACCESS_KEY,
|
||||
'session_token' => self::SIGV4TEST_SESSION_TOKEN,
|
||||
]);
|
||||
$signing_config = new SigningConfigAWS([
|
||||
'algorithm' => SigningAlgorithm::SIGv4,
|
||||
'signature_type' => SignatureType::HTTP_REQUEST_HEADERS,
|
||||
'credentials_provider' => $credentials_provider,
|
||||
'region' => self::SIGV4TEST_REGION,
|
||||
'service' => self::SIGV4TEST_SERVICE,
|
||||
'date' => self::SIGV4TEST_DATE(),
|
||||
]);
|
||||
$http_request = new Request('GET', '/', [], ['Host' => 'example.amazonaws.com']);
|
||||
$this->assertNotNull($http_request, "Unable to create HttpRequest for signing");
|
||||
$signable = Signable::fromHttpRequest($http_request);
|
||||
$this->assertNotNull($signable, "Unable to create signable from HttpRequest");
|
||||
|
||||
Signing::signRequestAws(
|
||||
$signable, $signing_config,
|
||||
function($signing_result, $error_code) use (&$http_request) {
|
||||
$this->assertEquals(0, $error_code);
|
||||
$signing_result->applyToHttpRequest($http_request);
|
||||
}
|
||||
);
|
||||
|
||||
$headers = $http_request->headers();
|
||||
$this->assertEquals(
|
||||
'AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5fa00fa31553b73ebf1942676e86291e8372ff2a2260956d9b8aae1d763fbf31',
|
||||
$headers->get('Authorization'));
|
||||
$this->assertEquals('20150830T123600Z', $headers->get('X-Amz-Date'));
|
||||
}
|
||||
|
||||
public function testSigV4aHeaderSigning() {
|
||||
$credentials_provider = new StaticCredentialsProvider([
|
||||
'access_key_id' => self::SIGV4TEST_ACCESS_KEY_ID,
|
||||
'secret_access_key' => self::SIGV4TEST_SECRET_ACCESS_KEY,
|
||||
'session_token' => self::SIGV4TEST_SESSION_TOKEN,
|
||||
]);
|
||||
$signing_config = new SigningConfigAWS([
|
||||
'algorithm' => SigningAlgorithm::SIGv4_ASYMMETRIC,
|
||||
'signature_type' => SignatureType::HTTP_REQUEST_HEADERS,
|
||||
'credentials_provider' => $credentials_provider,
|
||||
'region' => self::SIGV4TEST_REGION,
|
||||
'service' => self::SIGV4TEST_SERVICE,
|
||||
'date' => self::SIGV4TEST_DATE(),
|
||||
]);
|
||||
|
||||
$http_request = new Request('GET', '/', [], ['Host' => 'example.amazonaws.com']);
|
||||
$this->assertNotNull($http_request, "Unable to create HttpRequest for signing");
|
||||
$signable = Signable::fromHttpRequest($http_request);
|
||||
$this->assertNotNull($signable, "Unable to create signable from HttpRequest");
|
||||
|
||||
Signing::signRequestAws(
|
||||
$signable, $signing_config,
|
||||
function($signing_result, $error_code) use (&$http_request) {
|
||||
$this->assertEquals(0, $error_code);
|
||||
$signing_result->applyToHttpRequest($http_request);
|
||||
}
|
||||
);
|
||||
|
||||
$headers = $http_request->headers();
|
||||
$auth_header_value = $headers->get('Authorization');
|
||||
$this->assertNotNull($auth_header_value);
|
||||
$this->assertStringStartsWith(
|
||||
'AWS4-ECDSA-P256-SHA256 Credential=AKIDEXAMPLE/20150830/service/aws4_request, SignedHeaders=host;x-amz-date;x-amz-region-set, Signature=',
|
||||
$auth_header_value);
|
||||
$this->assertEquals('20150830T123600Z', $headers->get('X-Amz-Date'));
|
||||
}
|
||||
}
|
34
vendor/aws/aws-crt-php/tests/StreamTest.php
vendored
Normal file
34
vendor/aws/aws-crt-php/tests/StreamTest.php
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\IO\InputStream as InputStream;
|
||||
|
||||
require_once('common.inc');
|
||||
|
||||
final class InputStreamTest extends CrtTestCase {
|
||||
|
||||
const MEM_STREAM_CONTENTS = "THIS IS A TEST";
|
||||
|
||||
private function getMemoryStream() {
|
||||
$stream = fopen("php://memory", 'r+');
|
||||
fputs($stream, self::MEM_STREAM_CONTENTS);
|
||||
rewind($stream);
|
||||
return $stream;
|
||||
}
|
||||
|
||||
public function testMemoryStream() {
|
||||
$mem_stream = $this->getMemoryStream();
|
||||
$stream = new InputStream($mem_stream);
|
||||
$this->assertNotNull($stream, "Failed to create InputStream from PHP memory stream");
|
||||
$this->assertEquals(strlen(self::MEM_STREAM_CONTENTS), $stream->length(), "Stream length doesn't match source buffer");
|
||||
$this->assertEquals(self::MEM_STREAM_CONTENTS, $stream->read(), "Stream doesn't match source buffer");
|
||||
$this->assertTrue($stream->eof(), "Stream is not EOF after reading");
|
||||
$this->assertEquals(0, $stream->seek(0, InputStream::SEEK_BEGIN), "Unable to rewind stream");
|
||||
$this->assertFalse($stream->eof(), "Stream is EOF after rewinding");
|
||||
$this->assertEquals(0, $stream->seek(0, InputStream::SEEK_END), "Unable to seek to end of stream");
|
||||
$this->assertTrue($stream->eof(), "Stream is not EOF after seeking to end");
|
||||
$stream = null;
|
||||
}
|
||||
}
|
34
vendor/aws/aws-crt-php/tests/common.inc
vendored
Normal file
34
vendor/aws/aws-crt-php/tests/common.inc
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0.
|
||||
*/
|
||||
use AWS\CRT\CRT as CRT;
|
||||
|
||||
ini_set("memory_limit", "512M");
|
||||
|
||||
abstract class CrtTestCase extends PHPUnit_Framework_TestCase {
|
||||
private static $crt = null;
|
||||
public static function setUpBeforeClass() {
|
||||
self::$crt = new CRT();
|
||||
}
|
||||
|
||||
public static function tearDownAfterClass() {
|
||||
self::$crt = null;
|
||||
}
|
||||
|
||||
// Ensure that after every test there are no errors in the CRT itself
|
||||
protected function assertPostConditions() {
|
||||
if (CRT::last_error()) {
|
||||
$this->fail("Test left an error on the stack: " . CRT::error_name(CRT::last_error()));
|
||||
}
|
||||
}
|
||||
|
||||
// Shim missing calls in older versions of PHPUnit
|
||||
public function __call($name, $arguments) {
|
||||
// shim expectException -> setExpectedException for PHPUnit 4.8.x
|
||||
if ($name == 'expectException') {
|
||||
$this->setExpectedException($arguments[0]);
|
||||
}
|
||||
}
|
||||
}
|
7
vendor/aws/aws-sdk-php/.changes/3.22.10
vendored
7
vendor/aws/aws-sdk-php/.changes/3.22.10
vendored
@@ -1,7 +0,0 @@
|
||||
[
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "Ec2",
|
||||
"description": "New EC2 I3 instance type"
|
||||
}
|
||||
]
|
7
vendor/aws/aws-sdk-php/.changes/3.22.11
vendored
7
vendor/aws/aws-sdk-php/.changes/3.22.11
vendored
@@ -1,7 +0,0 @@
|
||||
[
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "ElasticsearchService",
|
||||
"description": "Added three new API calls to existing Amazon Elasticsearch service to expose Amazon Elasticsearch imposed limits to customers."
|
||||
}
|
||||
]
|
22
vendor/aws/aws-sdk-php/.changes/3.22.9
vendored
22
vendor/aws/aws-sdk-php/.changes/3.22.9
vendored
@@ -1,22 +0,0 @@
|
||||
[
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "ElasticBeanstalk",
|
||||
"description": "Elastic Beanstalk adds support for creating and managing custom platform."
|
||||
},
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "CloudDirectory",
|
||||
"description": "ListObjectAttributes documentation updated based on forum feedback"
|
||||
},
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "Route53",
|
||||
"description": "Added support for operations CreateVPCAssociationAuthorization and DeleteVPCAssociationAuthorization to throw a ConcurrentModification error when a conflicting modification occurs in parallel to the authorizations in place for a given hosted zone."
|
||||
},
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "GameLift",
|
||||
"description": "Allow developers to configure global queues for creating GameSessions. Allow PlayerData on PlayerSessions to store player-specific data."
|
||||
}
|
||||
]
|
27
vendor/aws/aws-sdk-php/.changes/3.23.0
vendored
27
vendor/aws/aws-sdk-php/.changes/3.23.0
vendored
@@ -1,27 +0,0 @@
|
||||
[
|
||||
{
|
||||
"type": "feature",
|
||||
"category": "Organizations",
|
||||
"description": "AWS Organizations is a web service that enables you to consolidate your multiple AWS accounts into an organization and centrally manage your accounts and their resources."
|
||||
},
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "DynamoDB",
|
||||
"description": "Time to Live (TTL) is a feature that allows you to define when items in a table expire and can be purged from the database, so that you don't have to track expired data and delete it manually. With TTL enabled on a DynamoDB table, you can set a timestamp for deletion on a per-item basis, allowing you to limit storage usage to only those records that are relevant."
|
||||
},
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "IAM",
|
||||
"description": "Added support for AWS Organizations service control policies (SCPs) to SimulatePrincipalPolicy operation. If there are SCPs associated with the simulated user's account, their effect on the result is captured in the OrganizationDecisionDetail element in the EvaluationResult."
|
||||
},
|
||||
{
|
||||
"type": "feature",
|
||||
"category": "MechanicalTurkRequesterService",
|
||||
"description": "Amazon Mechanical Turk is a web service that provides an on-demand, scalable, human workforce to complete jobs that humans can do better than computers, for example, recognizing objects in photos."
|
||||
},
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "DynamoDBStreams",
|
||||
"description": "Added support for TTL on a DynamoDB tables"
|
||||
}
|
||||
]
|
12
vendor/aws/aws-sdk-php/.changes/3.23.2
vendored
12
vendor/aws/aws-sdk-php/.changes/3.23.2
vendored
@@ -1,12 +0,0 @@
|
||||
[
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "OpsWorksCM",
|
||||
"description": "OpsWorks for Chef Automate has added a new field \"AssociatePublicIpAddress\" to the CreateServer request, \"CloudFormationStackArn\" to the Server model and \"TERMINATED\" server state."
|
||||
},
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "Budgets",
|
||||
"description": "When creating or editing a budget via the AWS Budgets API you can define notifications that are sent to subscribers when the actual or forecasted value for cost or usage exceeds the notificationThreshold associated with the budget notification object. Starting today, the maximum allowed value for the notificationThreshold was raised from 100 to 300. This change was made to give you more flexibility when setting budget notifications."
|
||||
}
|
||||
]
|
7
vendor/aws/aws-sdk-php/.changes/3.23.3
vendored
7
vendor/aws/aws-sdk-php/.changes/3.23.3
vendored
@@ -1,7 +0,0 @@
|
||||
[
|
||||
{
|
||||
"type": "api-change",
|
||||
"category": "RDS",
|
||||
"description": "Add support to using encrypted clusters as cross-region replication masters. Update CopyDBClusterSnapshot API to support encrypted cross region copy of Aurora cluster snapshots."
|
||||
}
|
||||
]
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user