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::{ffi, LoggerLogLevel, Message, SessionFeature};
7use glib::{
8    prelude::*,
9    signal::{connect_raw, SignalHandlerId},
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            let logger = from_glib_borrow(logger);
67            let msg = from_glib_borrow(msg);
68            let callback = &*(user_data as *mut P);
69            (*callback)(&logger, &msg).into_glib()
70        }
71        let request_filter = Some(request_filter_func::<P> as _);
72        unsafe extern "C" fn destroy_func<P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static>(
73            data: glib::ffi::gpointer,
74        ) {
75            let _callback = Box_::from_raw(data as *mut P);
76        }
77        let destroy_call3 = Some(destroy_func::<P> as _);
78        let super_callback0: Box_<P> = request_filter_data;
79        unsafe {
80            ffi::soup_logger_set_request_filter(
81                self.to_glib_none().0,
82                request_filter,
83                Box_::into_raw(super_callback0) as *mut _,
84                destroy_call3,
85            );
86        }
87    }
88
89    #[doc(alias = "soup_logger_set_response_filter")]
90    pub fn set_response_filter<P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static>(
91        &self,
92        response_filter: P,
93    ) {
94        let response_filter_data: Box_<P> = Box_::new(response_filter);
95        unsafe extern "C" fn response_filter_func<
96            P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static,
97        >(
98            logger: *mut ffi::SoupLogger,
99            msg: *mut ffi::SoupMessage,
100            user_data: glib::ffi::gpointer,
101        ) -> ffi::SoupLoggerLogLevel {
102            let logger = from_glib_borrow(logger);
103            let msg = from_glib_borrow(msg);
104            let callback = &*(user_data as *mut P);
105            (*callback)(&logger, &msg).into_glib()
106        }
107        let response_filter = Some(response_filter_func::<P> as _);
108        unsafe extern "C" fn destroy_func<P: Fn(&Logger, &Message) -> LoggerLogLevel + 'static>(
109            data: glib::ffi::gpointer,
110        ) {
111            let _callback = Box_::from_raw(data as *mut P);
112        }
113        let destroy_call3 = Some(destroy_func::<P> as _);
114        let super_callback0: Box_<P> = response_filter_data;
115        unsafe {
116            ffi::soup_logger_set_response_filter(
117                self.to_glib_none().0,
118                response_filter,
119                Box_::into_raw(super_callback0) as *mut _,
120                destroy_call3,
121            );
122        }
123    }
124
125    pub fn level(&self) -> LoggerLogLevel {
126        ObjectExt::property(self, "level")
127    }
128
129    pub fn set_level(&self, level: LoggerLogLevel) {
130        ObjectExt::set_property(self, "level", level)
131    }
132
133    #[doc(alias = "level")]
134    pub fn connect_level_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
135        unsafe extern "C" fn notify_level_trampoline<F: Fn(&Logger) + 'static>(
136            this: *mut ffi::SoupLogger,
137            _param_spec: glib::ffi::gpointer,
138            f: glib::ffi::gpointer,
139        ) {
140            let f: &F = &*(f as *const F);
141            f(&from_glib_borrow(this))
142        }
143        unsafe {
144            let f: Box_<F> = Box_::new(f);
145            connect_raw(
146                self.as_ptr() as *mut _,
147                b"notify::level\0".as_ptr() as *const _,
148                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
149                    notify_level_trampoline::<F> as *const (),
150                )),
151                Box_::into_raw(f),
152            )
153        }
154    }
155
156    #[doc(alias = "max-body-size")]
157    pub fn connect_max_body_size_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
158        unsafe extern "C" fn notify_max_body_size_trampoline<F: Fn(&Logger) + 'static>(
159            this: *mut ffi::SoupLogger,
160            _param_spec: glib::ffi::gpointer,
161            f: glib::ffi::gpointer,
162        ) {
163            let f: &F = &*(f as *const F);
164            f(&from_glib_borrow(this))
165        }
166        unsafe {
167            let f: Box_<F> = Box_::new(f);
168            connect_raw(
169                self.as_ptr() as *mut _,
170                b"notify::max-body-size\0".as_ptr() as *const _,
171                Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>(
172                    notify_max_body_size_trampoline::<F> as *const (),
173                )),
174                Box_::into_raw(f),
175            )
176        }
177    }
178}
179
180impl Default for Logger {
181    fn default() -> Self {
182        glib::object::Object::new::<Self>()
183    }
184}
185
186// rustdoc-stripper-ignore-next
187/// A [builder-pattern] type to construct [`Logger`] objects.
188///
189/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
190#[must_use = "The builder must be built to be used"]
191pub struct LoggerBuilder {
192    builder: glib::object::ObjectBuilder<'static, Logger>,
193}
194
195impl LoggerBuilder {
196    fn new() -> Self {
197        Self {
198            builder: glib::object::Object::builder(),
199        }
200    }
201
202    pub fn level(self, level: LoggerLogLevel) -> Self {
203        Self {
204            builder: self.builder.property("level", level),
205        }
206    }
207
208    pub fn max_body_size(self, max_body_size: i32) -> Self {
209        Self {
210            builder: self.builder.property("max-body-size", max_body_size),
211        }
212    }
213
214    // rustdoc-stripper-ignore-next
215    /// Build the [`Logger`].
216    #[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
217    pub fn build(self) -> Logger {
218        self.builder.build()
219    }
220}