diff options
Diffstat (limited to 'src/http')
| -rw-r--r-- | src/http/mod.rs | 12 |
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) } |