APNS-Agent

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

            "Test::Spellunker" : "v0.2.7"
         }
      },
      "runtime" : {
         "requires" : {
            "AnyEvent::APNS" : "0",
            "Cache::LRU" : "0",
            "Class::Accessor::Lite::Lazy" : "0.03",
            "Encode" : "0",
            "Hash::Rename" : "0",
            "JSON::XS" : "0",
            "Log::Minimal" : "0",
            "Plack::Loader" : "0",
            "Plack::Request" : "0",
            "Router::Boom::Method" : "0",
            "feature" : "0",
            "perl" : "5.010"
         }
      },
      "test" : {
         "requires" : {

META.yml  view on Meta::CPAN

provides:
  APNS::Agent:
    file: lib/APNS/Agent.pm
    version: 0.06
requires:
  AnyEvent::APNS: 0
  Cache::LRU: 0
  Class::Accessor::Lite::Lazy: 0.03
  Encode: 0
  Hash::Rename: 0
  JSON::XS: 0
  Log::Minimal: 0
  Plack::Loader: 0
  Plack::Request: 0
  Router::Boom::Method: 0
  feature: 0
  perl: 5.010
resources:
  bugtracker: https://github.com/Songmu/p5-APNS-Agent/issues
  homepage: https://github.com/Songmu/p5-APNS-Agent
  repository: git://github.com/Songmu/p5-APNS-Agent.git

cpanfile  view on Meta::CPAN

requires 'AnyEvent::APNS';
requires 'Cache::LRU';
requires 'Class::Accessor::Lite::Lazy', '0.03';
requires 'Encode';
requires 'Hash::Rename';
requires 'JSON::XS';
requires 'Log::Minimal';
requires 'Plack::Loader';
requires 'Plack::Request';
requires 'Router::Boom::Method';
requires 'feature';
requires 'perl', '5.010_000';

on configure => sub {
    requires 'CPAN::Meta';
    requires 'CPAN::Meta::Prereqs';

lib/APNS/Agent.pm  view on Meta::CPAN

package APNS::Agent;
use 5.010;
use strict;
use warnings;

our $VERSION = "0.06";

use AnyEvent::APNS;
use Cache::LRU;
use Encode qw/decode_utf8/;
use JSON::XS;
use Log::Minimal;
use Plack::Request;
use Router::Boom::Method;

use Class::Accessor::Lite::Lazy 0.03 (
    new => 1,
    ro => [qw/
        certificate
        private_key
        sandbox

lib/APNS/Agent.pm  view on Meta::CPAN

    };
}

sub _do_main {
    my ($self, $req) = @_;

    my $token = $req->param('token') or return [400, [], ['Bad Request']];

    my $payload;
    if (my $payload_json = $req->param('payload') ) {
        state $json_driver = JSON::XS->new->utf8;
        local $@;
        $payload = eval { $json_driver->decode($payload_json) };
        return [400, [], ['BAD REQUEST']] if $@;
    }
    elsif (my $alert = $req->param('alert')) {
        $payload = +{
            alert => decode_utf8($alert),
        };
    }
    return [400, [], ['BAD REQUEST']] unless $payload;

t/01_basic.t  view on Meta::CPAN

use warnings;
use utf8;
use Test::More 0.98;
use Test::TCP;
use Plack::Test;
use HTTP::Request::Common;

use AnyEvent;
use AnyEvent::Socket;

use JSON::XS;
use APNS::Agent;

my $cv = AnyEvent->condvar;

my $apns_port = empty_port;
tcp_server undef, $apns_port, sub {
    my $fh = shift or die $!;
    my $handle = AnyEvent::Handle->new(fh => $fh);

    $handle->push_read( chunk => 1, sub {



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