use super::Transaction;
use crate::{endpoints::handle_response, Result};
pub struct Request {
reqwest_builder: reqwest::RequestBuilder,
expand_merchant: bool,
}
impl Request {
pub(crate) fn new(
http_client: &reqwest::Client,
access_token: &str,
transaction_id: &str,
) -> Self {
let reqwest_builder = http_client
.get(&format!(
"https://api.monzo.com/transactions/{}",
transaction_id
))
.bearer_auth(access_token);
Self {
reqwest_builder,
expand_merchant: false,
}
}
pub async fn send(self) -> Result<Transaction> {
let mut reqwest_builder = self.reqwest_builder;
if self.expand_merchant {
reqwest_builder = reqwest_builder.query(&("expand[]", "merchant"))
}
handle_response(reqwest_builder).await
}
pub fn expand_merchant(mut self) -> Self {
self.expand_merchant = true;
self
}
}