Exemplo n.º 1
0
static SoupXmlrpcValue *_soup_get_xmlrpc_value(SoupMessage * msg,
					       SyncNetAction * sna)
{
    SoupXmlrpcResponse *response = NULL;
    SoupXmlrpcValue *value = NULL;

    sna->error = NULL;

    if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) {
	SNA_ERROR(1, "%s (error #%d)", msg->reason_phrase,
		  msg->status_code);
	goto bad;
    }

    response =
	soup_xmlrpc_message_parse_response(SOUP_XMLRPC_MESSAGE(msg));
    if (!response) {
	SNA_ERROR(2, "Could not parse XML-RPC response");
	goto bad;
    }

    value = soup_xmlrpc_response_get_value(response);
    if (!value) {
	SNA_ERROR(3, "No response value in XML-RPC response");
    }

    /*g_object_unref(response); */
  bad:
    return value;
}
Exemplo n.º 2
0
static gchar *_soup_get_xmlrpc_value_string(SoupMessage * msg,
					    SyncNetAction * sna)
{
    SoupXmlrpcValue *value;
    gchar *string = NULL;

    value = _soup_get_xmlrpc_value(msg, sna);
    if (!value) {
	SNA_ERROR(4, "Could not extract result from XML-RPC response");
	goto bad;
    }

    if (!soup_xmlrpc_value_get_string(value, &string)) {
	SNA_ERROR(4, "Could not extract result from XML-RPC response");
    }

  bad:
    return string;
}
Exemplo n.º 3
0
static long _soup_get_xmlrpc_value_int(SoupMessage * msg,
				       SyncNetAction * sna)
{
    SoupXmlrpcValue *value;
    long int_value = -1;

    value = _soup_get_xmlrpc_value(msg, sna);
    if (!value) {
	SNA_ERROR(4, "Could not extract result from XML-RPC response");
	goto bad;
    }

    if (!soup_xmlrpc_value_get_int(value, &int_value)) {
	SNA_ERROR(4, "Could not extract result from XML-RPC response");
    }

  bad:
    return int_value;
}
Exemplo n.º 4
0
static void _action_check_api_version_got_response(SoupMessage * msg,
						   gpointer user_data)
{
    SyncNetAction *sna = (SyncNetAction *) user_data;
    long version = _soup_get_xmlrpc_value_int(msg, sna);

    if (version != XMLRPC_SERVER_API_VERSION) {
	SNA_ERROR(5, "Server says it supports API version %ld, but "
		  "this version of HardInfo only supports API "
		  "version %d.", version, XMLRPC_SERVER_API_VERSION);
    }

    g_main_quit(loop);
}
Exemplo n.º 5
0
static gchar *_soup_get_xmlrpc_value_string(SoupMessage * msg,
        SyncNetAction * sna)
{
    gchar *string = NULL;

    sna->error = NULL;

    if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) {
        SNA_ERROR(1, "%s (error #%d)", msg->reason_phrase,
                  msg->status_code);
        goto bad;
    }

    if (!soup_xmlrpc_extract_method_response(msg->response_body->data,
            msg->response_body->length,
            NULL,
            G_TYPE_STRING, &string)) {
        SNA_ERROR(2, "Could not parse XML-RPC response");
    }

bad:
    return string;
}