bark_dev/lib.rs
1// MIT License
2//
3// Copyright (c) 2025 66f94eae
4//
5// Permission is hereby granted, free of charge, to any person obtaining a copy
6// of this software and associated documentation files (the "Software"), to deal
7// in the Software without restriction, including without limitation the rights
8// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9// copies of the Software, and to permit persons to whom the Software is
10// furnished to do so, subject to the following conditions:
11//
12// The above copyright notice and this permission notice shall be included in all
13// copies or substantial portions of the Software.
14//
15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21// SOFTWARE.
22
23/// A simple library for sending push notifications
24///
25/// to iOS devices which install the [bark] app using the APNS protocol.
26///
27/// [bark]: https://github.com/finb/bark
28/// # Example
29/// ```rust
30/// use bark::{bark::Bark, msg::Msg};
31///
32/// let mut bark: Bark = Bark::new();
33///
34/// let msg = Msg::new("notify".to_string(), "hello world".to_string());
35///
36/// let devices: Vec<String> = vec!["the_device_token_get_from_bark_app"];
37///
38/// let send_reult: Option<Vec<String>> = None;//bark.send(&msg, &devices);
39///
40/// // send result is None if success
41/// assert!(send_reult.is_none());
42///
43/// // send result is a vector of failed devices if failed
44/// if let Some(failed_devices) = send_reult {
45/// // do something
46/// println!("send failed: {:?}", failed_devices);
47/// };
48/// ```
49/// # Note
50///
51/// request apns need a token
52///
53/// The token is cached in memory by default and refreshed automatically
54///
55/// If your app frequently run in oneshot mode, or you want share the token with other app
56///
57/// you can call `bark.token()` to get the token and presist it
58///
59/// and call `bark.born(time_stamp, token)` to new a bark instance with the token
60///
61///
62/// # Features
63/// - [x] send push notifications to iOS devices which install the #bark# app using the APNS protocol.
64/// - [x] async send push notificationsto iOS devices which install the #bark# app using the APNS protocol
65pub mod bark;
66mod apns;
67pub mod msg;