コード例 #1
0
static char *
parse_result (const char *result)
{
        GUPnPDIDLLiteParser *parser;
        GError *error;
        const char *import_uri;

        parser = gupnp_didl_lite_parser_new ();

        g_signal_connect (parser,
                          "item-available",
                          G_CALLBACK (didl_item_available_cb),
                          &import_uri);

        import_uri = NULL;
        error = NULL;
        if (!gupnp_didl_lite_parser_parse_didl (parser, result, &error)) {
                g_critical ("Failed to parse result DIDL from MediaServer: %s",
                            error->message);

                g_error_free (error);
        }

        g_object_unref (parser);

        return g_strdup (import_uri);
}
コード例 #2
0
static char *
parse_result (const char *result)
{
        GUPnPDIDLLiteParser *parser;
        char *container_id;
        GError *error;

        parser = gupnp_didl_lite_parser_new ();
        g_signal_connect (parser,
                          "container-available",
                          G_CALLBACK (didl_container_available_cb),
                          &container_id);

        container_id = NULL;
        error = NULL;
        if (!gupnp_didl_lite_parser_parse_didl (parser, result, &error)) {
                g_critical ("Failed to parse result DIDL from MediaServer: %s",
                            error->message);

                g_error_free (error);
        }

        g_object_unref (parser);

        return container_id;
}
コード例 #3
0
ファイル: devious.c プロジェクト: johncronan/devious
void browse_cb(GUPnPServiceProxy *content_dir,
               GUPnPServiceProxyAction *action, gpointer user_data)
{
    struct browse_data *data;
    char *didl_xml;
    guint32 number_returned;
    guint32 total_matches;
    GError *error;

    data = (struct browse_data *)user_data;
    didl_xml = NULL;
    error = NULL;

    gupnp_service_proxy_end_action(content_dir, action, &error,
                                   "Result", G_TYPE_STRING, &didl_xml,
                                   "NumberReturned", G_TYPE_UINT,
                                       &number_returned,
                                   "TotalMatches", G_TYPE_UINT, &total_matches,
                                   NULL);
    if (didl_xml) {
        guint32 remaining;
        GError *error = NULL;

        if (!gupnp_didl_lite_parser_parse_didl(data->didl_parser, didl_xml,
                                               add_content, data, &error)) {
            g_warning("%s\n", error->message);
            g_error_free(error);
        }
        g_free(didl_xml);

        data->starting_index += number_returned;

        /* See if we have more objects to get */
        remaining = total_matches - data->starting_index;
        /* Keep browsing till we get each and every object */
        if (remaining != 0) browse(content_dir, data->id, data->starting_index,
                                   MIN(remaining, MAX_BROWSE),
                                   data->list, data->didl_parser);
    } else if (error) {
        GUPnPServiceInfo *info;

        info = GUPNP_SERVICE_INFO(content_dir);
        g_warning("Failed to browse '%s': %s\n",
                  gupnp_service_info_get_location(info),
                  error->message);

        g_error_free(error);
    }

    browse_data_free(data);
}
コード例 #4
0
ファイル: didlliteparser.cpp プロジェクト: phako/Helium
/*!
 * \brief Parse a DIDLLite XML snippet into GUPnPDIDLLiteObjects.
 *
 * \param didlLite the DIDLLite XML snippet to parse
 * \return a list of parsed objects or an empty list if an error occured.
 * \sa hasError(), errorMessage()
 */
DIDLLiteObjectList DIDLLiteParser::parse(const char *didlLite)
{
    Q_D(DIDLLiteParser);
    GError *error = 0;

    d->m_objects.clear();

    if (gupnp_didl_lite_parser_parse_didl(d->m_parser, didlLite, &error) == FALSE) {
        d->m_lastError = error;
        qDebug() << "Faild to parse DIDLLite XML" << error->message;
    }

    return d->m_objects;
}
コード例 #5
0
ファイル: test-didl.c プロジェクト: community-ssu/mafw
END_TEST

START_TEST(test_didl_container)
{
	GUPnPDIDLLiteParser* parser;

        g_type_init();
	g_thread_init(NULL);

	parser = gupnp_didl_lite_parser_new();
	g_signal_connect(parser, "object-available", (GCallback)test_didl_container_cb,
					NULL);
	gupnp_didl_lite_parser_parse_didl(parser, DIDL_CONTAINER, NULL);
	g_object_unref(parser);

}