[![Build Status](https://travis-ci.org/xaicron/p5-WWW-FCM-HTTP.svg?branch=master)](https://travis-ci.org/xaicron/p5-WWW-FCM-HTTP)
# NAME

WWW::FCM::HTTP - HTTP Client for Firebase Cloud Messaging

# SYNOPSIS

   use WWW::FCM::HTTP;

   my $api_key = 'Your API key'; # from google-services.json
   my $fcm     = WWW::FCM::HTTP->new({ api_key => $api_key });

   # send multicast request
   my $res = $fcm->send({
       registration_ids => [ $reg_id, ... ],
       data             => {
           message   => 'blah blah blah',
           other_key => 'foo bar baz',
       },
   });

   # handle HTTP error
   unless ($res->is_success) {
       die $res->error;
   }

   my $multicast_id  = $res->multicast_id;
   my $success       = $res->success;
   my $failure       = $res->failure;
   my $canonical_ids = $res->canonical_ids;
   my $results       = $res->results;
   while (my $result = $results->next) {
       my $sent_reg_id     = $result->sent_reg_id;
       my $message_id      = $result->message_id;
       my $registration_id = $result->registration_id;
       my $error           = $result->error;

       if ($result->is_success) {
           say sprintf 'message_id: %s, sent_reg_id: %s',
               $message_id, $sent_reg_id;
       }
       else {
           warn sprintf 'error: %s, sent_reg_id: %s',
               $error, $sent_reg_id;
       }

       if ($result->has_canonical_id) {
           say sprintf 'sent_reg_id: %s is old registration_id, you will update to %s',
               $sent_reg_id, $registration_id;
       }
   }

# DESCRIPTION

WWW::FCM::HTTP is a HTTP Clinet for Firebase Cloud Messaging.

SEE ALSO [https://firebase.google.com/docs/cloud-messaging/http-server-ref](https://firebase.google.com/docs/cloud-messaging/http-server-ref).

# METHODS

## new(%args)

   my $fcm = WWW::FCM::HTTP->new({
       api_key => $api_key,
   });

- api\_key : Str

   Required. FCM API Key. See client.api\_key in google-services.json.

- api\_url : Str

   Optional. `https://fcm.googleapis.com/fcm/send` by default.

- ua : LWP::UserAgent

   Optional. You can override custom LWP::UserAgent instance if needed.

## send(\\%payload)

Send request to FCM. Returns `WWW::FCM::HTTP::Response` instance.

   my $res = $fcm->send({
       to   => '/topics/all',
       data => {
           title => 'message title',
           body  => 'message body',
       },
   });

The possible parameters are see documents [https://firebase.google.com/docs/cloud-messaging/http-server-ref](https://firebase.google.com/docs/cloud-messaging/http-server-ref).

# LICENSE

Copyright (C) xaicron.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

# AUTHOR

xaicron <[email protected]>