Provided by: libsisimai-perl_4.25.2-1_all bug

NAME

       Sisimai::Message::JSON - Convert bounce object (decoded JSON) to data structure.

SYNOPSIS

           use JSON;
           use Sisimai::Message;

           my $jsonparser = JSON->new;
           my $jsonobject = $jsonparser->decode($jsonstring);
           my $messageobj = Sisimai::Message->new('data' => $jsonobject, 'input' => 'json');

DESCRIPTION

       Sisimai::Message::JSON convert bounce object (decode JSON) to data structure.  When the
       email given as a argument of "new()" method is not a decoded JSON, the method returns
       "undef".

CLASS METHODS

   "new(Hash reference)"
       "new()" is a constructor of Sisimai::Message

           my $jsonparser = JSON->new;
           my $jsonstring = '{"neko":2, "nyaan": "meow", ...}';
           my $jsonobject = $jsonparser->decode($jsonstring);
           my $messageobj = Sisimai::Message->new('data' => $jsonobject, 'input' => 'json');

       If you have implemented a custom MTA module and use it, set the value of "load" in the
       argument of this method as an array reference like following code:

           my $messageobj = Sisimai::Message->new(
                               'data'  => $jsonobject,
                               'load'  => ['Your::Custom::MTA::Module']
                               'input' => 'json',
                         );

       Beginning from v4.19.0, `hook` argument is available to callback user defined method like
       the following codes:

           my $callbackto = sub {
               my $argv = shift;
               my $data = { 'feedback-id' => '', 'account-id' => '' };
               my $mesg = $argv->{'message'} || {};

               if( exists $mesg->{'feedbackId'} ) {
                   $data->{'feedback-id'} = $mesg->{'feedback-Id'};
               }

               if( exists $mesg->{'sendingAccountId'} ) {
                   $data->{'account-id'} = $mesg->{'sendingAccountId'};
               }
               return $data;
           };
           my $messageobj = Sisimai::Message->new(
                               'data'  => $jsonobject,
                               'hook'  => $callbackto,
                               'input' => 'json' );
           print $message->catch->{'feedback-id'};    # 01010157e48fa03f-c7e948fe-...

INSTANCE METHODS

   "(from)"
       "from()" returns empty string

           print $message->from;   # ''

   "header()"
       "header()" returns empty Hash

           print $message->header; # {}

   "ds()"
       "ds()" returns an array reference which include contents of delivery status.

           for my $e ( @{ $message->ds } ) {
               print $e->{'status'};   # 5.1.1
               print $e->{'recipient'};# neko@example.jp
           }

   "rfc822()"
       "rfc822()" returns a hash reference which include the header part of the original message.

           print $message->rfc822->{'from'};   # cat@example.com
           print $message->rfc822->{'to'};     # neko@example.jp

   "catch()"
       "catch()" returns any data generated by user-defined method passed at the `hook` argument
       of new() constructor.

AUTHOR

       azumakuniyuki

COPYRIGHT

       Copyright (C) 2014-2019 azumakuniyuki, All rights reserved.

LICENSE

       This software is distributed under The BSD 2-Clause License.