summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gio/Makefile.am1
-rw-r--r--gio/gio.override1
-rw-r--r--gio/gresolver.override57
-rw-r--r--tests/test_gresolver.py21
4 files changed, 80 insertions, 0 deletions
diff --git a/gio/Makefile.am b/gio/Makefile.am
index 1c5b41f..51a8fbc 100644
--- a/gio/Makefile.am
+++ b/gio/Makefile.am
@@ -55,6 +55,7 @@ GIO_OVERRIDES = \
gmemoryoutputstream.override \
gmount.override \
goutputstream.override \
+ gresolver.override \
gvolume.override \
gvolumemonitor.override
diff --git a/gio/gio.override b/gio/gio.override
index c9b13c3..62833ee 100644
--- a/gio/gio.override
+++ b/gio/gio.override
@@ -247,6 +247,7 @@ include
gmount.override
ginputstream.override
goutputstream.override
+ gresolver.override
gvolume.override
gvolumemonitor.override
%%
diff --git a/gio/gresolver.override b/gio/gresolver.override
new file mode 100644
index 0000000..1f2d9b6
--- /dev/null
+++ b/gio/gresolver.override
@@ -0,0 +1,57 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * pygobject - Python bindings for GObject
+ * Copyright (C) 2009 Gian Mario Tagliaretti
+ *
+ * gresolver.override: module overrides for GResolver
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ */
+%%
+override g_resolver_lookup_by_name kwargs
+static PyObject *
+_wrap_g_resolver_lookup_by_name(PyGObject *self,
+ PyObject *args,
+ PyObject *kwargs)
+{
+ static char *kwlist[] = { "hostname", "cancellable", NULL };
+ gchar *hostname;
+ PyGObject *pycancellable = NULL;
+ GCancellable *cancellable;
+ GList *addr;
+ GError *error = NULL;
+ PyObject *ret;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+ "s|O:gio.Resolver.lookup_by_name",
+ kwlist,
+ &hostname,
+ &pycancellable))
+ return NULL;
+
+ if (!pygio_check_cancellable(pycancellable, &cancellable))
+ return NULL;
+
+ addr = g_resolver_lookup_by_name(G_RESOLVER(self->obj),
+ hostname, cancellable, &error);
+
+ if (addr) {
+ PYLIST_FROMGLIST(ret, addr, pygobject_new(list_item), g_resolver_free_addresses, NULL);
+ return ret;
+ } else {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+}
diff --git a/tests/test_gresolver.py b/tests/test_gresolver.py
new file mode 100644
index 0000000..67ffbb2
--- /dev/null
+++ b/tests/test_gresolver.py
@@ -0,0 +1,21 @@
+# -*- Mode: Python -*-
+
+import os
+import unittest
+
+from common import gio
+
+
+class TestResolver(unittest.TestCase):
+ def setUp(self):
+ self.resolver = gio.resolver_get_default()
+
+ def test_resolver_lookup_by_name(self):
+ addresses = self.resolver.lookup_by_name("pygtk.org", cancellable=None)
+ self.failUnless(isinstance(addresses[0], gio.InetAddress))
+
+ def test_resolver_lookup_by_address(self):
+ address = gio.inet_address_new_from_string("8.8.8.8")
+ dns = self.resolver.lookup_by_address(address, cancellable=None)
+ self.failUnlessEqual(dns, "google-public-dns-a.google.com")
+