1use crate::{ffi, MessageHeaders};
7use glib::translate::*;
8
9glib::wrapper! {
10 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
11 pub struct Multipart(Boxed<ffi::SoupMultipart>);
12
13 match fn {
14 copy => |ptr| glib::gobject_ffi::g_boxed_copy(ffi::soup_multipart_get_type(), ptr as *mut _) as *mut ffi::SoupMultipart,
15 free => |ptr| glib::gobject_ffi::g_boxed_free(ffi::soup_multipart_get_type(), ptr as *mut _),
16 type_ => || ffi::soup_multipart_get_type(),
17 }
18}
19
20impl Multipart {
21 #[doc(alias = "soup_multipart_new")]
22 pub fn new(mime_type: &str) -> Multipart {
23 assert_initialized_main_thread!();
24 unsafe { from_glib_full(ffi::soup_multipart_new(mime_type.to_glib_none().0)) }
25 }
26
27 #[doc(alias = "soup_multipart_new_from_message")]
28 #[doc(alias = "new_from_message")]
29 pub fn from_message(headers: &MessageHeaders, body: &glib::Bytes) -> Option<Multipart> {
30 assert_initialized_main_thread!();
31 unsafe {
32 from_glib_full(ffi::soup_multipart_new_from_message(
33 headers.to_glib_none().0,
34 body.to_glib_none().0,
35 ))
36 }
37 }
38
39 #[doc(alias = "soup_multipart_append_form_file")]
40 pub fn append_form_file(
41 &mut self,
42 control_name: &str,
43 filename: Option<&str>,
44 content_type: Option<&str>,
45 body: &glib::Bytes,
46 ) {
47 unsafe {
48 ffi::soup_multipart_append_form_file(
49 self.to_glib_none_mut().0,
50 control_name.to_glib_none().0,
51 filename.to_glib_none().0,
52 content_type.to_glib_none().0,
53 body.to_glib_none().0,
54 );
55 }
56 }
57
58 #[doc(alias = "soup_multipart_append_form_string")]
59 pub fn append_form_string(&mut self, control_name: &str, data: &str) {
60 unsafe {
61 ffi::soup_multipart_append_form_string(
62 self.to_glib_none_mut().0,
63 control_name.to_glib_none().0,
64 data.to_glib_none().0,
65 );
66 }
67 }
68
69 #[doc(alias = "soup_multipart_append_part")]
70 pub fn append_part(&mut self, headers: &MessageHeaders, body: &glib::Bytes) {
71 unsafe {
72 ffi::soup_multipart_append_part(
73 self.to_glib_none_mut().0,
74 headers.to_glib_none().0,
75 body.to_glib_none().0,
76 );
77 }
78 }
79
80 #[doc(alias = "soup_multipart_get_length")]
81 #[doc(alias = "get_length")]
82 pub fn length(&mut self) -> i32 {
83 unsafe { ffi::soup_multipart_get_length(self.to_glib_none_mut().0) }
84 }
85
86 #[doc(alias = "soup_multipart_get_part")]
87 #[doc(alias = "get_part")]
88 pub fn part(&mut self, part: i32) -> Option<(MessageHeaders, glib::Bytes)> {
89 unsafe {
90 let mut headers = std::ptr::null_mut();
91 let mut body = std::ptr::null_mut();
92 let ret = from_glib(ffi::soup_multipart_get_part(
93 self.to_glib_none_mut().0,
94 part,
95 &mut headers,
96 &mut body,
97 ));
98 if ret {
99 Some((from_glib_none(headers), from_glib_none(body)))
100 } else {
101 None
102 }
103 }
104 }
105
106 #[doc(alias = "soup_multipart_to_message")]
107 pub fn to_message(&mut self, dest_headers: &MessageHeaders) -> glib::Bytes {
108 unsafe {
109 let mut dest_body = std::ptr::null_mut();
110 ffi::soup_multipart_to_message(
111 self.to_glib_none_mut().0,
112 dest_headers.to_glib_none().0,
113 &mut dest_body,
114 );
115 from_glib_full(dest_body)
116 }
117 }
118}