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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
use crate::Auth;
use glib::{prelude::*, translate::*};
glib::wrapper! {
/// HTTP-based GSS-Negotiate authentication, as defined by
/// [RFC 4559](https://datatracker.ietf.org/doc/html/rfc4559).
///
/// [`Session`][crate::Session]s do not support this type by default; if you want to
/// enable support for it, call [`SessionExt::add_feature_by_type()`][crate::prelude::SessionExt::add_feature_by_type()],
/// passing `SOUP_TYPE_AUTH_NEGOTIATE`.
///
/// This auth type will only work if libsoup was compiled with GSSAPI
/// support; you can check `supported()` to see if it
/// was.
///
/// # Implements
///
/// [`AuthExt`][trait@crate::prelude::AuthExt], [`trait@glib::ObjectExt`]
#[doc(alias = "SoupAuthNegotiate")]
pub struct AuthNegotiate(Object<ffi::SoupAuthNegotiate>) @extends Auth;
match fn {
type_ => || ffi::soup_auth_negotiate_get_type(),
}
}
impl AuthNegotiate {
// rustdoc-stripper-ignore-next
/// Creates a new builder-pattern struct instance to construct [`AuthNegotiate`] objects.
///
/// This method returns an instance of [`AuthNegotiateBuilder`](crate::builders::AuthNegotiateBuilder) which can be used to create [`AuthNegotiate`] objects.
pub fn builder() -> AuthNegotiateBuilder {
AuthNegotiateBuilder::new()
}
/// Indicates whether libsoup was built with GSSAPI support.
///
/// If this is [`false`], `SOUP_TYPE_AUTH_NEGOTIATE` will still be defined and can
/// still be added to a [`Session`][crate::Session], but libsoup will never attempt to
/// actually use this auth type.
///
/// # Returns
///
/// [`true`] if supported otherwise [`false`]
#[doc(alias = "soup_auth_negotiate_supported")]
pub fn supported() -> bool {
assert_initialized_main_thread!();
unsafe { from_glib(ffi::soup_auth_negotiate_supported()) }
}
}
// rustdoc-stripper-ignore-next
/// A [builder-pattern] type to construct [`AuthNegotiate`] objects.
///
/// [builder-pattern]: https://doc.rust-lang.org/1.0.0/style/ownership/builders.html
#[must_use = "The builder must be built to be used"]
pub struct AuthNegotiateBuilder {
builder: glib::object::ObjectBuilder<'static, AuthNegotiate>,
}
impl AuthNegotiateBuilder {
fn new() -> Self {
Self {
builder: glib::object::Object::builder(),
}
}
/// The authority (host:port) being authenticated to.
pub fn authority(self, authority: impl Into<glib::GString>) -> Self {
Self {
builder: self.builder.property("authority", authority.into()),
}
}
/// Whether or not the auth is for a proxy server.
pub fn is_for_proxy(self, is_for_proxy: bool) -> Self {
Self {
builder: self.builder.property("is-for-proxy", is_for_proxy),
}
}
/// The authentication realm.
pub fn realm(self, realm: impl Into<glib::GString>) -> Self {
Self {
builder: self.builder.property("realm", realm.into()),
}
}
// rustdoc-stripper-ignore-next
/// Build the [`AuthNegotiate`].
#[must_use = "Building the object from the builder is usually expensive and is not expected to have side effects"]
pub fn build(self) -> AuthNegotiate {
self.builder.build()
}
}