summaryrefslogtreecommitdiff
path: root/vendor/aws/aws-crt-php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2023-10-20 16:44:35 +0300
committerAndrew Dolgov <[email protected]>2023-10-20 16:44:35 +0300
commit8bec661288b276c98bdb0e773e5f4d5275dc4c87 (patch)
tree8617ebe581c62fc46a7881aa61801ebce9d3c603 /vendor/aws/aws-crt-php
parent540438c2eb5452bacad30c247906bfa287f2da1d (diff)
update AWK SDKHEADmaster
Diffstat (limited to 'vendor/aws/aws-crt-php')
-rw-r--r--vendor/aws/aws-crt-php/.clang-format58
-rw-r--r--vendor/aws/aws-crt-php/.clang-format-ignore4
-rw-r--r--vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---bug-report.md36
-rw-r--r--vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---feature-request.md20
-rw-r--r--vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---questions-help.md23
-rw-r--r--vendor/aws/aws-crt-php/.github/PULL_REQUEST_TEMPLATE.md6
-rw-r--r--vendor/aws/aws-crt-php/.github/workflows/ci.yml145
-rw-r--r--vendor/aws/aws-crt-php/.github/workflows/lint.yml29
-rw-r--r--vendor/aws/aws-crt-php/.github/workflows/stale_issue.yml46
-rw-r--r--vendor/aws/aws-crt-php/.gitignore210
-rw-r--r--vendor/aws/aws-crt-php/.gitmodules3
-rw-r--r--vendor/aws/aws-crt-php/CONTRIBUTING.md61
-rw-r--r--vendor/aws/aws-crt-php/Makefile.frag72
-rw-r--r--vendor/aws/aws-crt-php/Makefile.frag.w3235
-rw-r--r--vendor/aws/aws-crt-php/README.md91
-rw-r--r--vendor/aws/aws-crt-php/builder.json37
-rw-r--r--vendor/aws/aws-crt-php/composer.json15
-rw-r--r--vendor/aws/aws-crt-php/config.m430
-rw-r--r--vendor/aws/aws-crt-php/config.w3213
-rw-r--r--vendor/aws/aws-crt-php/ext/.gitignore2
-rw-r--r--vendor/aws/aws-crt-php/ext/awscrt.c17
-rw-r--r--vendor/aws/aws-crt-php/ext/awscrt.stub.php88
-rw-r--r--vendor/aws/aws-crt-php/ext/awscrt_arginfo.h413
-rw-r--r--vendor/aws/aws-crt-php/ext/crc.c32
-rw-r--r--vendor/aws/aws-crt-php/ext/credentials.c154
-rw-r--r--vendor/aws/aws-crt-php/ext/crt.c314
-rw-r--r--vendor/aws/aws-crt-php/ext/event_loop.c48
-rw-r--r--vendor/aws/aws-crt-php/ext/http.c36
-rw-r--r--vendor/aws/aws-crt-php/ext/logging.c65
-rw-r--r--vendor/aws/aws-crt-php/ext/php_aws_crt.h171
-rw-r--r--vendor/aws/aws-crt-php/ext/php_util.c33
-rw-r--r--vendor/aws/aws-crt-php/ext/signing.c374
-rw-r--r--vendor/aws/aws-crt-php/ext/stream.c148
-rwxr-xr-xvendor/aws/aws-crt-php/format-check.sh24
-rw-r--r--vendor/aws/aws-crt-php/gen_api.php24
-rwxr-xr-xvendor/aws/aws-crt-php/gen_stub.php1998
-rw-r--r--vendor/aws/aws-crt-php/package.xml-template_post19
-rw-r--r--vendor/aws/aws-crt-php/package.xml-template_pre24
-rw-r--r--vendor/aws/aws-crt-php/php-win.ini2
-rw-r--r--vendor/aws/aws-crt-php/php.ini1
-rwxr-xr-xvendor/aws/aws-crt-php/prepare_package_xml.sh144
-rwxr-xr-xvendor/aws/aws-crt-php/prepare_release.sh31
-rwxr-xr-xvendor/aws/aws-crt-php/run_tests18
-rw-r--r--vendor/aws/aws-crt-php/run_tests.bat4
-rw-r--r--vendor/aws/aws-crt-php/src/.gitignore3
-rw-r--r--vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php2
-rw-r--r--vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php3
-rw-r--r--vendor/aws/aws-crt-php/tests/000_CoreTest.php22
-rw-r--r--vendor/aws/aws-crt-php/tests/CrcTest.php90
-rw-r--r--vendor/aws/aws-crt-php/tests/CredentialsTest.php46
-rw-r--r--vendor/aws/aws-crt-php/tests/ErrorTest.php21
-rw-r--r--vendor/aws/aws-crt-php/tests/EventLoopGroupTest.php25
-rw-r--r--vendor/aws/aws-crt-php/tests/HttpMessageTest.php95
-rw-r--r--vendor/aws/aws-crt-php/tests/LogTest.php23
-rw-r--r--vendor/aws/aws-crt-php/tests/SigningTest.php176
-rw-r--r--vendor/aws/aws-crt-php/tests/StreamTest.php34
-rw-r--r--vendor/aws/aws-crt-php/tests/common.inc34
57 files changed, 75 insertions, 5617 deletions
diff --git a/vendor/aws/aws-crt-php/.clang-format b/vendor/aws/aws-crt-php/.clang-format
deleted file mode 100644
index f10704c..0000000
--- a/vendor/aws/aws-crt-php/.clang-format
+++ /dev/null
@@ -1,58 +0,0 @@
----
-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
-...
-
diff --git a/vendor/aws/aws-crt-php/.clang-format-ignore b/vendor/aws/aws-crt-php/.clang-format-ignore
deleted file mode 100644
index 65c5a2b..0000000
--- a/vendor/aws/aws-crt-php/.clang-format-ignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# ignore generated files
-ext/api.h
-ext/*_arginfo.h
-src/api.h
diff --git a/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---bug-report.md b/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---bug-report.md
deleted file mode 100644
index 4e6c128..0000000
--- a/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---bug-report.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-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.
diff --git a/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---feature-request.md b/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---feature-request.md
deleted file mode 100644
index 8b6a0e1..0000000
--- a/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---feature-request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-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. \ No newline at end of file
diff --git a/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---questions-help.md b/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---questions-help.md
deleted file mode 100644
index 7284b7c..0000000
--- a/vendor/aws/aws-crt-php/.github/ISSUE_TEMPLATE/---questions-help.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-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*
-
diff --git a/vendor/aws/aws-crt-php/.github/PULL_REQUEST_TEMPLATE.md b/vendor/aws/aws-crt-php/.github/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644
index ab40d21..0000000
--- a/vendor/aws/aws-crt-php/.github/PULL_REQUEST_TEMPLATE.md
+++ /dev/null
@@ -1,6 +0,0 @@
-*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.
diff --git a/vendor/aws/aws-crt-php/.github/workflows/ci.yml b/vendor/aws/aws-crt-php/.github/workflows/ci.yml
deleted file mode 100644
index 6a011db..0000000
--- a/vendor/aws/aws-crt-php/.github/workflows/ci.yml
+++ /dev/null
@@ -1,145 +0,0 @@
-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
diff --git a/vendor/aws/aws-crt-php/.github/workflows/lint.yml b/vendor/aws/aws-crt-php/.github/workflows/lint.yml
deleted file mode 100644
index 5aa3ebd..0000000
--- a/vendor/aws/aws-crt-php/.github/workflows/lint.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-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/[email protected]
- 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
diff --git a/vendor/aws/aws-crt-php/.github/workflows/stale_issue.yml b/vendor/aws/aws-crt-php/.github/workflows/stale_issue.yml
deleted file mode 100644
index b07016a..0000000
--- a/vendor/aws/aws-crt-php/.github/workflows/stale_issue.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-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
diff --git a/vendor/aws/aws-crt-php/.gitignore b/vendor/aws/aws-crt-php/.gitignore
deleted file mode 100644
index 7b7b8bf..0000000
--- a/vendor/aws/aws-crt-php/.gitignore
+++ /dev/null
@@ -1,210 +0,0 @@
-
-# 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
diff --git a/vendor/aws/aws-crt-php/.gitmodules b/vendor/aws/aws-crt-php/.gitmodules
deleted file mode 100644
index bce5a6a..0000000
--- a/vendor/aws/aws-crt-php/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "crt/aws-crt-ffi"]
- path = crt/aws-crt-ffi
- url = https://github.com/awslabs/aws-crt-ffi.git
diff --git a/vendor/aws/aws-crt-php/CONTRIBUTING.md b/vendor/aws/aws-crt-php/CONTRIBUTING.md
deleted file mode 100644
index 914e074..0000000
--- a/vendor/aws/aws-crt-php/CONTRIBUTING.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# 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
[email protected] 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.
diff --git a/vendor/aws/aws-crt-php/Makefile.frag b/vendor/aws/aws-crt-php/Makefile.frag
deleted file mode 100644
index 3eda4bc..0000000
--- a/vendor/aws/aws-crt-php/Makefile.frag
+++ /dev/null
@@ -1,72 +0,0 @@
-
-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
diff --git a/vendor/aws/aws-crt-php/Makefile.frag.w32 b/vendor/aws/aws-crt-php/Makefile.frag.w32
deleted file mode 100644
index 548ea4d..0000000
--- a/vendor/aws/aws-crt-php/Makefile.frag.w32
+++ /dev/null
@@ -1,35 +0,0 @@
-
-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
diff --git a/vendor/aws/aws-crt-php/README.md b/vendor/aws/aws-crt-php/README.md
index d942eb0..6cb323d 100644
--- a/vendor/aws/aws-crt-php/README.md
+++ b/vendor/aws/aws-crt-php/README.md
@@ -1,60 +1,90 @@
# 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
+* GCC 4.4+, clang 3.8+ on UNIX, Visual Studio build tools on Windows
* Tests require [Composer](https://getcomposer.org)
-## Building on UNIX
+## Installing with Composer and PECL
+
+The package has two different package published to [composer](https://packagist.org/packages/aws/aws-crt-php) and [PECL](https://pecl.php.net/package/awscrt).
+
+On UNIX, you can get the package from package manager or build from source:
+
+```
+pecl install awscrt
+composer require aws/aws-crt-php
+```
+
+On Windows, you need to build from source as instruction written below for the native extension `php_awscrt.dll` . And, follow https://www.php.net/manual/en/install.pecl.windows.php#install.pecl.windows.loading to load extension. After that:
+
+```
+composer require aws/aws-crt-php
+```
+
+## Building from Github source
+
```sh
$ git clone --recursive https://github.com/awslabs/aws-crt-php.git
$ cd aws-crt-php
$ phpize
$ ./configure
-$ make && make test
+$ make
+$ ./dev-scripts/run_tests.sh
```
## 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
+
+### Requirements for Windows
+
+* Ensure you have the [windows PHP SDK](https://github.com/microsoft/php-sdk-binary-tools) (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) and it works well on your machine.
+
+* Ensure you have "Development package (SDK to develop PHP extensions)" and PHP available from your system path. You can download them from https://windows.php.net/download/. You can check if they are available by running `phpize -v` and `php -v`
+
+### Instructions
+
+From Command Prompt (not powershell). The instruction is based on Visual Studio 2019 on 64bit Windows.
```bat
-""" From VS2017 Command Prompt
-> C:\php-sdk\phpsdk-vc15-x64.bat
+> git clone --recursive https://github.com/awslabs/aws-crt-php.git
+> git clone https://github.com/microsoft/php-sdk-binary-tools.git C:\php-sdk
+> C:\php-sdk\phpsdk-vs16-x64.bat
C:\php-sdk\
-$ phpsdk_buildtree php-<version>
+$ cd <your-path-to-aws-crt-php>
-C:\php-sdk\php-<version>\vc15\x64\
-$ git clone https://github.com/php/php-src.git && cd php-src
+<your-path-to-aws-crt-php>\
+$ phpize
-""" 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>
+# --with-prefix only required when your php runtime in system path is different than the runtime you wish to use.
+<your-path-to-aws-crt-php>\
+$ configure --enable-awscrt=shared --with-prefix=<your-path-to-php-prefix>
-C:\php-sdk\php-<version>\vc15\x64\php-src
-$ git clone --recursive https://github.com/awslabs/aws-crt-php.git ..\pecl\awscrt
+<your-path-to-aws-crt-php>\
+$ nmake
-C:\php-sdk\php-<version>\vc15\x64\php-src
-$ buildconf
+<your-path-to-aws-crt-php>\
+$ nmake generate-php-ini
-C:\php-sdk\php-<version>\vc15\x64\php-src
-$ configure --enable-cli --with-openssl --enable-awscrt=shared
+# check .\php-win.ini, it now has the full path to php_awscrt.dll that you can manually load to your php runtime, or you can run the following command to run tests and load the required native extension for awscrt.
+<your-path-to-aws-crt-php>\
+$ .\dev-scripts\run_tests.bat <your-path-to-php-binary>
+```
-C:\php-sdk\php-<version>\vc15\x64\php-src
-$ nmake
+Note: for VS2017, Cmake will default to build for Win32, refer to [here](https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2015%202017.html). If you are building for x64 php, you can set environment variable as follow to let cmake pick x64 compiler.
-C:\php-sdk\php-<version>\vc15\x64\php-src
-$ nmake test-awscrt
+```bat
+set CMAKE_GENERATOR=Visual Studio 15 2017
+set CMAKE_GENERATOR_PLATFORM=x64
```
## 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.
+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
@@ -68,13 +98,20 @@ $ ./configure
$ make CMAKE_BUILD_TYPE=Debug
```
-Ensure that the php you launch from your debugger is the result of `which php`, not just
+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.
+## Known OpenSSL related issue (Unix only)
+
+* When your php loads a different version of openssl than your system openssl version, awscrt may fail to load or weirdly crash. You can find the openssl version php linked via: `php -i | grep 'OpenSSL'`, and awscrt linked from the build log, which will be `Found OpenSSL: * (found version *)`
+
+The easiest workaround to those issue is to build from source and get aws-lc for awscrt to depend on instead.
+TO do that, same instructions as [here](#building-from-github-source), but use `USE_OPENSSL=OFF make` instead of `make`
+
## License
This project is licensed under the Apache-2.0 License.
diff --git a/vendor/aws/aws-crt-php/builder.json b/vendor/aws/aws-crt-php/builder.json
deleted file mode 100644
index 2c6f0be..0000000
--- a/vendor/aws/aws-crt-php/builder.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "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"]
- ]
-}
diff --git a/vendor/aws/aws-crt-php/composer.json b/vendor/aws/aws-crt-php/composer.json
index 4b96140..13e7ac6 100644
--- a/vendor/aws/aws-crt-php/composer.json
+++ b/vendor/aws/aws-crt-php/composer.json
@@ -1,6 +1,6 @@
{
"name": "aws/aws-crt-php",
- "homepage": "http://aws.amazon.com/sdkforphp",
+ "homepage": "https://github.com/awslabs/aws-crt-php",
"description": "AWS Common Runtime for PHP",
"keywords": ["aws","amazon","sdk","crt"],
"type": "library",
@@ -10,25 +10,26 @@
"email": "[email protected]"
}
],
- "config": {
- "platform": {"php": "5.6"}
- },
"minimum-stability": "alpha",
"require": {
"php": ">=5.5"
},
"require-dev": {
- "phpunit/phpunit":"^4.8.35|^5.4.3"
+ "phpunit/phpunit":"^4.8.35||^5.6.3||^9.5",
+ "yoast/phpunit-polyfills": "^1.0"
},
"autoload": {
"classmap": [
"src/"
]
},
+ "suggest": {
+ "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality."
+ },
"scripts": {
- "test": "./run_tests",
+ "test": "./dev-scripts/run_tests.sh",
"test-extension": "@test",
- "test-win": "run_tests"
+ "test-win": ".\\dev-scripts\\run_tests.bat"
},
"license": "Apache-2.0"
}
diff --git a/vendor/aws/aws-crt-php/config.m4 b/vendor/aws/aws-crt-php/config.m4
deleted file mode 100644
index c65e3a8..0000000
--- a/vendor/aws/aws-crt-php/config.m4
+++ /dev/null
@@ -1,30 +0,0 @@
-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
diff --git a/vendor/aws/aws-crt-php/config.w32 b/vendor/aws/aws-crt-php/config.w32
deleted file mode 100644
index ed08402..0000000
--- a/vendor/aws/aws-crt-php/config.w32
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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);
-}
diff --git a/vendor/aws/aws-crt-php/ext/.gitignore b/vendor/aws/aws-crt-php/ext/.gitignore
deleted file mode 100644
index 2973c97..0000000
--- a/vendor/aws/aws-crt-php/ext/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.so
-api.h
diff --git a/vendor/aws/aws-crt-php/ext/awscrt.c b/vendor/aws/aws-crt-php/ext/awscrt.c
deleted file mode 100644
index 0ee0f74..0000000
--- a/vendor/aws/aws-crt-php/ext/awscrt.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * 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"
diff --git a/vendor/aws/aws-crt-php/ext/awscrt.stub.php b/vendor/aws/aws-crt-php/ext/awscrt.stub.php
deleted file mode 100644
index 5a8d837..0000000
--- a/vendor/aws/aws-crt-php/ext/awscrt.stub.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?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 {}
diff --git a/vendor/aws/aws-crt-php/ext/awscrt_arginfo.h b/vendor/aws/aws-crt-php/ext/awscrt_arginfo.h
deleted file mode 100644
index 53e2559..0000000
--- a/vendor/aws/aws-crt-php/ext/awscrt_arginfo.h
+++ /dev/null
@@ -1,413 +0,0 @@
-/* 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
-};
diff --git a/vendor/aws/aws-crt-php/ext/crc.c b/vendor/aws/aws-crt-php/ext/crc.c
deleted file mode 100644
index 8e520f8..0000000
--- a/vendor/aws/aws-crt-php/ext/crc.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * 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));
-}
diff --git a/vendor/aws/aws-crt-php/ext/credentials.c b/vendor/aws/aws-crt-php/ext/credentials.c
deleted file mode 100644
index f361f08..0000000
--- a/vendor/aws/aws-crt-php/ext/credentials.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * 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);
-}
diff --git a/vendor/aws/aws-crt-php/ext/crt.c b/vendor/aws/aws-crt-php/ext/crt.c
deleted file mode 100644
index b71dd79..0000000
--- a/vendor/aws/aws-crt-php/ext/crt.c
+++ /dev/null
@@ -1,314 +0,0 @@
-
-/**
- * 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));
-}
diff --git a/vendor/aws/aws-crt-php/ext/event_loop.c b/vendor/aws/aws-crt-php/ext/event_loop.c
deleted file mode 100644
index cd8d42f..0000000
--- a/vendor/aws/aws-crt-php/ext/event_loop.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * 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);
-}
diff --git a/vendor/aws/aws-crt-php/ext/http.c b/vendor/aws/aws-crt-php/ext/http.c
deleted file mode 100644
index 3f429ae..0000000
--- a/vendor/aws/aws-crt-php/ext/http.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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);
-}
diff --git a/vendor/aws/aws-crt-php/ext/logging.c b/vendor/aws/aws-crt-php/ext/logging.c
deleted file mode 100644
index 15fdade..0000000
--- a/vendor/aws/aws-crt-php/ext/logging.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * 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);
-}
diff --git a/vendor/aws/aws-crt-php/ext/php_aws_crt.h b/vendor/aws/aws-crt-php/ext/php_aws_crt.h
deleted file mode 100644
index 9393a0b..0000000
--- a/vendor/aws/aws-crt-php/ext/php_aws_crt.h
+++ /dev/null
@@ -1,171 +0,0 @@
-
-#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 */
diff --git a/vendor/aws/aws-crt-php/ext/php_util.c b/vendor/aws/aws-crt-php/ext/php_util.c
deleted file mode 100644
index 8e7bc30..0000000
--- a/vendor/aws/aws-crt-php/ext/php_util.c
+++ /dev/null
@@ -1,33 +0,0 @@
-
-/**
- * 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
-}
diff --git a/vendor/aws/aws-crt-php/ext/signing.c b/vendor/aws/aws-crt-php/ext/signing.c
deleted file mode 100644
index 69da25a..0000000
--- a/vendor/aws/aws-crt-php/ext/signing.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/**
- * 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, &region, &region_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);
-}
diff --git a/vendor/aws/aws-crt-php/ext/stream.c b/vendor/aws/aws-crt-php/ext/stream.c
deleted file mode 100644
index 414146b..0000000
--- a/vendor/aws/aws-crt-php/ext/stream.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * 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);
-}
diff --git a/vendor/aws/aws-crt-php/format-check.sh b/vendor/aws/aws-crt-php/format-check.sh
deleted file mode 100755
index eb2f524..0000000
--- a/vendor/aws/aws-crt-php/format-check.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/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
diff --git a/vendor/aws/aws-crt-php/gen_api.php b/vendor/aws/aws-crt-php/gen_api.php
deleted file mode 100644
index d534434..0000000
--- a/vendor/aws/aws-crt-php/gen_api.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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);
-}
diff --git a/vendor/aws/aws-crt-php/gen_stub.php b/vendor/aws/aws-crt-php/gen_stub.php
deleted file mode 100755
index 4967032..0000000
--- a/vendor/aws/aws-crt-php/gen_stub.php
+++ /dev/null
@@ -1,1998 +0,0 @@
-#!/usr/bin/env php
-<?php declare(strict_types=1);
-
-// This is a copy of the gen_stub.php from the PHP build scripts, modified to
-// generate macros that we can abstract across versions of PHP
-
-use PhpParser\Comment\Doc as DocComment;
-use PhpParser\Node;
-use PhpParser\Node\Expr;
-use PhpParser\Node\Name;
-use PhpParser\Node\Stmt;
-use PhpParser\Node\Stmt\Class_;
-use PhpParser\PrettyPrinter\Standard;
-use PhpParser\PrettyPrinterAbstract;
-
-error_reporting(E_ALL);
-
-/**
- * @return FileInfo[]
- */
-function processDirectory(string $dir, Context $context): array {
- $fileInfos = [];
-
- $it = new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($dir),
- RecursiveIteratorIterator::LEAVES_ONLY
- );
- foreach ($it as $file) {
- $pathName = $file->getPathName();
- if (preg_match('/\.stub\.php$/', $pathName)) {
- $fileInfo = processStubFile($pathName, $context);
- if ($fileInfo) {
- $fileInfos[] = $fileInfo;
- }
- }
- }
-
- return $fileInfos;
-}
-
-function processStubFile(string $stubFile, Context $context): ?FileInfo {
- try {
- if (!file_exists($stubFile)) {
- throw new Exception("File $stubFile does not exist");
- }
-
- $arginfoFile = str_replace('.stub.php', '_arginfo.h', $stubFile);
- $legacyFile = str_replace('.stub.php', '_legacy_arginfo.h', $stubFile);
-
- $stubCode = file_get_contents($stubFile);
- $stubHash = computeStubHash($stubCode);
- $oldStubHash = extractStubHash($arginfoFile);
- if ($stubHash === $oldStubHash && !$context->forceParse) {
- /* Stub file did not change, do not regenerate. */
- return null;
- }
-
- initPhpParser();
- $fileInfo = parseStubFile($stubCode);
- $arginfoCode = generateArgInfoCode($fileInfo, $stubHash, $context->minimalArgInfo);
- if (($context->forceRegeneration || $stubHash !== $oldStubHash) && file_put_contents($arginfoFile, $arginfoCode)) {
- echo "Saved $arginfoFile\n";
- }
-
- if ($fileInfo->generateLegacyArginfo) {
- foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
- $funcInfo->discardInfoForOldPhpVersions();
- }
- $arginfoCode = generateArgInfoCode($fileInfo, $stubHash, $context->minimalArgInfo);
- if (($context->forceRegeneration || $stubHash !== $oldStubHash) && file_put_contents($legacyFile, $arginfoCode)) {
- echo "Saved $legacyFile\n";
- }
- }
-
- return $fileInfo;
- } catch (Exception $e) {
- echo "In $stubFile:\n{$e->getMessage()}\n";
- exit(1);
- }
-}
-
-function computeStubHash(string $stubCode): string {
- return sha1(str_replace("\r\n", "\n", $stubCode));
-}
-
-function extractStubHash(string $arginfoFile): ?string {
- if (!file_exists($arginfoFile)) {
- return null;
- }
-
- $arginfoCode = file_get_contents($arginfoFile);
- if (!preg_match('/\* Stub hash: ([0-9a-f]+) \*/', $arginfoCode, $matches)) {
- return null;
- }
-
- return $matches[1];
-}
-
-class Context {
- /** @var bool */
- public $forceParse = false;
- /** @var bool */
- public $forceRegeneration = false;
- /** @var bool */
- public $minimalArgInfo = false;
-}
-
-class SimpleType {
- /** @var string */
- public $name;
- /** @var bool */
- public $isBuiltin;
-
- public function __construct(string $name, bool $isBuiltin) {
- $this->name = $name;
- $this->isBuiltin = $isBuiltin;
- }
-
- public static function fromNode(Node $node): SimpleType {
- if ($node instanceof Node\Name) {
- if ($node->toLowerString() === 'static') {
- // PHP internally considers "static" a builtin type.
- return new SimpleType($node->toString(), true);
- }
-
- assert($node->isFullyQualified());
- return new SimpleType($node->toString(), false);
- }
- if ($node instanceof Node\Identifier) {
- return new SimpleType($node->toString(), true);
- }
- throw new Exception("Unexpected node type");
- }
-
- public static function fromPhpDoc(string $type): SimpleType
- {
- switch (strtolower($type)) {
- case "void":
- case "null":
- case "false":
- case "bool":
- case "int":
- case "float":
- case "string":
- case "array":
- case "iterable":
- case "object":
- case "resource":
- case "mixed":
- case "self":
- case "static":
- return new SimpleType(strtolower($type), true);
- }
-
- if (strpos($type, "[]") !== false) {
- return new SimpleType("array", true);
- }
-
- return new SimpleType($type, false);
- }
-
- public static function null(): SimpleType
- {
- return new SimpleType("null", true);
- }
-
- public static function void(): SimpleType
- {
- return new SimpleType("void", true);
- }
-
- public function isNull(): bool {
- return $this->isBuiltin && $this->name === 'null';
- }
-
- public function toTypeCode(): string {
- assert($this->isBuiltin);
- switch (strtolower($this->name)) {
- case "bool":
- return "_IS_BOOL";
- case "int":
- return "IS_LONG";
- case "float":
- return "IS_DOUBLE";
- case "string":
- return "IS_STRING";
- case "array":
- return "IS_ARRAY";
- case "object":
- return "IS_OBJECT";
- case "void":
- return "IS_VOID";
- case "callable":
- return "IS_CALLABLE";
- case "iterable":
- return "IS_ITERABLE";
- case "mixed":
- return "IS_MIXED";
- case "static":
- return "IS_STATIC";
- default:
- throw new Exception("Not implemented: $this->name");
- }
- }
-
- public function toTypeMask() {
- assert($this->isBuiltin);
- switch (strtolower($this->name)) {
- case "null":
- return "MAY_BE_NULL";
- case "false":
- return "MAY_BE_FALSE";
- case "bool":
- return "MAY_BE_BOOL";
- case "int":
- return "MAY_BE_LONG";
- case "float":
- return "MAY_BE_DOUBLE";
- case "string":
- return "MAY_BE_STRING";
- case "array":
- return "MAY_BE_ARRAY";
- case "object":
- return "MAY_BE_OBJECT";
- case "callable":
- return "MAY_BE_CALLABLE";
- case "mixed":
- return "MAY_BE_ANY";
- case "static":
- return "MAY_BE_STATIC";
- default:
- throw new Exception("Not implemented: $this->name");
- }
- }
-
- public function toEscapedName(): string {
- return str_replace('\\', '\\\\', $this->name);
- }
-
- public function equals(SimpleType $other) {
- return $this->name === $other->name
- && $this->isBuiltin === $other->isBuiltin;
- }
-}
-
-class Type {
- /** @var SimpleType[] $types */
- public $types;
-
- public function __construct(array $types) {
- $this->types = $types;
- }
-
- public static function fromNode(Node $node): Type {
- if ($node instanceof Node\UnionType) {
- return new Type(array_map(['SimpleType', 'fromNode'], $node->types));
- }
- if ($node instanceof Node\NullableType) {
- return new Type([
- SimpleType::fromNode($node->type),
- SimpleType::null(),
- ]);
- }
- return new Type([SimpleType::fromNode($node)]);
- }
-
- public static function fromPhpDoc(string $phpDocType) {
- $types = explode("|", $phpDocType);
-
- $simpleTypes = [];
- foreach ($types as $type) {
- $simpleTypes[] = SimpleType::fromPhpDoc($type);
- }
-
- return new Type($simpleTypes);
- }
-
- public function isNullable(): bool {
- foreach ($this->types as $type) {
- if ($type->isNull()) {
- return true;
- }
- }
- return false;
- }
-
- public function getWithoutNull(): Type {
- return new Type(array_filter($this->types, function(SimpleType $type) {
- return !$type->isNull();
- }));
- }
-
- public function tryToSimpleType(): ?SimpleType {
- $withoutNull = $this->getWithoutNull();
- if (count($withoutNull->types) === 1) {
- return $withoutNull->types[0];
- }
- return null;
- }
-
- public function toArginfoType(): ?ArginfoType {
- $classTypes = [];
- $builtinTypes = [];
- foreach ($this->types as $type) {
- if ($type->isBuiltin) {
- $builtinTypes[] = $type;
- } else {
- $classTypes[] = $type;
- }
- }
- return new ArginfoType($classTypes, $builtinTypes);
- }
-
- public static function equals(?Type $a, ?Type $b): bool {
- if ($a === null || $b === null) {
- return $a === $b;
- }
-
- if (count($a->types) !== count($b->types)) {
- return false;
- }
-
- for ($i = 0; $i < count($a->types); $i++) {
- if (!$a->types[$i]->equals($b->types[$i])) {
- return false;
- }
- }
-
- return true;
- }
-
- public function __toString() {
- if ($this->types === null) {
- return 'mixed';
- }
-
- return implode('|', array_map(
- function ($type) { return $type->name; },
- $this->types)
- );
- }
-}
-
-class ArginfoType {
- /** @var ClassType[] $classTypes */
- public $classTypes;
-
- /** @var SimpleType[] $builtinTypes */
- private $builtinTypes;
-
- public function __construct(array $classTypes, array $builtinTypes) {
- $this->classTypes = $classTypes;
- $this->builtinTypes = $builtinTypes;
- }
-
- public function hasClassType(): bool {
- return !empty($this->classTypes);
- }
-
- public function toClassTypeString(): string {
- return implode('|', array_map(function(SimpleType $type) {
- return $type->toEscapedName();
- }, $this->classTypes));
- }
-
- public function toTypeMask(): string {
- if (empty($this->builtinTypes)) {
- return '0';
- }
- return implode('|', array_map(function(SimpleType $type) {
- return $type->toTypeMask();
- }, $this->builtinTypes));
- }
-}
-
-class ArgInfo {
- const SEND_BY_VAL = 0;
- const SEND_BY_REF = 1;
- const SEND_PREFER_REF = 2;
-
- /** @var string */
- public $name;
- /** @var int */
- public $sendBy;
- /** @var bool */
- public $isVariadic;
- /** @var Type|null */
- public $type;
- /** @var Type|null */
- public $phpDocType;
- /** @var string|null */
- public $defaultValue;
-
- public function __construct(string $name, int $sendBy, bool $isVariadic, ?Type $type, ?Type $phpDocType, ?string $defaultValue) {
- $this->name = $name;
- $this->sendBy = $sendBy;
- $this->isVariadic = $isVariadic;
- $this->type = $type;
- $this->phpDocType = $phpDocType;
- $this->defaultValue = $defaultValue;
- }
-
- public function equals(ArgInfo $other): bool {
- return $this->name === $other->name
- && $this->sendBy === $other->sendBy
- && $this->isVariadic === $other->isVariadic
- && Type::equals($this->type, $other->type)
- && $this->defaultValue === $other->defaultValue;
- }
-
- public function getSendByString(): string {
- switch ($this->sendBy) {
- case self::SEND_BY_VAL:
- return "0";
- case self::SEND_BY_REF:
- return "1";
- case self::SEND_PREFER_REF:
- return "ZEND_SEND_PREFER_REF";
- }
- throw new Exception("Invalid sendBy value");
- }
-
- public function getMethodSynopsisType(): Type {
- if ($this->type) {
- return $this->type;
- }
-
- if ($this->phpDocType) {
- return $this->phpDocType;
- }
-
- throw new Exception("A parameter must have a type");
- }
-
- public function hasProperDefaultValue(): bool {
- return $this->defaultValue !== null && $this->defaultValue !== "UNKNOWN";
- }
-
- public function getDefaultValueAsArginfoString(): string {
- if ($this->hasProperDefaultValue()) {
- return '"' . addslashes($this->defaultValue) . '"';
- }
-
- return "NULL";
- }
-
- public function getDefaultValueAsMethodSynopsisString(): ?string {
- if ($this->defaultValue === null) {
- return null;
- }
-
- switch ($this->defaultValue) {
- case 'UNKNOWN':
- return null;
- case 'false':
- case 'true':
- case 'null':
- return "&{$this->defaultValue};";
- }
-
- return $this->defaultValue;
- }
-}
-
-interface FunctionOrMethodName {
- public function getDeclaration(): string;
- public function getArgInfoName(): string;
- public function getMethodSynopsisFilename(): string;
- public function __toString(): string;
- public function isMethod(): bool;
- public function isConstructor(): bool;
- public function isDestructor(): bool;
-}
-
-class FunctionName implements FunctionOrMethodName {
- /** @var Name */
- private $name;
-
- public function __construct(Name $name) {
- $this->name = $name;
- }
-
- public function getNamespace(): ?string {
- if ($this->name->isQualified()) {
- return $this->name->slice(0, -1)->toString();
- }
- return null;
- }
-
- public function getNonNamespacedName(): string {
- if ($this->name->isQualified()) {
- throw new Exception("Namespaced name not supported here");
- }
- return $this->name->toString();
- }
-
- public function getDeclarationName(): string {
- return $this->name->getLast();
- }
-
- public function getDeclaration(): string {
- return "ZEND_FUNCTION({$this->getDeclarationName()});\n";
- }
-
- public function getArgInfoName(): string {
- $underscoreName = implode('_', $this->name->parts);
- return "arginfo_$underscoreName";
- }
-
- public function getMethodSynopsisFilename(): string {
- return implode('_', $this->name->parts);
- }
-
- public function __toString(): string {
- return $this->name->toString();
- }
-
- public function isMethod(): bool {
- return false;
- }
-
- public function isConstructor(): bool {
- return false;
- }
-
- public function isDestructor(): bool {
- return false;
- }
-}
-
-class MethodName implements FunctionOrMethodName {
- /** @var Name */
- private $className;
- /** @var string */
- public $methodName;
-
- public function __construct(Name $className, string $methodName) {
- $this->className = $className;
- $this->methodName = $methodName;
- }
-
- public function getDeclarationClassName(): string {
- return implode('_', $this->className->parts);
- }
-
- public function getDeclaration(): string {
- return "ZEND_METHOD({$this->getDeclarationClassName()}, $this->methodName);\n";
- }
-
- public function getArgInfoName(): string {
- return "arginfo_class_{$this->getDeclarationClassName()}_{$this->methodName}";
- }
-
- public function getMethodSynopsisFilename(): string {
- return $this->getDeclarationClassName() . "_{$this->methodName}";
- }
-
- public function __toString(): string {
- return "$this->className::$this->methodName";
- }
-
- public function isMethod(): bool {
- return true;
- }
-
- public function isConstructor(): bool {
- return $this->methodName === "__construct";
- }
-
- public function isDestructor(): bool {
- return $this->methodName === "__destruct";
- }
-}
-
-class ReturnInfo {
- /** @var bool */
- public $byRef;
- /** @var Type|null */
- public $type;
- /** @var Type|null */
- public $phpDocType;
-
- public function __construct(bool $byRef, ?Type $type, ?Type $phpDocType) {
- $this->byRef = $byRef;
- $this->type = $type;
- $this->phpDocType = $phpDocType;
- }
-
- public function equals(ReturnInfo $other): bool {
- return $this->byRef === $other->byRef
- && Type::equals($this->type, $other->type);
- }
-
- public function getMethodSynopsisType(): ?Type {
- return $this->type ?? $this->phpDocType;
- }
-}
-
-class FuncInfo {
- /** @var FunctionOrMethodName */
- public $name;
- /** @var int */
- public $classFlags;
- /** @var int */
- public $flags;
- /** @var string|null */
- public $aliasType;
- /** @var FunctionName|null */
- public $alias;
- /** @var bool */
- public $isDeprecated;
- /** @var bool */
- public $verify;
- /** @var ArgInfo[] */
- public $args;
- /** @var ReturnInfo */
- public $return;
- /** @var int */
- public $numRequiredArgs;
- /** @var string|null */
- public $cond;
-
- public function __construct(
- FunctionOrMethodName $name,
- int $classFlags,
- int $flags,
- ?string $aliasType,
- ?FunctionOrMethodName $alias,
- bool $isDeprecated,
- bool $verify,
- array $args,
- ReturnInfo $return,
- int $numRequiredArgs,
- ?string $cond
- ) {
- $this->name = $name;
- $this->classFlags = $classFlags;
- $this->flags = $flags;
- $this->aliasType = $aliasType;
- $this->alias = $alias;
- $this->isDeprecated = $isDeprecated;
- $this->verify = $verify;
- $this->args = $args;
- $this->return = $return;
- $this->numRequiredArgs = $numRequiredArgs;
- $this->cond = $cond;
- }
-
- public function isMethod(): bool
- {
- return $this->name->isMethod();
- }
-
- public function isFinalMethod(): bool
- {
- return ($this->flags & Class_::MODIFIER_FINAL) || ($this->classFlags & Class_::MODIFIER_FINAL);
- }
-
- public function isInstanceMethod(): bool
- {
- return !($this->flags & Class_::MODIFIER_STATIC) && $this->isMethod() && !$this->name->isConstructor();
- }
-
- /** @return string[] */
- public function getModifierNames(): array
- {
- if (!$this->isMethod()) {
- return [];
- }
-
- $result = [];
-
- if ($this->flags & Class_::MODIFIER_FINAL) {
- $result[] = "final";
- } elseif ($this->flags & Class_::MODIFIER_ABSTRACT && $this->classFlags & ~Class_::MODIFIER_ABSTRACT) {
- $result[] = "abstract";
- }
-
- if ($this->flags & Class_::MODIFIER_PROTECTED) {
- $result[] = "protected";
- } elseif ($this->flags & Class_::MODIFIER_PRIVATE) {
- $result[] = "private";
- } else {
- $result[] = "public";
- }
-
- if ($this->flags & Class_::MODIFIER_STATIC) {
- $result[] = "static";
- }
-
- return $result;
- }
-
- public function hasParamWithUnknownDefaultValue(): bool
- {
- foreach ($this->args as $arg) {
- if ($arg->defaultValue && !$arg->hasProperDefaultValue()) {
- return true;
- }
- }
-
- return false;
- }
-
- public function equalsApartFromName(FuncInfo $other): bool {
- if (count($this->args) !== count($other->args)) {
- return false;
- }
-
- for ($i = 0; $i < count($this->args); $i++) {
- if (!$this->args[$i]->equals($other->args[$i])) {
- return false;
- }
- }
-
- return $this->return->equals($other->return)
- && $this->numRequiredArgs === $other->numRequiredArgs
- && $this->cond === $other->cond;
- }
-
- public function getArgInfoName(): string {
- return $this->name->getArgInfoName();
- }
-
- public function getDeclarationKey(): string
- {
- $name = $this->alias ?? $this->name;
-
- return "$name|$this->cond";
- }
-
- public function getDeclaration(): ?string
- {
- if ($this->flags & Class_::MODIFIER_ABSTRACT) {
- return null;
- }
-
- $name = $this->alias ?? $this->name;
-
- return $name->getDeclaration();
- }
-
- public function getFunctionEntry(): string {
- if ($this->name instanceof MethodName) {
- if ($this->alias) {
- if ($this->alias instanceof MethodName) {
- return sprintf(
- "\tZEND_MALIAS(%s, %s, %s, %s, %s)\n",
- $this->alias->getDeclarationClassName(), $this->name->methodName,
- $this->alias->methodName, $this->getArgInfoName(), $this->getFlagsAsArginfoString()
- );
- } else if ($this->alias instanceof FunctionName) {
- return sprintf(
- "\tZEND_ME_MAPPING(%s, %s, %s, %s)\n",
- $this->name->methodName, $this->alias->getNonNamespacedName(),
- $this->getArgInfoName(), $this->getFlagsAsArginfoString()
- );
- } else {
- throw new Error("Cannot happen");
- }
- } else {
- $declarationClassName = $this->name->getDeclarationClassName();
- if ($this->flags & Class_::MODIFIER_ABSTRACT) {
- return sprintf(
- "\tZEND_ABSTRACT_ME_WITH_FLAGS(%s, %s, %s, %s)\n",
- $declarationClassName, $this->name->methodName, $this->getArgInfoName(),
- $this->getFlagsAsArginfoString()
- );
- }
-
- return sprintf(
- "\tZEND_ME(%s, %s, %s, %s)\n",
- $declarationClassName, $this->name->methodName, $this->getArgInfoName(),
- $this->getFlagsAsArginfoString()
- );
- }
- } else if ($this->name instanceof FunctionName) {
- $namespace = $this->name->getNamespace();
- $declarationName = $this->name->getDeclarationName();
-
- if ($this->alias && $this->isDeprecated) {
- return sprintf(
- "\tZEND_DEP_FALIAS(%s, %s, %s)\n",
- $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName()
- );
- }
-
- if ($this->alias) {
- return sprintf(
- "\tZEND_FALIAS(%s, %s, %s)\n",
- $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName()
- );
- }
-
- if ($this->isDeprecated) {
- return sprintf(
- "\tZEND_DEP_FE(%s, %s)\n", $declarationName, $this->getArgInfoName());
- }
-
- if ($namespace) {
- // Render A\B as "A\\B" in C strings for namespaces
- return sprintf(
- "\tZEND_NS_FE(\"%s\", %s, %s)\n",
- addslashes($namespace), $declarationName, $this->getArgInfoName());
- } else {
- return sprintf("\tZEND_FE(%s, %s)\n", $declarationName, $this->getArgInfoName());
- }
- } else {
- throw new Error("Cannot happen");
- }
- }
-
- private function getFlagsAsArginfoString(): string
- {
- $flags = "ZEND_ACC_PUBLIC";
- if ($this->flags & Class_::MODIFIER_PROTECTED) {
- $flags = "ZEND_ACC_PROTECTED";
- } elseif ($this->flags & Class_::MODIFIER_PRIVATE) {
- $flags = "ZEND_ACC_PRIVATE";
- }
-
- if ($this->flags & Class_::MODIFIER_STATIC) {
- $flags .= "|ZEND_ACC_STATIC";
- }
-
- if ($this->flags & Class_::MODIFIER_FINAL) {
- $flags .= "|ZEND_ACC_FINAL";
- }
-
- if ($this->flags & Class_::MODIFIER_ABSTRACT) {
- $flags .= "|ZEND_ACC_ABSTRACT";
- }
-
- if ($this->isDeprecated) {
- $flags .= "|ZEND_ACC_DEPRECATED";
- }
-
- return $flags;
- }
-
- /**
- * @param FuncInfo[] $funcMap
- * @param FuncInfo[] $aliasMap
- * @throws Exception
- */
- public function getMethodSynopsisDocument(array $funcMap, array $aliasMap): ?string {
-
- $doc = new DOMDocument();
- $doc->formatOutput = true;
- $methodSynopsis = $this->getMethodSynopsisElement($funcMap, $aliasMap, $doc);
- if (!$methodSynopsis) {
- return null;
- }
-
- $doc->appendChild($methodSynopsis);
-
- return $doc->saveXML();
- }
-
- /**
- * @param FuncInfo[] $funcMap
- * @param FuncInfo[] $aliasMap
- * @throws Exception
- */
- public function getMethodSynopsisElement(array $funcMap, array $aliasMap, DOMDocument $doc): ?DOMElement {
- if ($this->hasParamWithUnknownDefaultValue()) {
- return null;
- }
-
- if ($this->name->isConstructor()) {
- $synopsisType = "constructorsynopsis";
- } elseif ($this->name->isDestructor()) {
- $synopsisType = "destructorsynopsis";
- } else {
- $synopsisType = "methodsynopsis";
- }
-
- $methodSynopsis = $doc->createElement($synopsisType);
-
- $aliasedFunc = $this->aliasType === "alias" && isset($funcMap[$this->alias->__toString()]) ? $funcMap[$this->alias->__toString()] : null;
- $aliasFunc = $aliasMap[$this->name->__toString()] ?? null;
-
- if (($this->aliasType === "alias" && $aliasedFunc !== null && $aliasedFunc->isMethod() !== $this->isMethod()) ||
- ($aliasFunc !== null && $aliasFunc->isMethod() !== $this->isMethod())
- ) {
- $role = $doc->createAttribute("role");
- $role->value = $this->isMethod() ? "oop" : "procedural";
- $methodSynopsis->appendChild($role);
- }
-
- $methodSynopsis->appendChild(new DOMText("\n "));
-
- foreach ($this->getModifierNames() as $modifierString) {
- $modifierElement = $doc->createElement('modifier', $modifierString);
- $methodSynopsis->appendChild($modifierElement);
- $methodSynopsis->appendChild(new DOMText(" "));
- }
-
- $returnType = $this->return->getMethodSynopsisType();
- if ($returnType) {
- $this->appendMethodSynopsisTypeToElement($doc, $methodSynopsis, $returnType);
- }
-
- $methodname = $doc->createElement('methodname', $this->name->__toString());
- $methodSynopsis->appendChild($methodname);
-
- if (empty($this->args)) {
- $methodSynopsis->appendChild(new DOMText("\n "));
- $void = $doc->createElement('void');
- $methodSynopsis->appendChild($void);
- } else {
- foreach ($this->args as $arg) {
- $methodSynopsis->appendChild(new DOMText("\n "));
- $methodparam = $doc->createElement('methodparam');
- if ($arg->defaultValue !== null) {
- $methodparam->setAttribute("choice", "opt");
- }
- if ($arg->isVariadic) {
- $methodparam->setAttribute("rep", "repeat");
- }
-
- $methodSynopsis->appendChild($methodparam);
- $this->appendMethodSynopsisTypeToElement($doc, $methodparam, $arg->getMethodSynopsisType());
-
- $parameter = $doc->createElement('parameter', $arg->name);
- if ($arg->sendBy !== ArgInfo::SEND_BY_VAL) {
- $parameter->setAttribute("role", "reference");
- }
-
- $methodparam->appendChild($parameter);
- $defaultValue = $arg->getDefaultValueAsMethodSynopsisString();
- if ($defaultValue !== null) {
- $initializer = $doc->createElement('initializer');
- if (preg_match('/^[a-zA-Z_][a-zA-Z_0-9]*$/', $defaultValue)) {
- $constant = $doc->createElement('constant', $defaultValue);
- $initializer->appendChild($constant);
- } else {
- $initializer->nodeValue = $defaultValue;
- }
- $methodparam->appendChild($initializer);
- }
- }
- }
- $methodSynopsis->appendChild(new DOMText("\n "));
-
- return $methodSynopsis;
- }
-
- public function discardInfoForOldPhpVersions(): void {
- $this->return->type = null;
- foreach ($this->args as $arg) {
- $arg->type = null;
- $arg->defaultValue = null;
- }
- }
-
- private function appendMethodSynopsisTypeToElement(DOMDocument $doc, DOMElement $elementToAppend, Type $type) {
- if (count($type->types) > 1) {
- $typeElement = $doc->createElement('type');
- $typeElement->setAttribute("class", "union");
-
- foreach ($type->types as $type) {
- $unionTypeElement = $doc->createElement('type', $type->name);
- $typeElement->appendChild($unionTypeElement);
- }
- } else {
- $typeElement = $doc->createElement('type', $type->types[0]->name);
- }
-
- $elementToAppend->appendChild($typeElement);
- }
-}
-
-class ClassInfo {
- /** @var Name */
- public $name;
- /** @var FuncInfo[] */
- public $funcInfos;
-
- public function __construct(Name $name, array $funcInfos) {
- $this->name = $name;
- $this->funcInfos = $funcInfos;
- }
-}
-
-class FileInfo {
- /** @var FuncInfo[] */
- public $funcInfos = [];
- /** @var ClassInfo[] */
- public $classInfos = [];
- /** @var bool */
- public $generateFunctionEntries = false;
- /** @var string */
- public $declarationPrefix = "";
- /** @var bool */
- public $generateLegacyArginfo = false;
-
- /**
- * @return iterable<FuncInfo>
- */
- public function getAllFuncInfos(): iterable {
- yield from $this->funcInfos;
- foreach ($this->classInfos as $classInfo) {
- yield from $classInfo->funcInfos;
- }
- }
-}
-
-class DocCommentTag {
- /** @var string */
- public $name;
- /** @var string|null */
- public $value;
-
- public function __construct(string $name, ?string $value) {
- $this->name = $name;
- $this->value = $value;
- }
-
- public function getValue(): string {
- if ($this->value === null) {
- throw new Exception("@$this->name does not have a value");
- }
-
- return $this->value;
- }
-
- public function getType(): string {
- $value = $this->getValue();
-
- $matches = [];
-
- if ($this->name === "param") {
- preg_match('/^\s*([\w\|\\\\\[\]]+)\s*\$\w+.*$/', $value, $matches);
- } elseif ($this->name === "return") {
- preg_match('/^\s*([\w\|\\\\\[\]]+)\s*$/', $value, $matches);
- }
-
- if (isset($matches[1]) === false) {
- throw new Exception("@$this->name doesn't contain a type or has an invalid format \"$value\"");
- }
-
- return $matches[1];
- }
-
- public function getVariableName(): string {
- $value = $this->value;
- if ($value === null || strlen($value) === 0) {
- throw new Exception("@$this->name doesn't have any value");
- }
-
- $matches = [];
-
- if ($this->name === "param") {
- preg_match('/^\s*[\w\|\\\\\[\]]+\s*\$(\w+).*$/', $value, $matches);
- } elseif ($this->name === "prefer-ref") {
- preg_match('/^\s*\$(\w+).*$/', $value, $matches);
- }
-
- if (isset($matches[1]) === false) {
- throw new Exception("@$this->name doesn't contain a variable name or has an invalid format \"$value\"");
- }
-
- return $matches[1];
- }
-}
-
-/** @return DocCommentTag[] */
-function parseDocComment(DocComment $comment): array {
- $commentText = substr($comment->getText(), 2, -2);
- $tags = [];
- foreach (explode("\n", $commentText) as $commentLine) {
- $regex = '/^\*\s*@([a-z-]+)(?:\s+(.+))?$/';
- if (preg_match($regex, trim($commentLine), $matches)) {
- $tags[] = new DocCommentTag($matches[1], $matches[2] ?? null);
- }
- }
-
- return $tags;
-}
-
-function parseFunctionLike(
- PrettyPrinterAbstract $prettyPrinter,
- FunctionOrMethodName $name,
- int $classFlags,
- int $flags,
- Node\FunctionLike $func,
- ?string $cond
-): FuncInfo {
- $comment = $func->getDocComment();
- $paramMeta = [];
- $aliasType = null;
- $alias = null;
- $isDeprecated = false;
- $verify = true;
- $docReturnType = null;
- $docParamTypes = [];
-
- if ($comment) {
- $tags = parseDocComment($comment);
- foreach ($tags as $tag) {
- if ($tag->name === 'prefer-ref') {
- $varName = $tag->getVariableName();
- if (!isset($paramMeta[$varName])) {
- $paramMeta[$varName] = [];
- }
- $paramMeta[$varName]['preferRef'] = true;
- } else if ($tag->name === 'alias' || $tag->name === 'implementation-alias') {
- $aliasType = $tag->name;
- $aliasParts = explode("::", $tag->getValue());
- if (count($aliasParts) === 1) {
- $alias = new FunctionName(new Name($aliasParts[0]));
- } else {
- $alias = new MethodName(new Name($aliasParts[0]), $aliasParts[1]);
- }
- } else if ($tag->name === 'deprecated') {
- $isDeprecated = true;
- } else if ($tag->name === 'no-verify') {
- $verify = false;
- } else if ($tag->name === 'return') {
- $docReturnType = $tag->getType();
- } else if ($tag->name === 'param') {
- $docParamTypes[$tag->getVariableName()] = $tag->getType();
- }
- }
- }
-
- $varNameSet = [];
- $args = [];
- $numRequiredArgs = 0;
- $foundVariadic = false;
- foreach ($func->getParams() as $i => $param) {
- $varName = $param->var->name;
- $preferRef = !empty($paramMeta[$varName]['preferRef']);
- unset($paramMeta[$varName]);
-
- if (isset($varNameSet[$varName])) {
- throw new Exception("Duplicate parameter name $varName for function $name");
- }
- $varNameSet[$varName] = true;
-
- if ($preferRef) {
- $sendBy = ArgInfo::SEND_PREFER_REF;
- } else if ($param->byRef) {
- $sendBy = ArgInfo::SEND_BY_REF;
- } else {
- $sendBy = ArgInfo::SEND_BY_VAL;
- }
-
- if ($foundVariadic) {
- throw new Exception("Error in function $name: only the last parameter can be variadic");
- }
-
- $type = $param->type ? Type::fromNode($param->type) : null;
- if ($type === null && !isset($docParamTypes[$varName])) {
- throw new Exception("Missing parameter type for function $name()");
- }
-
- if ($param->default instanceof Expr\ConstFetch &&
- $param->default->name->toLowerString() === "null" &&
- $type && !$type->isNullable()
- ) {
- $simpleType = $type->tryToSimpleType();
- if ($simpleType === null) {
- throw new Exception(
- "Parameter $varName of function $name has null default, but is not nullable");
- }
- }
-
- $foundVariadic = $param->variadic;
-
- $args[] = new ArgInfo(
- $varName,
- $sendBy,
- $param->variadic,
- $type,
- isset($docParamTypes[$varName]) ? Type::fromPhpDoc($docParamTypes[$varName]) : null,
- $param->default ? $prettyPrinter->prettyPrintExpr($param->default) : null
- );
- if (!$param->default && !$param->variadic) {
- $numRequiredArgs = $i + 1;
- }
- }
-
- foreach (array_keys($paramMeta) as $var) {
- throw new Exception("Found metadata for invalid param $var of function $name");
- }
-
- $returnType = $func->getReturnType();
- if ($returnType === null && $docReturnType === null && !$name->isConstructor() && !$name->isDestructor()) {
- throw new Exception("Missing return type for function $name()");
- }
-
- $return = new ReturnInfo(
- $func->returnsByRef(),
- $returnType ? Type::fromNode($returnType) : null,
- $docReturnType ? Type::fromPhpDoc($docReturnType) : null
- );
-
- return new FuncInfo(
- $name,
- $classFlags,
- $flags,
- $aliasType,
- $alias,
- $isDeprecated,
- $verify,
- $args,
- $return,
- $numRequiredArgs,
- $cond
- );
-}
-
-function handlePreprocessorConditions(array &$conds, Stmt $stmt): ?string {
- foreach ($stmt->getComments() as $comment) {
- $text = trim($comment->getText());
- if (preg_match('/^#\s*if\s+(.+)$/', $text, $matches)) {
- $conds[] = $matches[1];
- } else if (preg_match('/^#\s*ifdef\s+(.+)$/', $text, $matches)) {
- $conds[] = "defined($matches[1])";
- } else if (preg_match('/^#\s*ifndef\s+(.+)$/', $text, $matches)) {
- $conds[] = "!defined($matches[1])";
- } else if (preg_match('/^#\s*else$/', $text)) {
- if (empty($conds)) {
- throw new Exception("Encountered else without corresponding #if");
- }
- $cond = array_pop($conds);
- $conds[] = "!($cond)";
- } else if (preg_match('/^#\s*endif$/', $text)) {
- if (empty($conds)) {
- throw new Exception("Encountered #endif without corresponding #if");
- }
- array_pop($conds);
- } else if ($text[0] === '#') {
- throw new Exception("Unrecognized preprocessor directive \"$text\"");
- }
- }
-
- return empty($conds) ? null : implode(' && ', $conds);
-}
-
-function getFileDocComment(array $stmts): ?DocComment {
- if (empty($stmts)) {
- return null;
- }
-
- $comments = $stmts[0]->getComments();
- if (empty($comments)) {
- return null;
- }
-
- if ($comments[0] instanceof DocComment) {
- return $comments[0];
- }
-
- return null;
-}
-
-function handleStatements(FileInfo $fileInfo, array $stmts, PrettyPrinterAbstract $prettyPrinter) {
- $conds = [];
- foreach ($stmts as $stmt) {
- if ($stmt instanceof Stmt\Nop) {
- continue;
- }
-
- if ($stmt instanceof Stmt\Namespace_) {
- handleStatements($fileInfo, $stmt->stmts, $prettyPrinter);
- continue;
- }
-
- $cond = handlePreprocessorConditions($conds, $stmt);
- if ($stmt instanceof Stmt\Function_) {
- $fileInfo->funcInfos[] = parseFunctionLike(
- $prettyPrinter,
- new FunctionName($stmt->namespacedName),
- 0,
- 0,
- $stmt,
- $cond
- );
- continue;
- }
-
- if ($stmt instanceof Stmt\ClassLike) {
- $className = $stmt->namespacedName;
- $methodInfos = [];
- foreach ($stmt->stmts as $classStmt) {
- $cond = handlePreprocessorConditions($conds, $classStmt);
- if ($classStmt instanceof Stmt\Nop) {
- continue;
- }
-
- if (!$classStmt instanceof Stmt\ClassMethod) {
- throw new Exception("Not implemented {$classStmt->getType()}");
- }
-
- $classFlags = 0;
- if ($stmt instanceof Class_) {
- $classFlags = $stmt->flags;
- }
-
- $flags = $classStmt->flags;
- if ($stmt instanceof Stmt\Interface_) {
- $flags |= Class_::MODIFIER_ABSTRACT;
- }
-
- if (!($flags & Class_::VISIBILITY_MODIFIER_MASK)) {
- throw new Exception("Method visibility modifier is required");
- }
-
- $methodInfos[] = parseFunctionLike(
- $prettyPrinter,
- new MethodName($className, $classStmt->name->toString()),
- $classFlags,
- $flags,
- $classStmt,
- $cond
- );
- }
-
- $fileInfo->classInfos[] = new ClassInfo($className, $methodInfos);
- continue;
- }
-
- throw new Exception("Unexpected node {$stmt->getType()}");
- }
-}
-
-function parseStubFile(string $code): FileInfo {
- $lexer = new PhpParser\Lexer();
- $parser = new PhpParser\Parser\Php7($lexer);
- $nodeTraverser = new PhpParser\NodeTraverser;
- $nodeTraverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
- $prettyPrinter = new class extends Standard {
- protected function pName_FullyQualified(Name\FullyQualified $node) {
- return implode('\\', $node->parts);
- }
- };
-
- $stmts = $parser->parse($code);
- $nodeTraverser->traverse($stmts);
-
- $fileInfo = new FileInfo;
- $fileDocComment = getFileDocComment($stmts);
- if ($fileDocComment) {
- $fileTags = parseDocComment($fileDocComment);
- foreach ($fileTags as $tag) {
- if ($tag->name === 'generate-function-entries') {
- $fileInfo->generateFunctionEntries = true;
- $fileInfo->declarationPrefix = $tag->value ? $tag->value . " " : "";
- } else if ($tag->name === 'generate-legacy-arginfo') {
- $fileInfo->generateLegacyArginfo = true;
- }
- }
- }
-
- handleStatements($fileInfo, $stmts, $prettyPrinter);
- return $fileInfo;
-}
-
-function funcInfoToCode(FuncInfo $funcInfo, bool $minimal): string {
- $code = '';
-
- // Generate the minimal, most compatible arginfo across PHP versions
- if ($minimal) {
- $code .= sprintf("ZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n",
- $funcInfo->getArgInfoName(),
- $funcInfo->return->byRef,
- $funcInfo->numRequiredArgs);
- foreach ($funcInfo->args as $argInfo) {
- $code .= sprintf("\tZEND_ARG_INFO(0, %s)\n", $argInfo->name);
- }
- } else {
- $returnType = $funcInfo->return->type;
- if ($returnType !== null) {
- if (null !== $simpleReturnType = $returnType->tryToSimpleType()) {
- if ($simpleReturnType->isBuiltin) {
- $code .= sprintf(
- "AWS_PHP_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(%s, %d, %d, %s, %d)\n",
- $funcInfo->getArgInfoName(), $funcInfo->return->byRef,
- $funcInfo->numRequiredArgs,
- $simpleReturnType->toTypeCode(), $returnType->isNullable()
- );
- } else {
- $code .= sprintf(
- "ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(%s, %d, %d, %s, %d)\n",
- $funcInfo->getArgInfoName(), $funcInfo->return->byRef,
- $funcInfo->numRequiredArgs,
- $simpleReturnType->toEscapedName(), $returnType->isNullable()
- );
- }
- } else {
- $arginfoType = $returnType->toArginfoType();
- if ($arginfoType->hasClassType()) {
- $code .= sprintf(
- "ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(%s, %d, %d, %s, %s)\n",
- $funcInfo->getArgInfoName(), $funcInfo->return->byRef,
- $funcInfo->numRequiredArgs,
- $arginfoType->toClassTypeString(), $arginfoType->toTypeMask()
- );
- } else {
- $code .= sprintf(
- "ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(%s, %d, %d, %s)\n",
- $funcInfo->getArgInfoName(), $funcInfo->return->byRef,
- $funcInfo->numRequiredArgs,
- $arginfoType->toTypeMask()
- );
- }
- }
- } else {
- $code .= sprintf(
- "ZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n",
- $funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs
- );
- }
-
- foreach ($funcInfo->args as $argInfo) {
- $argKind = $argInfo->isVariadic ? "ARG_VARIADIC" : "ARG";
- $argDefaultKind = $argInfo->hasProperDefaultValue() ? "_WITH_DEFAULT_VALUE" : "";
- $argType = $argInfo->type;
- if ($argType !== null) {
- if (null !== $simpleArgType = $argType->tryToSimpleType()) {
- if ($simpleArgType->isBuiltin) {
- $code .= sprintf(
- "\tZEND_%s_TYPE_INFO%s(%s, %s, %s, %d%s)\n",
- $argKind, $argDefaultKind, $argInfo->getSendByString(), $argInfo->name,
- $simpleArgType->toTypeCode(), $argType->isNullable(),
- $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : ""
- );
- } else {
- $code .= sprintf(
- "\tZEND_%s_OBJ_INFO%s(%s, %s, %s, %d%s)\n",
- $argKind,$argDefaultKind, $argInfo->getSendByString(), $argInfo->name,
- $simpleArgType->toEscapedName(), $argType->isNullable(),
- $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : ""
- );
- }
- } else {
- $arginfoType = $argType->toArginfoType();
- if ($arginfoType->hasClassType()) {
- $code .= sprintf(
- "\tZEND_%s_OBJ_TYPE_MASK(%s, %s, %s, %s, %s)\n",
- $argKind, $argInfo->getSendByString(), $argInfo->name,
- $arginfoType->toClassTypeString(), $arginfoType->toTypeMask(),
- $argInfo->getDefaultValueAsArginfoString()
- );
- } else {
- $code .= sprintf(
- "\tZEND_%s_TYPE_MASK(%s, %s, %s, %s)\n",
- $argKind, $argInfo->getSendByString(), $argInfo->name,
- $arginfoType->toTypeMask(),
- $argInfo->getDefaultValueAsArginfoString()
- );
- }
- }
- } else {
- $code .= sprintf(
- "\tZEND_%s_INFO%s(%s, %s%s)\n",
- $argKind, $argDefaultKind, $argInfo->getSendByString(), $argInfo->name,
- $argInfo->hasProperDefaultValue() ? ", " . $argInfo->getDefaultValueAsArginfoString() : ""
- );
- }
- }
- }
-
- $code .= "ZEND_END_ARG_INFO()";
- return $code . "\n";
-}
-
-/** @param FuncInfo[] $generatedFuncInfos */
-function findEquivalentFuncInfo(array $generatedFuncInfos, FuncInfo $funcInfo): ?FuncInfo {
- foreach ($generatedFuncInfos as $generatedFuncInfo) {
- if ($generatedFuncInfo->equalsApartFromName($funcInfo)) {
- return $generatedFuncInfo;
- }
- }
- return null;
-}
-
-/** @param iterable<FuncInfo> $funcInfos */
-function generateCodeWithConditions(
- iterable $funcInfos, string $separator, Closure $codeGenerator): string {
- $code = "";
- foreach ($funcInfos as $funcInfo) {
- $funcCode = $codeGenerator($funcInfo);
- if ($funcCode === null) {
- continue;
- }
-
- $code .= $separator;
- if ($funcInfo->cond) {
- $code .= "#if {$funcInfo->cond}\n";
- $code .= $funcCode;
- $code .= "#endif\n";
- } else {
- $code .= $funcCode;
- }
- }
- return $code;
-}
-
-function generateArgInfoCode(FileInfo $fileInfo, string $stubHash, bool $minimal): string {
- $code = "/* This is a generated file, edit the .stub.php file instead.\n"
- . " * Stub hash: $stubHash */\n";
- $generatedFuncInfos = [];
- $code .= generateCodeWithConditions(
- $fileInfo->getAllFuncInfos(), "\n",
- function (FuncInfo $funcInfo) use(&$generatedFuncInfos, $minimal) {
- /* If there already is an equivalent arginfo structure, only emit a #define */
- if ($generatedFuncInfo = findEquivalentFuncInfo($generatedFuncInfos, $funcInfo)) {
- $code = sprintf(
- "#define %s %s\n",
- $funcInfo->getArgInfoName(), $generatedFuncInfo->getArgInfoName()
- );
- } else {
- $code = funcInfoToCode($funcInfo, $minimal);
- }
-
- $generatedFuncInfos[] = $funcInfo;
- return $code;
- }
- );
-
- if ($fileInfo->generateFunctionEntries) {
- $code .= "\n\n";
-
- $generatedFunctionDeclarations = [];
- $code .= generateCodeWithConditions(
- $fileInfo->getAllFuncInfos(), "",
- function (FuncInfo $funcInfo) use($fileInfo, &$generatedFunctionDeclarations) {
- $key = $funcInfo->getDeclarationKey();
- if (isset($generatedFunctionDeclarations[$key])) {
- return null;
- }
-
- $generatedFunctionDeclarations[$key] = true;
- return $fileInfo->declarationPrefix . $funcInfo->getDeclaration();
- }
- );
-
- if (!empty($fileInfo->funcInfos)) {
- $code .= generateFunctionEntries(null, $fileInfo->funcInfos);
- }
-
- foreach ($fileInfo->classInfos as $classInfo) {
- $code .= generateFunctionEntries($classInfo->name, $classInfo->funcInfos);
- }
- }
-
- return $code;
-}
-
-/** @param FuncInfo[] $funcInfos */
-function generateFunctionEntries(?Name $className, array $funcInfos): string {
- $code = "";
-
- $functionEntryName = "ext_functions";
- if ($className) {
- $underscoreName = implode("_", $className->parts);
- $functionEntryName = "class_{$underscoreName}_methods";
- }
-
- $code .= "\n\nstatic const zend_function_entry {$functionEntryName}[] = {\n";
- $code .= generateCodeWithConditions($funcInfos, "", function (FuncInfo $funcInfo) {
- return $funcInfo->getFunctionEntry();
- });
- $code .= "\tZEND_FE_END\n";
- $code .= "};\n";
-
- return $code;
-}
-
-/**
- * @param FuncInfo[] $funcMap
- * @param FuncInfo[] $aliasMap
- * @return array<string, string>
- */
-function generateMethodSynopses(array $funcMap, array $aliasMap): array {
- $result = [];
-
- foreach ($funcMap as $funcInfo) {
- $methodSynopsis = $funcInfo->getMethodSynopsisDocument($funcMap, $aliasMap);
- if ($methodSynopsis !== null) {
- $result[$funcInfo->name->getMethodSynopsisFilename() . ".xml"] = $methodSynopsis;
- }
- }
-
- return $result;
-}
-
-/**
- * @param FuncInfo[] $funcMap
- * @param FuncInfo[] $aliasMap
- * @return array<string, string>
- */
-function replaceMethodSynopses(string $targetDirectory, array $funcMap, array $aliasMap): array {
- $methodSynopses = [];
-
- $it = new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($targetDirectory),
- RecursiveIteratorIterator::LEAVES_ONLY
- );
-
- foreach ($it as $file) {
- $pathName = $file->getPathName();
- if (!preg_match('/\.xml$/i', $pathName)) {
- continue;
- }
-
- $xml = file_get_contents($pathName);
- if ($xml === false) {
- continue;
- }
-
- if (stripos($xml, "<methodsynopsis") === false && stripos($xml, "<constructorsynopsis") === false && stripos($xml, "<destructorsynopsis") === false) {
- continue;
- }
-
- $replacedXml = preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-$1", $xml);
-
- $doc = new DOMDocument();
- $doc->formatOutput = false;
- $doc->preserveWhiteSpace = true;
- $doc->validateOnParse = true;
- $success = $doc->loadXML($replacedXml);
- if (!$success) {
- echo "Failed opening $pathName\n";
- continue;
- }
-
- $docComparator = new DOMDocument();
- $docComparator->preserveWhiteSpace = false;
- $docComparator->formatOutput = true;
-
- $methodSynopsisElements = [];
- foreach ($doc->getElementsByTagName("constructorsynopsis") as $element) {
- $methodSynopsisElements[] = $element;
- }
- foreach ($doc->getElementsByTagName("destructorsynopsis") as $element) {
- $methodSynopsisElements[] = $element;
- }
- foreach ($doc->getElementsByTagName("methodsynopsis") as $element) {
- $methodSynopsisElements[] = $element;
- }
-
- foreach ($methodSynopsisElements as $methodSynopsis) {
- if (!$methodSynopsis instanceof DOMElement) {
- continue;
- }
-
- $list = $methodSynopsis->getElementsByTagName("methodname");
- $item = $list->item(0);
- if (!$item instanceof DOMElement) {
- continue;
- }
- $funcName = $item->textContent;
- if (!isset($funcMap[$funcName])) {
- continue;
- }
- $funcInfo = $funcMap[$funcName];
-
- $newMethodSynopsis = $funcInfo->getMethodSynopsisElement($funcMap, $aliasMap, $doc);
- if ($newMethodSynopsis === null) {
- continue;
- }
-
- // Retrieve current signature
-
- $params = [];
- $list = $methodSynopsis->getElementsByTagName("methodparam");
- foreach ($list as $i => $item) {
- if (!$item instanceof DOMElement) {
- continue;
- }
-
- $paramList = $item->getElementsByTagName("parameter");
- if ($paramList->count() !== 1) {
- continue;
- }
-
- $paramName = $paramList->item(0)->textContent;
- $paramTypes = [];
-
- $paramList = $item->getElementsByTagName("type");
- foreach ($paramList as $type) {
- if (!$type instanceof DOMElement) {
- continue;
- }
-
- $paramTypes[] = $type->textContent;
- }
-
- $params[$paramName] = ["index" => $i, "type" => $paramTypes];
- }
-
- // Check if there is any change - short circuit if there is not any.
-
- $xml1 = $doc->saveXML($methodSynopsis);
- $xml1 = preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-$1", $xml1);
- $docComparator->loadXML($xml1);
- $xml1 = $docComparator->saveXML();
-
- $methodSynopsis->parentNode->replaceChild($newMethodSynopsis, $methodSynopsis);
-
- $xml2 = $doc->saveXML($newMethodSynopsis);
- $xml2 = preg_replace("/&([A-Za-z0-9._{}%-]+?;)/", "REPLACED-ENTITY-$1", $xml2);
- $docComparator->loadXML($xml2);
- $xml2 = $docComparator->saveXML();
-
- if ($xml1 === $xml2) {
- continue;
- }
-
- // Update parameter references
-
- $paramList = $doc->getElementsByTagName("parameter");
- /** @var DOMElement $paramElement */
- foreach ($paramList as $paramElement) {
- if ($paramElement->parentNode && $paramElement->parentNode->nodeName === "methodparam") {
- continue;
- }
-
- $name = $paramElement->textContent;
- if (!isset($params[$name])) {
- continue;
- }
-
- $index = $params[$name]["index"];
- if (!isset($funcInfo->args[$index])) {
- continue;
- }
-
- $paramElement->textContent = $funcInfo->args[$index]->name;
- }
-
- // Return the updated XML
-
- $replacedXml = $doc->saveXML();
-
- $replacedXml = preg_replace(
- [
- "/REPLACED-ENTITY-([A-Za-z0-9._{}%-]+?;)/",
- "/<refentry\s+xmlns=\"([a-z0-9.:\/]+)\"\s+xml:id=\"([a-z0-9._-]+)\"\s*>/i",
- "/<refentry\s+xmlns=\"([a-z0-9.:\/]+)\"\s+xmlns:xlink=\"([a-z0-9.:\/]+)\"\s+xml:id=\"([a-z0-9._-]+)\"\s*>/i",
- ],
- [
- "&$1",
- "<refentry xml:id=\"$2\" xmlns=\"$1\">",
- "<refentry xml:id=\"$3\" xmlns=\"$1\" xmlns:xlink=\"$2\">",
- ],
- $replacedXml
- );
-
- $methodSynopses[$pathName] = $replacedXml;
- }
- }
-
- return $methodSynopses;
-}
-
-function installPhpParser(string $version, string $phpParserDir) {
- $lockFile = __DIR__ . "/PHP-Parser-install-lock";
- $lockFd = fopen($lockFile, 'w+');
- if (!flock($lockFd, LOCK_EX)) {
- throw new Exception("Failed to acquire installation lock");
- }
-
- try {
- // Check whether a parallel process has already installed PHP-Parser.
- if (is_dir($phpParserDir)) {
- return;
- }
-
- $cwd = getcwd();
- chdir(__DIR__);
-
- $tarName = "v$version.tar.gz";
- passthru("wget https://github.com/nikic/PHP-Parser/archive/$tarName", $exit);
- if ($exit !== 0) {
- passthru("curl -LO https://github.com/nikic/PHP-Parser/archive/$tarName", $exit);
- }
- if ($exit !== 0) {
- throw new Exception("Failed to download PHP-Parser tarball");
- }
- if (!mkdir($phpParserDir)) {
- throw new Exception("Failed to create directory $phpParserDir");
- }
- passthru("tar xvzf $tarName -C PHP-Parser-$version --strip-components 1", $exit);
- if ($exit !== 0) {
- throw new Exception("Failed to extract PHP-Parser tarball");
- }
- unlink(__DIR__ . "/$tarName");
- chdir($cwd);
- } finally {
- flock($lockFd, LOCK_UN);
- @unlink($lockFile);
- }
-}
-
-function initPhpParser() {
- static $isInitialized = false;
- if ($isInitialized) {
- return;
- }
-
- if (!extension_loaded("tokenizer")) {
- throw new Exception("The \"tokenizer\" extension is not available");
- }
-
- $isInitialized = true;
- $version = "4.9.0";
- $phpParserDir = __DIR__ . "/PHP-Parser-$version";
- if (!is_dir($phpParserDir)) {
- installPhpParser($version, $phpParserDir);
- }
-
- spl_autoload_register(function(string $class) use($phpParserDir) {
- if (strpos($class, "PhpParser\\") === 0) {
- $fileName = $phpParserDir . "/lib/" . str_replace("\\", "/", $class) . ".php";
- require $fileName;
- }
- });
-}
-
-$optind = null;
-$options = getopt("fh", [
- "force-regeneration",
- "parameter-stats",
- "help",
- "verify",
- "generate-methodsynopses",
- "replace-methodsynopses",
- "minimal-arginfo"], $optind);
-
-$context = new Context;
-$printParameterStats = isset($options["parameter-stats"]);
-$verify = isset($options["verify"]);
-$generateMethodSynopses = isset($options["generate-methodsynopses"]);
-$replaceMethodSynopses = isset($options["replace-methodsynopses"]);
-$context->forceRegeneration = isset($options["f"]) || isset($options["force-regeneration"]);
-$context->forceParse = $context->forceRegeneration || $printParameterStats || $verify || $generateMethodSynopses || $replaceMethodSynopses;
-$context->minimalArgInfo = isset($options["minimal-arginfo"]);
-$targetMethodSynopses = $argv[$optind + 1] ?? null;
-if ($replaceMethodSynopses && $targetMethodSynopses === null) {
- die("A target directory must be provided.\n");
-}
-
-if (isset($options["h"]) || isset($options["help"])) {
- die("\nusage: gen-stub.php [ -f | --force-regeneration ] [ --generate-methodsynopses ] [ --replace-methodsynopses ] [ --parameter-stats ] [ --verify ] [ -h | --help ] [ name.stub.php | directory ] [ directory ]\n\n");
-}
-
-$fileInfos = [];
-$location = $argv[$optind] ?? ".";
-if (is_file($location)) {
- // Generate single file.
- $fileInfo = processStubFile($location, $context);
- if ($fileInfo) {
- $fileInfos[] = $fileInfo;
- }
-} else if (is_dir($location)) {
- $fileInfos = processDirectory($location, $context);
-} else {
- echo "$location is neither a file nor a directory.\n";
- exit(1);
-}
-
-if ($printParameterStats) {
- $parameterStats = [];
-
- foreach ($fileInfos as $fileInfo) {
- foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
- foreach ($funcInfo->args as $argInfo) {
- if (!isset($parameterStats[$argInfo->name])) {
- $parameterStats[$argInfo->name] = 0;
- }
- $parameterStats[$argInfo->name]++;
- }
- }
- }
-
- arsort($parameterStats);
- echo json_encode($parameterStats, JSON_PRETTY_PRINT), "\n";
-}
-
-/** @var FuncInfo[] $funcMap */
-$funcMap = [];
-/** @var FuncInfo[] $aliasMap */
-$aliasMap = [];
-
-foreach ($fileInfos as $fileInfo) {
- foreach ($fileInfo->getAllFuncInfos() as $funcInfo) {
- /** @var FuncInfo $funcInfo */
- $funcMap[$funcInfo->name->__toString()] = $funcInfo;
-
- if ($funcInfo->aliasType === "alias") {
- $aliasMap[$funcInfo->alias->__toString()] = $funcInfo;
- }
- }
-}
-
-if ($verify) {
- $errors = [];
-
- foreach ($aliasMap as $aliasFunc) {
- if (!isset($funcMap[$aliasFunc->alias->__toString()])) {
- $errors[] = "Aliased function {$aliasFunc->alias}() cannot be found";
- continue;
- }
-
- if (!$aliasFunc->verify) {
- continue;
- }
-
- $aliasedFunc = $funcMap[$aliasFunc->alias->__toString()];
- $aliasedArgs = $aliasedFunc->args;
- $aliasArgs = $aliasFunc->args;
-
- if ($aliasFunc->isInstanceMethod() !== $aliasedFunc->isInstanceMethod()) {
- if ($aliasFunc->isInstanceMethod()) {
- $aliasedArgs = array_slice($aliasedArgs, 1);
- }
-
- if ($aliasedFunc->isInstanceMethod()) {
- $aliasArgs = array_slice($aliasArgs, 1);
- }
- }
-
- array_map(
- function(?ArgInfo $aliasArg, ?ArgInfo $aliasedArg) use ($aliasFunc, $aliasedFunc, &$errors) {
- if ($aliasArg === null) {
- assert($aliasedArg !== null);
- $errors[] = "{$aliasFunc->name}(): Argument \$$aliasedArg->name of aliased function {$aliasedFunc->name}() is missing";
- return null;
- }
-
- if ($aliasedArg === null) {
- $errors[] = "{$aliasedFunc->name}(): Argument \$$aliasArg->name of alias function {$aliasFunc->name}() is missing";
- return null;
- }
-
- if ($aliasArg->name !== $aliasedArg->name) {
- $errors[] = "{$aliasFunc->name}(): Argument \$$aliasArg->name and argument \$$aliasedArg->name of aliased function {$aliasedFunc->name}() must have the same name";
- return null;
- }
-
- if ($aliasArg->type != $aliasedArg->type) {
- $errors[] = "{$aliasFunc->name}(): Argument \$$aliasArg->name and argument \$$aliasedArg->name of aliased function {$aliasedFunc->name}() must have the same type";
- }
-
- if ($aliasArg->defaultValue !== $aliasedArg->defaultValue) {
- $errors[] = "{$aliasFunc->name}(): Argument \$$aliasArg->name and argument \$$aliasedArg->name of aliased function {$aliasedFunc->name}() must have the same default value";
- }
- },
- $aliasArgs, $aliasedArgs
- );
-
- if ((!$aliasedFunc->isMethod() || $aliasedFunc->isFinalMethod()) &&
- (!$aliasFunc->isMethod() || $aliasFunc->isFinalMethod()) &&
- $aliasFunc->return != $aliasedFunc->return
- ) {
- $errors[] = "{$aliasFunc->name}() and {$aliasedFunc->name}() must have the same return type";
- }
- }
-
- echo implode("\n", $errors);
- if (!empty($errors)) {
- echo "\n";
- exit(1);
- }
-}
-
-if ($generateMethodSynopses) {
- $methodSynopsesDirectory = getcwd() . "/methodsynopses";
-
- $methodSynopses = generateMethodSynopses($funcMap, $aliasMap);
- if (!empty($methodSynopses)) {
- if (!file_exists($methodSynopsesDirectory)) {
- mkdir($methodSynopsesDirectory);
- }
-
- foreach ($methodSynopses as $filename => $content) {
- if (file_put_contents("$methodSynopsesDirectory/$filename", $content)) {
- echo "Saved $filename\n";
- }
- }
- }
-}
-
-if ($replaceMethodSynopses) {
- $methodSynopses = replaceMethodSynopses($targetMethodSynopses, $funcMap, $aliasMap);
-
- foreach ($methodSynopses as $filename => $content) {
- if (file_put_contents($filename, $content)) {
- echo "Saved $filename\n";
- }
- }
-}
diff --git a/vendor/aws/aws-crt-php/package.xml-template_post b/vendor/aws/aws-crt-php/package.xml-template_post
deleted file mode 100644
index 2506f9d..0000000
--- a/vendor/aws/aws-crt-php/package.xml-template_post
+++ /dev/null
@@ -1,19 +0,0 @@
- </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>
diff --git a/vendor/aws/aws-crt-php/package.xml-template_pre b/vendor/aws/aws-crt-php/package.xml-template_pre
deleted file mode 100644
index 53c7d5b..0000000
--- a/vendor/aws/aws-crt-php/package.xml-template_pre
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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>
diff --git a/vendor/aws/aws-crt-php/php-win.ini b/vendor/aws/aws-crt-php/php-win.ini
deleted file mode 100644
index c6d7db8..0000000
--- a/vendor/aws/aws-crt-php/php-win.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-extension=php_awscrt.dll
-extension=php_openssl.dll
diff --git a/vendor/aws/aws-crt-php/php.ini b/vendor/aws/aws-crt-php/php.ini
deleted file mode 100644
index a305c76..0000000
--- a/vendor/aws/aws-crt-php/php.ini
+++ /dev/null
@@ -1 +0,0 @@
-extension=modules/awscrt.so
diff --git a/vendor/aws/aws-crt-php/prepare_package_xml.sh b/vendor/aws/aws-crt-php/prepare_package_xml.sh
deleted file mode 100755
index 9e77582..0000000
--- a/vendor/aws/aws-crt-php/prepare_package_xml.sh
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/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
-
diff --git a/vendor/aws/aws-crt-php/prepare_release.sh b/vendor/aws/aws-crt-php/prepare_release.sh
deleted file mode 100755
index 3a9c5f4..0000000
--- a/vendor/aws/aws-crt-php/prepare_release.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/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")
diff --git a/vendor/aws/aws-crt-php/run_tests b/vendor/aws/aws-crt-php/run_tests
deleted file mode 100755
index 18b449a..0000000
--- a/vendor/aws/aws-crt-php/run_tests
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/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
diff --git a/vendor/aws/aws-crt-php/run_tests.bat b/vendor/aws/aws-crt-php/run_tests.bat
deleted file mode 100644
index d3e0886..0000000
--- a/vendor/aws/aws-crt-php/run_tests.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-
-@echo on
-
-%PHP_BINARY% -c php-win.ini vendor/bin/phpunit tests --debug
diff --git a/vendor/aws/aws-crt-php/src/.gitignore b/vendor/aws/aws-crt-php/src/.gitignore
deleted file mode 100644
index 0445360..0000000
--- a/vendor/aws/aws-crt-php/src/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-api.h
-pkgconfig/
-*.so*
diff --git a/vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php b/vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php
index 9b4f07c..bec4ac1 100644
--- a/vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php
+++ b/vendor/aws/aws-crt-php/src/AWS/CRT/HTTP/Request.php
@@ -13,7 +13,7 @@ class Request extends Message {
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);
+ throw new \InvalidArgumentException('body_stream must be an instance of ' . InputStream::class);
}
$this->body_stream = $body_stream;
}
diff --git a/vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php b/vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php
index ae5fd46..6aef709 100644
--- a/vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php
+++ b/vendor/aws/aws-crt-php/src/AWS/CRT/IO/InputStream.php
@@ -14,6 +14,7 @@ final class InputStream extends NativeResource {
const SEEK_END = 2;
public function __construct($stream) {
+ parent::__construct();
$this->stream = $stream;
$options = self::$crt->input_stream_options_new();
// The stream implementation in native just converts the PHP stream into
@@ -24,7 +25,7 @@ final class InputStream extends NativeResource {
}
public function __destruct() {
- self::$crt->input_stream_release($this->release());
+ $this->release();
parent::__destruct();
}
diff --git a/vendor/aws/aws-crt-php/tests/000_CoreTest.php b/vendor/aws/aws-crt-php/tests/000_CoreTest.php
deleted file mode 100644
index e9e068a..0000000
--- a/vendor/aws/aws-crt-php/tests/000_CoreTest.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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());
- }
-} \ No newline at end of file
diff --git a/vendor/aws/aws-crt-php/tests/CrcTest.php b/vendor/aws/aws-crt-php/tests/CrcTest.php
deleted file mode 100644
index 56c5038..0000000
--- a/vendor/aws/aws-crt-php/tests/CrcTest.php
+++ /dev/null
@@ -1,90 +0,0 @@
-<?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);
- }
-
-}
diff --git a/vendor/aws/aws-crt-php/tests/CredentialsTest.php b/vendor/aws/aws-crt-php/tests/CredentialsTest.php
deleted file mode 100644
index 32a9c42..0000000
--- a/vendor/aws/aws-crt-php/tests/CredentialsTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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;
- }
-}
diff --git a/vendor/aws/aws-crt-php/tests/ErrorTest.php b/vendor/aws/aws-crt-php/tests/ErrorTest.php
deleted file mode 100644
index e84d1ed..0000000
--- a/vendor/aws/aws-crt-php/tests/ErrorTest.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?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));
- }
-}
diff --git a/vendor/aws/aws-crt-php/tests/EventLoopGroupTest.php b/vendor/aws/aws-crt-php/tests/EventLoopGroupTest.php
deleted file mode 100644
index 6a52c69..0000000
--- a/vendor/aws/aws-crt-php/tests/EventLoopGroupTest.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?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;
- }
-}
diff --git a/vendor/aws/aws-crt-php/tests/HttpMessageTest.php b/vendor/aws/aws-crt-php/tests/HttpMessageTest.php
deleted file mode 100644
index eec18b6..0000000
--- a/vendor/aws/aws-crt-php/tests/HttpMessageTest.php
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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);
- }
-}
diff --git a/vendor/aws/aws-crt-php/tests/LogTest.php b/vendor/aws/aws-crt-php/tests/LogTest.php
deleted file mode 100644
index 8beff34..0000000
--- a/vendor/aws/aws-crt-php/tests/LogTest.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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();
- }
-}
diff --git a/vendor/aws/aws-crt-php/tests/SigningTest.php b/vendor/aws/aws-crt-php/tests/SigningTest.php
deleted file mode 100644
index 77399ab..0000000
--- a/vendor/aws/aws-crt-php/tests/SigningTest.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?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'));
- }
-}
diff --git a/vendor/aws/aws-crt-php/tests/StreamTest.php b/vendor/aws/aws-crt-php/tests/StreamTest.php
deleted file mode 100644
index f8a116a..0000000
--- a/vendor/aws/aws-crt-php/tests/StreamTest.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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;
- }
-}
diff --git a/vendor/aws/aws-crt-php/tests/common.inc b/vendor/aws/aws-crt-php/tests/common.inc
deleted file mode 100644
index 1a7e8f8..0000000
--- a/vendor/aws/aws-crt-php/tests/common.inc
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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]);
- }
- }
-}