AWS-SNS-Verify

 view release on metacpan or  search on metacpan

META.yml  view on Meta::CPAN

generated_by: 'Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010'
license: perl
meta-spec:
  url: http://module-build.sourceforge.net/META-spec-v1.4.html
  version: '1.4'
name: AWS-SNS-Verify
requires:
  CryptX: '0'
  Data::Structure::Util: '0'
  HTTP::Tiny: '0'
  JSON: '0'
  MIME::Base64: '0'
  Moo: '0'
  Ouch: '0'
  Test::Exception: '0'
  Test::More: '0'
  URI::URL: '0'
resources:
  bugtracker: http://github.com/rizen/AWS-SNS-Verify/issues
  repository: git://github.com/rizen/.gitWS-SNS-Verify
version: '0.0105'

Makefile.PL  view on Meta::CPAN

  "CONFIGURE_REQUIRES" => {
    "ExtUtils::MakeMaker" => 0
  },
  "DISTNAME" => "AWS-SNS-Verify",
  "LICENSE" => "perl",
  "NAME" => "AWS::SNS::Verify",
  "PREREQ_PM" => {
    "CryptX" => 0,
    "Data::Structure::Util" => 0,
    "HTTP::Tiny" => 0,
    "JSON" => 0,
    "MIME::Base64" => 0,
    "Moo" => 0,
    "Ouch" => 0,
    "Test::Exception" => 0,
    "Test::More" => 0,
    "URI::URL" => 0
  },
  "VERSION" => "0.0105",
  "test" => {
    "TESTS" => "t/*.t"
  }
);


my %FallbackPrereqs = (
  "CryptX" => 0,
  "Data::Structure::Util" => 0,
  "HTTP::Tiny" => 0,
  "JSON" => 0,
  "MIME::Base64" => 0,
  "Moo" => 0,
  "Ouch" => 0,
  "Test::Exception" => 0,
  "Test::More" => 0,
  "URI::URL" => 0
);


unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {

dist.ini  view on Meta::CPAN


[MetaResources]
bugtracker.web    = http://github.com/rizen/AWS-SNS-Verify/issues
repository.url    = git://github.com/rizen/.gitWS-SNS-Verify
repository.web    = http://github.com/rizen/AWS-SNS-Verify
repository.type   = git

[Prereqs]
Test::More      = 0
Test::Exception = 0
JSON            = 0
HTTP::Tiny      = 0
MIME::Base64    = 0
Moo             = 0
Ouch            = 0
CryptX          = 0
URI::URL        = 0
Data::Structure::Util = 0

lib/AWS/SNS/Verify.pm  view on Meta::CPAN

use strict;
use warnings;
package AWS::SNS::Verify;
$AWS::SNS::Verify::VERSION = '0.0105';
use JSON;
use HTTP::Tiny;
use MIME::Base64;
use Moo;
use Ouch;
use Crypt::PK::RSA;
use URI::URL;
use Data::Structure::Util;

has body => (
    is          => 'ro',
    required    => 1,
);

has message => (
    is          => 'ro',
    lazy        => 1,
    default     => sub {
        my $self = shift;
        return JSON::decode_json($self->body);
    }
);

has certificate_string => (
    is          => 'ro',
    lazy        => 1,
    default     => sub {
        my $self = shift;
        return $self->fetch_certificate;
    }

lib/AWS/SNS/Verify.pm  view on Meta::CPAN

    # sns.cn-north-1.amazonaws.com.cn   (AWS China)
    my $dot = qr/\./;
    my $region = qr/[a-zA-Z0-9-]+/;
    unless ($host =~ /^ sns $dot $region $dot amazonaws $dot com(\.cn)? $/x) {
        ouch 'Bad SigningCertURL', "The SigningCertURL ($url_string) isn't an Amazon endpoint", $self;
    }

    return $url_string;
}

sub TO_JSON {
    my $self = shift;
    return unbless($self);
}

=head1 NAME

AWS::SNS::Verify - Verifies authenticity of SNS messages.

=head1 VERSION

lib/AWS/SNS/Verify.pm  view on Meta::CPAN

=head1 METHODS

=head2 new

Constructor.

=over

=item body

Required. JSON string posted by AWS SNS. Looks like:

 {
    "Type" : "Notification",
    "MessageId" : "a890c547-5d98-55e2-971d-8826fff56413",
    "TopicArn" : "arn:aws:sns:us-east-1:041977924901:foo",
    "Subject" : "test subject",
    "Message" : "test message",
    "Timestamp" : "2015-02-20T20:59:25.401Z",
    "SignatureVersion" : "1",
    "Signature" : "kzi3JBQz64uFAXG9ZuAwPI2gYW5tT7OF83oeHb8v0/XRPsy0keq2NHTCpQVRxCgPOJ/QUB2Yl/L29/W4hiHMo9+Ns0hrqyasgUfjq+XkVR1WDuYLtNaEA1vLnA0H9usSh3eVVlLhpYzoT4GUoGgstRVvFceW2QVF9EYUQyromlcbOVtVpKCEINAvGEEKJNGTXQQUkPUka3YMhHitgQg1WlFBmf+oweSYUEj8+Ro...

lib/AWS/SNS/Verify.pm  view on Meta::CPAN

Requires Perl 5.12 or higher and these modules:

=over

=item *

Ouch

=item *

JSON

=item * 

HTTP::Tiny

=item * 

MIME::Base64

=item * 



( run in 0.728 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )