aboutsummaryrefslogtreecommitdiff
path: root/src/http
diff options
context:
space:
mode:
Diffstat (limited to 'src/http')
-rw-r--r--src/http/mod.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/http/mod.rs b/src/http/mod.rs
index d15cf45..eb4235d 100644
--- a/src/http/mod.rs
+++ b/src/http/mod.rs
@@ -1370,6 +1370,14 @@ pub fn remove_group_recipient(group_id: u64, user_id: u64) -> Result<()> {
}
/// Sends a file to a channel.
+///
+/// # Errors
+///
+/// Returns an
+/// [`HttpError::InvalidRequest(PayloadTooLarge)`][`HttpError::InvalidRequest`]
+/// if the file is too large to send.
+///
+/// [`HttpError::InvalidRequest`]: enum.HttpError.html#variant.InvalidRequest
pub fn send_file<R: Read>(channel_id: u64, mut file: R, filename: &str, map: JsonMap)
-> Result<Message> {
let uri = format!(api!("/channels/{}/messages"), channel_id);
@@ -1400,6 +1408,10 @@ pub fn send_file<R: Read>(channel_id: u64, mut file: R, filename: &str, map: Jso
let response = request.send()?;
+ if response.status.class() != StatusClass::Success {
+ return Err(Error::Http(HttpError::InvalidRequest(response.status)));
+ }
+
serde_json::from_reader::<HyperResponse, Message>(response).map_err(From::from)
}