#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 (); }