// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://docs.gtk.org/gio/class.SimpleProxyResolver.html).
pub type SimpleProxyResolver

///|
pub(open) trait ISimpleProxyResolver {
  fn as_simple_proxy_resolver(Self) -> SimpleProxyResolver
  fn set_default_proxy(Self, String?) -> Unit = _
  fn set_ignore_hosts(Self, Array[String]) -> Unit = _
  fn set_uri_proxy(Self, String, String) -> Unit = _
}

///|
pub impl ISimpleProxyResolver for SimpleProxyResolver with fn as_simple_proxy_resolver(
  self,
) {
  self
}

///|
#borrow(default_proxy, __sa_ignore_hosts)
extern "c" fn moonbit_g_simple_proxy_resolver_new(
  default_proxy : @glib.Nullable[Bytes],
  __sa_ignore_hosts : @glib.Nullable[FixedArray[Bytes]],
) -> SimpleProxyResolver = "moonbit_g_simple_proxy_resolver_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/type_func.SimpleProxyResolver.new.html).
pub fn SimpleProxyResolver::new(
  default_proxy : String?,
  ignore_hosts : Array[String]?,
) -> SimpleProxyResolver {
  moonbit_g_simple_proxy_resolver_new(
    match default_proxy {
      Some(s) => @glib.Nullable::some(@encoding/utf8.encode(s))
      None => @glib.Nullable::null()
    },
    match ignore_hosts {
      Some(arr) =>
        @glib.Nullable::some(
          FixedArray::from_array(arr.map(fn(s) { @encoding/utf8.encode(s) })),
        )
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, default_proxy)
extern "c" fn moonbit_g_simple_proxy_resolver_set_default_proxy(
  self_ : SimpleProxyResolver,
  default_proxy : @glib.Nullable[Bytes],
) = "moonbit_g_simple_proxy_resolver_set_default_proxy"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.SimpleProxyResolver.set_default_proxy.html).
pub fn SimpleProxyResolver::set_default_proxy(
  self : SimpleProxyResolver,
  default_proxy : String?,
) -> Unit {
  moonbit_g_simple_proxy_resolver_set_default_proxy(
    self,
    match default_proxy {
      Some(s) => @glib.Nullable::some(@encoding/utf8.encode(s))
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, __sa_ignore_hosts)
extern "c" fn moonbit_g_simple_proxy_resolver_set_ignore_hosts(
  self_ : SimpleProxyResolver,
  __sa_ignore_hosts : FixedArray[Bytes],
) = "moonbit_g_simple_proxy_resolver_set_ignore_hosts"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.SimpleProxyResolver.set_ignore_hosts.html).
pub fn SimpleProxyResolver::set_ignore_hosts(
  self : SimpleProxyResolver,
  ignore_hosts : Array[String],
) -> Unit {
  moonbit_g_simple_proxy_resolver_set_ignore_hosts(
    self,
    FixedArray::from_array(ignore_hosts.map(fn(s) { @encoding/utf8.encode(s) })),
  )
}

///|
#borrow(self_, uri_scheme, proxy)
extern "c" fn moonbit_g_simple_proxy_resolver_set_uri_proxy(
  self_ : SimpleProxyResolver,
  uri_scheme : Bytes,
  proxy : Bytes,
) = "moonbit_g_simple_proxy_resolver_set_uri_proxy"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.SimpleProxyResolver.set_uri_proxy.html).
pub fn SimpleProxyResolver::set_uri_proxy(
  self : SimpleProxyResolver,
  uri_scheme : String,
  proxy : String,
) -> Unit {
  moonbit_g_simple_proxy_resolver_set_uri_proxy(
    self,
    @encoding/utf8.encode(uri_scheme),
    @encoding/utf8.encode(proxy),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_g_simple_proxy_resolver_get_default_proxy(
  self_ : SimpleProxyResolver,
) -> Bytes = "moonbit_g_simple_proxy_resolver_get_default_proxy"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.SimpleProxyResolver.default-proxy.html).
pub fn SimpleProxyResolver::get_default_proxy(
  self : SimpleProxyResolver,
) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_g_simple_proxy_resolver_get_default_proxy(self),
  )
}

///|
impl ISimpleProxyResolver with fn set_default_proxy(self, default_proxy) -> Unit {
  self.as_simple_proxy_resolver().set_default_proxy(default_proxy)
}

///|
impl ISimpleProxyResolver with fn set_ignore_hosts(self, ignore_hosts) -> Unit {
  self.as_simple_proxy_resolver().set_ignore_hosts(ignore_hosts)
}

///|
impl ISimpleProxyResolver with fn set_uri_proxy(self, uri_scheme, proxy) -> Unit {
  self.as_simple_proxy_resolver().set_uri_proxy(uri_scheme, proxy)
}

///|
pub fn SimpleProxyResolver::as_gobject_object(
  self : SimpleProxyResolver,
) -> @gobject.Object = "%identity"

///|
pub impl @gobject.IObject for SimpleProxyResolver with fn as_object(self) {
  self.as_gobject_object()
}

///|
pub fn SimpleProxyResolver::as_proxy_resolver(
  self : SimpleProxyResolver,
) -> ProxyResolver = "%identity"

///|
pub impl IProxyResolver for SimpleProxyResolver with fn as_proxy_resolver(self) {
  self.as_proxy_resolver()
}