fortnox 0.1.3

A library for integrating with Fortnox.
Documentation
use crate::{Error, Gateway, Order, BASE_URL};
use serde::{Deserialize, Serialize};

impl Gateway {
    pub async fn edit_order<'a>(&self, order: &'a Order) -> Result<Order, Error> {
        let document_number = match &order.document_number {
            Some(document_number) => document_number,
            None => {
                return Err(Error::SerializationError(format!(
                    "Cannot edit an order with no document number."
                )))
            }
        };

        #[derive(Serialize)]
        #[serde(rename_all = "PascalCase")]
        struct Request<'a> {
            order: &'a Order,
        }

        let body = Request { order: &order };

        let url = format!("{}/orders/{}", BASE_URL, document_number);

        #[derive(Deserialize)]
        #[serde(rename_all = "PascalCase")]
        struct Response {
            order: Order,
        }

        let res: Response = self.put(&url, &body).await?;
        Ok(res.order)
    }
}