Net-APNS-Simple

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

            "Test::Spellunker" : "v0.2.7"
         }
      },
      "runtime" : {
         "recommends" : {
            "Crypt::JWT" : "0.018",
            "Crypt::PK::ECC" : "0.059",
            "Net::HTTP" : "0"
         },
         "requires" : {
            "IO::Socket::SSL" : "2.038",
            "JSON" : "0",
            "Moo" : "0",
            "Protocol::HTTP2" : "1.08",
            "URI" : "0",
            "perl" : "5.008001"
         }
      },
      "test" : {
         "requires" : {
            "Crypt::JWT" : "0.018",

META.yml  view on Meta::CPAN

    - builder
provides:
  Net::APNS::Simple:
    file: lib/Net/APNS/Simple.pm
    version: '0.07'
recommends:
  Crypt::JWT: '0.018'
  Crypt::PK::ECC: '0.059'
  Net::HTTP: '0'
requires:
  IO::Socket::SSL: '2.038'
  JSON: '0'
  Moo: '0'
  Protocol::HTTP2: '1.08'
  URI: '0'
  perl: '5.008001'
resources:
  bugtracker: https://github.com/rockbone/p5-Net-APNS-Simple/issues
  homepage: https://github.com/rockbone/p5-Net-APNS-Simple
  repository: git://github.com/rockbone/p5-Net-APNS-Simple.git
version: '0.07'

cpanfile  view on Meta::CPAN

requires 'IO::Socket::SSL' => '>= 2.038';
requires 'JSON';
requires 'Moo';
requires 'Protocol::HTTP2' => '>= 1.08';
requires 'URI';
requires 'perl', '5.008001';

recommends 'Crypt::PK::ECC' => '>= 0.059';
recommends 'Crypt::JWT' => '>= 0.018';
recommends 'Net::HTTP';

lib/Net/APNS/Simple.pm  view on Meta::CPAN

package Net::APNS::Simple;
use 5.008001;
use strict;
use warnings;
use Carp ();
use JSON;
use Moo;
use Protocol::HTTP2::Client;
use IO::Select;
use IO::Socket::SSL qw();

our $VERSION = "0.07";

has [qw/auth_key key_id team_id bundle_id development/] => (
    is => 'rw',
);

has [qw/cert_file key_file passwd_cb/] => (
    is => 'rw',
);

lib/Net/APNS/Simple.pm  view on Meta::CPAN

            $socket = Net::HTTP->new(PeerAddr => $proxy) || die $@;
            $socket->write_request(
                CONNECT => "$host:$port",
                Host => "$host:$port",
                Connection => "Keep-Alive",
                'Proxy-Connection' => "Keep-Alive",
            );
            my ($code, $mess, %h) = $socket->read_response_headers;
            $code eq '200' or die "Proxy error: $code $mess";

            IO::Socket::SSL->start_SSL(
                $socket,
                # explicitly set hostname we should use for SNI
                SSL_hostname => $host,
                %ssl_opts,
            ) or die $! || $IO::Socket::SSL::SSL_ERROR;
        }
        else {
            # TLS transport socket
            $socket = IO::Socket::SSL->new(
                PeerHost => $host,
                PeerPort => $port,
                %ssl_opts,
            ) or die $! || $IO::Socket::SSL::SSL_ERROR;
        }
        $self->{_socket} = $socket;

        # non blocking
        $self->{_socket}->blocking(0);
    }
    return $self->{_socket};
}

sub _client {



( run in 0.481 second using v1.01-cache-2.11-cpan-4d50c553e7e )