1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use crate::{
payloads,
requests::Payload,
types::{InputFile, InputFileLike, InputMedia},
};
pub trait MultipartPayload: Payload {
fn copy_files(&self, into: &mut dyn FnMut(InputFile));
fn move_files(&mut self, into: &mut dyn FnMut(InputFile));
}
impl MultipartPayload for payloads::SendMediaGroup {
fn copy_files(&self, into: &mut dyn FnMut(InputFile)) {
self.media.iter().flat_map(InputMedia::files).for_each(|f| f.copy_into(into))
}
fn move_files(&mut self, into: &mut dyn FnMut(InputFile)) {
self.media.iter_mut().flat_map(InputMedia::files_mut).for_each(|f| f.move_into(into))
}
}
impl MultipartPayload for payloads::EditMessageMedia {
fn copy_files(&self, into: &mut dyn FnMut(InputFile)) {
self.media.files().for_each(|f| f.copy_into(into))
}
fn move_files(&mut self, into: &mut dyn FnMut(InputFile)) {
self.media.files_mut().for_each(|f| f.move_into(into))
}
}
impl MultipartPayload for payloads::EditMessageMediaInline {
fn copy_files(&self, into: &mut dyn FnMut(InputFile)) {
self.media.files().for_each(|f| f.copy_into(into))
}
fn move_files(&mut self, into: &mut dyn FnMut(InputFile)) {
self.media.files_mut().for_each(|f| f.move_into(into))
}
}