[][src]Struct rust_asana::schema::response::Response

pub struct Response {
    pub data: Value,
    pub errors: Vec<Error>,
}

Represents a response from Asana

This is a JSON object that could have 2 (or more idk) keys: "data" or "errors". You can deserialize a payload from the Asana API into one of these.

You can use value() or values() to get the data returned by Asana, serialized into one of the structs in the schema module. You can use errors() to return a vector of schema::Errors.

Fields

data: Valueerrors: Vec<Error>

Implementations

impl Response[src]

pub fn into<T: DeserializeOwned>(self) -> Result<T, Vec<Error>>[src]

Consumes the response, returning Ok() with the type provided or Err() with a vector of schema::Errors.

pub fn value<T: DeserializeOwned>(&self) -> Option<T>[src]

Returns the single value of type T. If Asana returns an array of objects, this will return None. See values().

use rust_asana::Response;
use rust_asana::schema::UserCompact;

// This is UserCompact object, defined by Asana
let payload = r#"{
    "data": {
        "gid": "12345",
        "resource_type": "user",
        "name": "Greg Sanchez"
    }
}"#;

let resp = serde_json::from_str::<Response>(&payload).unwrap();
let user = resp.value::<UserCompact>();
assert!(user.is_some());
assert_eq!(user.unwrap().name, "Greg Sanchez");

pub fn errors(&self) -> Option<Vec<Error>>[src]

Same as values(), but returns the Asana errors (always a vector).

pub fn values<T: DeserializeOwned>(&self) -> Option<Vec<T>>[src]

This is the same as value(), but it returns a vector of values. Some requests from Asana return an array of values, which this is meant for.

Important Note: This methid will work on a payload of only one object. It will convert it to a vector of one item. As long as there is serializable data in the data field of the payload, this will return the object(s).

If the response is an empty array, this will return Some([]), not None

use rust_asana::Response;
use rust_asana::schema::UserCompact;

// This is UserCompact object, defined by Asana
let payload = r#"{
    "data": [
        {
            "gid": "12345",
            "resource_type": "user",
            "name": "Greg Sanchez"
        },
        {
            "gid": "54321",
            "resource_type": "user",
            "name": "Luke Lastname"
        }
    ]
}"#;

let resp = serde_json::from_str::<Response>(&payload).unwrap();
let user = resp.values::<UserCompact>();
assert!(user.is_some());
assert_eq!(user.unwrap()[0].name, "Greg Sanchez");

Trait Implementations

impl<'de> Deserialize<'de> for Response[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.