1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
#![doc(html_root_url = "https://panicbit.github.io/fcm-rust/fcm/")]
//! fcm
//! ===
//!
//! # Usage:
//!
//! Add this to `Cargo.toml`:
//!
//! ```ignore
//! [dependencies]
//! fcm = "0.2.0"
//! ```
//!
//! then add this to your crate root:
//!
//! ```ignore
//! extern crate fcm;
//! extern crate futures;
//! extern crate tokio_core;
//! ```
//!
//! # Examples:
//!
//! Here is an example to send out a FCM Message with some custom data:
//!
//! ```no_run
//! # extern crate fcm;
//! # extern crate futures;
//! # extern crate tokio_core;
//!
//! # use std::collections::HashMap;
//! # fn main() {
//! let mut core = tokio_core::reactor::Core::new().unwrap();
//! let handle = core.handle();
//! let client = fcm::Client::new(&handle).unwrap();
//!
//! let mut map = HashMap::new();
//! map.insert("message", "Howdy!");
//!
//! let mut builder = fcm::MessageBuilder::new("<FCM API Key>", "<registration id>");
//! builder.data(map);
//!
//! let work = client.send(builder.finalize());
//!
//! match core.run(work) {
//!     Ok(response) => println!("Sent: {:?}", response),
//!     Err(error) => println!("Error: {:?}", error),
//! };
//! # }
//! ```
//!
//! To send a message using FCM Notifications, we first build the notification:
//!
//! ```rust
//! # extern crate fcm;
//!
//! # fn main() {
//! let mut builder = fcm::NotificationBuilder::new();
//! builder.title("Hey!");
//! builder.body("Do you want to catch up later?");
//! let notification = builder.finalize();
//! # }
//! ```
//! And then set it in the message, before sending it:
//!
//! ```no_run
//! # extern crate fcm;
//! # extern crate futures;
//! # extern crate tokio_core;
//!
//! # fn main() {
//! let mut core = tokio_core::reactor::Core::new().unwrap();
//! let handle = core.handle();
//! let client = fcm::Client::new(&handle).unwrap();
//!
//! let mut notification_builder = fcm::NotificationBuilder::new();
//! notification_builder.title("Hey!");
//! notification_builder.body("Do you want to catch up later?");
//!
//! let notification = notification_builder.finalize();
//! let mut message_builder = fcm::MessageBuilder::new("<FCM API Key>", "<registration id>");
//! message_builder.notification(notification);
//!
//! let work = client.send(message_builder.finalize());
//! let result = core.run(work);
//!
//! match result {
//!   Ok(response) => println!("message_id: {:?}", response.message_id),
//!   Err(error) => println!("Error: {:?}", error),
//! }
//! # }
//! ```

extern crate rustc_serialize;
extern crate hyper;
extern crate futures;
extern crate tokio_core;
extern crate tokio_service;
extern crate hyper_tls;
extern crate native_tls;

mod message;
pub use message::*;
mod notification;
pub use notification::*;
mod client;
pub use client::*;

pub use client::response::FcmError as Error;