v2: Updates

* Simplifies & beautifies everything
* Introduces a new Class system.
* Errors are defaulted to AWS's handler.
* New function names & more efficient handling.
* Should fix a majority of the errors.

Please read the README for more!
This commit is contained in:
Devang Srivastava 2020-09-28 15:32:51 +05:30
commit e6d7753dc8
1095 changed files with 45088 additions and 2911 deletions

View file

@ -61,7 +61,7 @@ class Message implements \ArrayAccess, \IteratorAggregate
* @param string $requestBody
* @return Message
*/
private static function fromJsonString($requestBody)
public static function fromJsonString($requestBody)
{
$data = json_decode($requestBody, true);
if (JSON_ERROR_NONE !== json_last_error() || !is_array($data)) {

View file

@ -57,14 +57,16 @@ class MessageValidator
*
* @param callable $certClient Callable used to download the certificate.
* Should have the following function signature:
* `function (string $certUrl) : string $certContent`
* `function (string $certUrl) : string|false $certContent`
* @param string $hostNamePattern
*/
public function __construct(
callable $certClient = null,
$hostNamePattern = ''
) {
$this->certClient = $certClient ?: 'file_get_contents';
$this->certClient = $certClient ?: function($certUrl) {
return @ file_get_contents($certUrl);
};
$this->hostPattern = $hostNamePattern ?: self::$defaultHostPattern;
}
@ -86,6 +88,11 @@ class MessageValidator
// Get the certificate.
$this->validateUrl($message['SigningCertURL']);
$certificate = call_user_func($this->certClient, $message['SigningCertURL']);
if ($certificate === false) {
throw new InvalidSnsMessageException(
"Cannot get the certificate from \"{$message['SigningCertURL']}\"."
);
}
// Extract the public key.
$key = openssl_get_publickey($certificate);

View file

@ -44,6 +44,8 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise listSubscriptionsAsync(array $args = [])
* @method \Aws\Result listSubscriptionsByTopic(array $args = [])
* @method \GuzzleHttp\Promise\Promise listSubscriptionsByTopicAsync(array $args = [])
* @method \Aws\Result listTagsForResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
* @method \Aws\Result listTopics(array $args = [])
* @method \GuzzleHttp\Promise\Promise listTopicsAsync(array $args = [])
* @method \Aws\Result optInPhoneNumber(array $args = [])
@ -64,7 +66,11 @@ use Aws\AwsClient;
* @method \GuzzleHttp\Promise\Promise setTopicAttributesAsync(array $args = [])
* @method \Aws\Result subscribe(array $args = [])
* @method \GuzzleHttp\Promise\Promise subscribeAsync(array $args = [])
* @method \Aws\Result tagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
* @method \Aws\Result unsubscribe(array $args = [])
* @method \GuzzleHttp\Promise\Promise unsubscribeAsync(array $args = [])
* @method \Aws\Result untagResource(array $args = [])
* @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
*/
class SnsClient extends AwsClient {}