CddbConnection(cddb_disc_t *d) : disc(0) { connection = cddb_new(); if (connection) { cddb_cache_disable(connection); cddb_set_server_name(connection, Settings::self()->cddbHost().toLatin1().constData()); cddb_set_server_port(connection, Settings::self()->cddbPort()); disc=cddb_disc_clone(d); #ifdef ENABLE_KDE_SUPPORT QString proxy=KProtocolManager::proxyFor("http"); if (!proxy.isEmpty()) { QUrl url(proxy); cddb_set_http_proxy_server_name(connection, url.host().toLatin1().constData()); cddb_set_http_proxy_server_port(connection, url.port()); cddb_http_proxy_enable(connection); } #else QUrl url; url.setHost(Settings::self()->cddbHost()); url.setPort(Settings::self()->cddbPort()); QList<QNetworkProxy> proxies=NetworkProxyFactory::self()->queryProxy(QNetworkProxyQuery(url)); foreach (const QNetworkProxy &p, proxies) { if (QNetworkProxy::HttpProxy==p.type() && 0!=p.port()) { cddb_set_http_proxy_server_name(connection, p.hostName().toLatin1().constData()); cddb_set_http_proxy_server_port(connection, p.port()); cddb_http_proxy_enable(connection); break; } } #endif } }
static int resolve_disc (cddb_disc_t* disc, char *disc_list) { trace("cda: resolve_disc\n"); cddb_conn_t *conn = new_cddb_connection(); if (!conn) { return 0; } cddb_disc_t *temp_disc = cddb_disc_clone(disc); cddb_disc_t *query_disc = disc; cddb_cache_disable(conn); const int matches = cddb_query(conn, query_disc); cddb_cache_enable(conn); size_t discs_read = 0; disc_list[0] = '\0'; for (int i = 0; i < matches; i++) { if (cddb_read(conn, query_disc) && discs_read < MAX_CDDB_DISCS) { discs_read++; char temp_string[CDDB_CATEGORY_SIZE + CDDB_DISCID_SIZE + 1]; sprintf(temp_string, ",%s/%08x", cddb_disc_get_category_str(query_disc), cddb_disc_get_discid(query_disc)); strcat(disc_list, temp_string); query_disc = temp_disc; } cddb_query_next(conn, query_disc); } cddb_disc_destroy(temp_disc); cddb_destroy(conn); return discs_read; }
CddbConnection(cddb_disc_t *d) : disc(0) { connection = cddb_new(); if (connection) { cddb_cache_disable(connection); cddb_set_server_name(connection, Settings::self()->cddbHost().toLatin1().constData()); cddb_set_server_port(connection, Settings::self()->cddbPort()); disc=cddb_disc_clone(d); QUrl url; url.setHost(Settings::self()->cddbHost()); url.setPort(Settings::self()->cddbPort()); QList<QNetworkProxy> proxies=NetworkProxyFactory::self()->queryProxy(QNetworkProxyQuery(url)); foreach (const QNetworkProxy &p, proxies) { if (QNetworkProxy::HttpProxy==p.type() && 0!=p.port()) { cddb_set_http_proxy_server_name(connection, p.hostName().toLatin1().constData()); cddb_set_http_proxy_server_port(connection, p.port()); cddb_http_proxy_enable(connection); break; } } } }