jpush 0.4.0

集成极光App推送
Documentation
#[cfg(feature = "spring-rs")]
use async_trait::async_trait;
#[cfg(feature = "spring-rs")]
use spring::app::AppBuilder;
#[cfg(feature = "spring-rs")]
use spring::config::ConfigRegistry;
#[cfg(feature = "spring-rs")]
use spring::plugin::MutableComponentRegistry;
#[cfg(feature = "spring-rs")]
use spring::plugin::Plugin;
#[cfg(feature = "spring-rs")]
use crate::config::JPushConfig;

pub mod config;
pub mod client;
pub mod msg;

#[cfg(feature = "spring-rs")]
pub struct JPushPlugin;

#[cfg(feature = "spring-rs")]
#[async_trait]
impl Plugin for JPushPlugin {
    async fn build(&self, app: &mut AppBuilder) {
        let jpush_config = app.get_config::<JPushConfig>().expect("jpush config load failed");

        let client = Self::get_client(jpush_config);
        app.add_component(client);
    }
}

#[cfg(feature = "spring-rs")]
impl JPushPlugin {
    pub fn get_client(config: JPushConfig) -> client::JPushClient {
        client::JPushClient::new(config)
    }
}