Skip to main content

soup/auto/
logger.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from
3// from gir-files (https://github.com/gtk-rs/gir-files)
4// DO NOT EDIT
5
6use crate::{LoggerLogLevel, Message, SessionFeature, ffi};
7use glib::{
8    prelude::*,
9    signal::{SignalHandlerId, connect_raw},
10    translate::*,
11};
12use std::boxed::Box as Box_;
13
14glib::wrapper! {
15    #[doc(alias = "SoupLogger")]
16    pub struct Logger(Object<ffi::SoupLogger, ffi::SoupLoggerClass>) @implements SessionFeature;
17
18    match fn {
19        type_ => || ffi::soup_logger_get_type(),
20    }
21}
22
23impl Logger {
24    #[doc(alias = "soup_logger_new")]
25    pub fn new(level: LoggerLogLevel) -> Logger {
26        assert_initialized_main_thread!();
27        unsafe { from_glib_full(ffi::soup_logger_new(level.into_glib())) }
28    }
29
30    // rustdoc-stripper-ignore-next
31    /// Creates a new builder-pattern struct instance to construct [`Logger`] objects.
32    ///
33    /// This method returns an instance of [`LoggerBuilder`](crate::builders::LoggerBuilder) which can be used to create [`Logger`] objects.
34    pub fn builder() -> LoggerBuilder {
35        LoggerBuilder::new()
36    }
37
38    #[doc(alias = "soup_logger_get_max_body_size")]
39    #[doc(alias = "get_max_body_size")]
40    #[doc(alias = "max-body-size")]
41    pub fn max_body_size(&self) -> i32 {
42        unsafe { ffi::soup_logger_get_max_body_size(self.to_glib_none().0) }
43    }
44
45    #[doc(alias = "soup_logger_set_max_body_size")]
46    #[doc(alias = "max-body-size")]
47    pub fn set_max_body_size(&self, max_body_size: i32) {
48        unsafe {
49            ffi::soup_logger_set_max_body_size(self.to_glib_none().0, max_body_size);
50        }
51    }
52
53    #[doc(alias = "soup_logger_set_request_filter")]
54    pub fn set_request_filter<P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static>(
55        &self,
56        request_filter: P,
57    ) {
58        let request_filter_data: Box_<P> = Box_::new(request_filter);
59        unsafe extern "C" fn request_filter_func<
60            P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static,
61        >(
62            logger: *mut ffi::SoupLogger,
63            msg: *mut ffi::SoupMessage,
64            user_data: glib::ffi::gpointer,
65        ) -> ffi::SoupLoggerLogLevel {
66            unsafe {
67                let logger = from_glib_borrow(logger);
68                let msg = from_glib_borrow(msg);
69                let callback = &*(user_data as *mut P);
70                (*callback)(&logger, &msg).into_glib()
71            }
72        }
73        let request_filter = Some(request_filter_func::<P> as _);
74        unsafe extern "C" fn destroy_func<P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static>(
75            data: glib::ffi::gpointer,
76        ) {
77            unsafe {
78                let _callback = Box_::from_raw(data as *mut P);
79            }
80        }
81        let destroy_call3 = Some(destroy_func::<P> as _);
82        let super_callback0: Box_<P> = request_filter_data;
83        unsafe {
84            ffi::soup_logger_set_request_filter(
85                self.to_glib_none().0,
86                request_filter,
87                Box_::into_raw(super_callback0) as *mut _,
88                destroy_call3,
89            );
90        }
91    }
92
93    #[doc(alias = "soup_logger_set_response_filter")]
94    pub fn set_response_filter<P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static>(
95        &self,
96        response_filter: P,
97    ) {
98        let response_filter_data: Box_<P> = Box_::new(response_filter);
99        unsafe extern "C" fn response_filter_func<
100            P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static,
101        >(
102            logger: *mut ffi::SoupLogger,
103            msg: *mut ffi::SoupMessage,
104            user_data: glib::ffi::gpointer,
105        ) -> ffi::SoupLoggerLogLevel {
106            unsafe {
107                let logger = from_glib_borrow(logger);
108                let msg = from_glib_borrow(msg);
109                let callback = &*(user_data as *mut P);
110                (*callback)(&logger, &msg).into_glib()
111            }
112        }
113        let response_filter = Some(response_filter_func::<P> as _);
114        unsafe extern "C" fn destroy_func<P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static>(
115            data: glib::ffi::gpointer,
116        ) {
117            unsafe {
118                let _callback = Box_::from_raw(data as *mut P);
119            }
120        }
121        let destroy_call3 = Some(destroy_func::<P> as _);
122        let super_callback0: Box_<P> = response_filter_data;
123        unsafe {
124            ffi::soup_logger_set_response_filter(
125                self.to_glib_none().0,
126                response_filter,
127                Box_::into_raw(super_callback0) as *mut _,
128                destroy_call3,
129            );
130        }
131    }
132
133    pub fn level(&self) -> LoggerLogLevel {
134        ObjectExt::property(self, "level")
135    }
136
137    pub fn set_level(&self, level: LoggerLogLevel) {
138        ObjectExt::set_property(self, "level", level)
139    }
140
141    #[doc(alias = "level")]
142    pub fn connect_level_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
143        unsafe extern "C" fn notify_level_trampoline<F: Fn(&Logger) + 'static>(
144            this: *mut ffi::SoupLogger,
145            _param_spec: glib::ffi::gpointer,
146            f: glib::ffi::gpointer,
147        ) {
148            unsafe {
149                let f: &F = &*(f as *const F);
150                f(&from_glib_borrow(this))
151            }
152        }
153        unsafe {
154            let f: Box_<F> = Box_::new(f);
155            connect_raw(
156                self.as_ptr() as *mut _,
157                c"notify::level".as_ptr(),
158                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
159                    notify_level_trampoline::<F> as *const (),
160                )),
161                Box_::into_raw(f),
162            )
163        }
164    }
165
166    #[doc(alias = "max-body-size")]
167    pub fn connect_max_body_size_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
168        unsafe extern "C" fn notify_max_body_size_trampoline<F: Fn(&Logger) + 'static>(
169            this: *mut ffi::SoupLogger,
170            _param_spec: glib::ffi::gpointer,
171            f: glib::ffi::gpointer,
172        ) {
173            unsafe {
174                let f: &F = &*(f as *const F);
175                f(&from_glib_borrow(this))
176            }
177        }
178        unsafe {
179            let f: Box_<F> = Box_::new(f);
180            connect_raw(
181                self.as_ptr() as *mut _,
182                c"notify::max-body-size".as_ptr(),
183                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
184                    notify_max_body_size_trampoline::<F> as *const (),
185                )),
186                Box_::into_raw(f),
187            )
188        }
189    }
190}
191
192impl Default for Logger {
193    fn default() -> Self {
194        glib::object::Object::new::<Self>()
195    }
196}
197
198// rustdoc-stripper-ignore-next
199/// A [builder-pattern] type to construct [`Logger`] objects.
200///
201/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
202#[must_use = "The builder must be built to be used"]
203pub struct LoggerBuilder {
204    builder: glib::object::ObjectBuilder<'static, Logger>,
205}
206
207impl LoggerBuilder {
208    fn new() -> Self {
209        Self {
210            builder: glib::object::Object::builder(),
211        }
212    }
213
214    pub fn level(self, level: LoggerLogLevel) -> Self {
215        Self {
216            builder: self.builder.property("level", level),
217        }
218    }
219
220    pub fn max_body_size(self, max_body_size: i32) -> Self {
221        Self {
222            builder: self.builder.property("max-body-size", max_body_size),
223        }
224    }
225
226    // rustdoc-stripper-ignore-next
227    /// Build the [`Logger`].
228    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
229    pub fn build(self) -> Logger {
230        assert_initialized_main_thread!();
231        self.builder.build()
232    }
233}