From d6aaf1dc9abacb2f83b5ed8d78007a0dc7c3356d Mon Sep 17 00:00:00 2001 From: Stephane Bortzmeyer Date: Wed, 16 Jun 2004 09:29:34 +0000 Subject: [PATCH] Testing program --- SRC/contrib/adamsnames/Makefile.am | 2 + SRC/contrib/adamsnames/test-domquery.c | 85 ++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 SRC/contrib/adamsnames/test-domquery.c diff --git a/SRC/contrib/adamsnames/Makefile.am b/SRC/contrib/adamsnames/Makefile.am index 83439e5..4ed36a6 100644 --- a/SRC/contrib/adamsnames/Makefile.am +++ b/SRC/contrib/adamsnames/Makefile.am @@ -1,4 +1,6 @@ if ADAMSNAMESBUILD +bin_PROGRAMS = test-domquery +test_domquery_SOURCES = test-domquery.c pkglib_LTLIBRARIES = domquery.la domquery_la_SOURCES = domquery.c util.c domquery_la_LDFLAGS = -module diff --git a/SRC/contrib/adamsnames/test-domquery.c b/SRC/contrib/adamsnames/test-domquery.c new file mode 100644 index 0000000..d2cda6f --- /dev/null +++ b/SRC/contrib/adamsnames/test-domquery.c @@ -0,0 +1,85 @@ +#include + +/* http://xmlrpc-c.sourceforge.net/ */ +#include +#include + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#define CLIENT_NAME "XML-RPC Adams Names plugin for echoping" +#define CLIENT_VERSION "0.0" + +#define ENDPOINT "http://www.adamsnames.tc/api/xmlrpc" + +void +die_if_fault_occurred (xmlrpc_env * env) +{ + if (env->fault_occurred) + { + fprintf (stderr, "XML-RPC Fault: %s (%d)\n", + env->fault_string, env->fault_code); + exit (1); + } +} + +int +main (int argc, char **argv) +{ + int value; + xmlrpc_value *result; + xmlrpc_bool free, read_contacts; + xmlrpc_int32 reason; + xmlrpc_value *domain_h; + xmlrpc_int32 found; + xmlrpc_value *error; + xmlrpc_env env; + char *domain; + char *date, *holder; + + if (argc != 2) + { + fprintf (stderr, "Usage: %s domain\n", argv[0]); + exit (1); + } + + domain = argv[1]; + + /* Start up our XML-RPC client library. */ + xmlrpc_client_init (XMLRPC_CLIENT_NO_FLAGS, CLIENT_NAME, CLIENT_VERSION); + + /* Initialize our error-handling environment. */ + xmlrpc_env_init (&env); + + /* Call the server */ + result = xmlrpc_client_call (&env, ENDPOINT, "domquery", "(s)", domain); + die_if_fault_occurred (&env); + + xmlrpc_parse_value (&env, result, "{s:i,*}", "found", &found); + die_if_fault_occurred (&env); + if (found) + { + printf ("%s is there\n", domain); + xmlrpc_parse_value (&env, result, "{s:S,s:i,s:A,*}", "domain", + &domain_h, "found", &found, "error", &error); + die_if_fault_occurred (&env); + /* printf ("Type of domain: %d\n", xmlrpc_value_type(domain_h)); */ + xmlrpc_parse_value (&env, domain_h, "{s:s,s:s,*}", "registered", &date, + "org", &holder); + die_if_fault_occurred (&env); + printf ("Registered on %s by %s\n", date, holder); + } + else + { + printf ("Unknown domain %s\n", domain); + } + /* Dispose of our result value. */ + xmlrpc_DECREF (result); + /* Clean up our error-handling environment. */ + xmlrpc_env_clean (&env); + + /* Shutdown our XML-RPC client library. */ + xmlrpc_client_cleanup (); + +}