tina-core 0.0.2

Tina platform
Documentation
//! Response属性
use crate::tina::data::app_error::AppError;
use crate::tina::data::AppResult;
use http::header::HeaderName;
use http::HeaderValue;
use std::borrow::Cow;

/// 原始的Response
pub type ResRaw = super::response_ext::ResRaw;
/// 原始的Response
pub type Response = super::response_ext::Response;

/// Response属性
pub trait ResponseAttribute {
    /// 当前Response是否成功
    fn success(&self) -> bool;
    /// 设置Response是否成功
    fn set_success(&mut self, flag: bool);
    /// 获取异常信息, 只有success = false时才有
    fn get_error_message(&self) -> Option<Cow<str>>;
}

impl ResponseAttribute for AppError {
    fn success(&self) -> bool {
        false
    }

    fn set_success(&mut self, _: bool) {
        // 什么也不做
    }

    fn get_error_message(&self) -> Option<Cow<str>> {
        Some(Cow::Owned(format!("{}", self)))
    }
}

/// Response扩展
pub trait HttpResponseExt: ResponseAttribute {
    /// 添加Header
    fn add_response_header(&mut self, header_name: HeaderName, header_value: HeaderValue) -> AppResult<()>;
}