Revert libmygpo-qt revision 8f35be2da45d74c42672d3d787ef65fb8b14d0dd ("Return normal pointers from ApiRequest methods, so they can be used in Clementine's closures, and deleteLater() in a slot connected to their finished() signal doesn't crash"), and do closure connections using the shared pointers

This commit is contained in:
David Sansome 2012-03-19 19:35:59 +00:00
parent d7a5af07fb
commit bb69d7d53a
8 changed files with 210 additions and 171 deletions

View File

@ -104,29 +104,32 @@ QNetworkReply* ApiRequestPrivate::searchXml( const QString& query )
return m_requestHandler.getRequest( requestUrl );
}
PodcastList* ApiRequestPrivate::toplist( uint count )
PodcastListPtr ApiRequestPrivate::toplist( uint count )
{
QString requestUrl = UrlBuilder::getToplistUrl( count );
QNetworkReply *reply;
reply = m_requestHandler.getRequest( requestUrl );
return new PodcastList( reply );
PodcastListPtr podcastList( new PodcastList( reply ) );
return podcastList;
}
PodcastList* ApiRequestPrivate::search( const QString& query )
PodcastListPtr ApiRequestPrivate::search( const QString& query )
{
QString requestUrl = UrlBuilder::getPodcastSearchUrl( query );
QNetworkReply *reply;
reply = m_requestHandler.getRequest( requestUrl );
return new PodcastList( reply );
PodcastListPtr podcastList( new PodcastList( reply ) );
return podcastList;
}
PodcastList* ApiRequestPrivate::suggestions( uint count )
PodcastListPtr ApiRequestPrivate::suggestions( uint count )
{
QString requestUrl = UrlBuilder::getSuggestionsUrl( count );
QNetworkReply *reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new PodcastList( reply );
PodcastListPtr podcastList( new PodcastList( reply ) );
return podcastList;
}
QNetworkReply* ApiRequestPrivate::downloadSubscriptionsJson(const QString& username, const QString& device)
@ -135,190 +138,212 @@ QNetworkReply* ApiRequestPrivate::downloadSubscriptionsJson(const QString& usern
return m_requestHandler.authGetRequest( requestUrl );
}
Episode* ApiRequestPrivate::episodeData( const QUrl& podcasturl, const QUrl& episodeurl )
EpisodePtr ApiRequestPrivate::episodeData( const QUrl& podcasturl, const QUrl& episodeurl )
{
QString requestUrl = UrlBuilder::getEpisodeDataUrl( podcasturl.toString(), episodeurl.toString() );
QNetworkReply *reply;
reply = m_requestHandler.getRequest( requestUrl );
return new Episode( reply );
EpisodePtr episode( new Episode( reply ) );
return episode;
}
EpisodeList* ApiRequestPrivate::favoriteEpisodes( const QString& username )
EpisodeListPtr ApiRequestPrivate::favoriteEpisodes( const QString& username )
{
QString requestUrl = UrlBuilder::getFavEpisodesUrl( username );
QNetworkReply *reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new EpisodeList( reply );
EpisodeListPtr episodeList( new EpisodeList( reply ) );
return episodeList;
}
Podcast* ApiRequestPrivate::podcastData( const QUrl& podcasturl )
PodcastPtr ApiRequestPrivate::podcastData( const QUrl& podcasturl )
{
QString requestUrl = UrlBuilder::getPodcastDataUrl( podcasturl.toString() );
QNetworkReply *reply;
reply = m_requestHandler.getRequest( requestUrl );
return new Podcast( reply );
PodcastPtr podcast( new Podcast( reply ) );
return podcast;
}
PodcastList* ApiRequestPrivate::podcastsOfTag( uint count, const QString& tag )
PodcastListPtr ApiRequestPrivate::podcastsOfTag( uint count, const QString& tag )
{
QString requestUrl = UrlBuilder::getPodcastsOfTagUrl( tag, count );
QNetworkReply *reply;
reply = m_requestHandler.getRequest( requestUrl );
return new PodcastList( reply );
PodcastListPtr podcastList( new PodcastList( reply ) );
return podcastList;
}
TagList* ApiRequestPrivate::topTags( uint count )
TagListPtr ApiRequestPrivate::topTags( uint count )
{
QString requestUrl = UrlBuilder::getTopTagsUrl( count );
QNetworkReply *reply;
reply = m_requestHandler.getRequest( requestUrl );
return new TagList( reply );
TagListPtr tagList( new TagList( reply ) );
return tagList;
}
AddRemoveResult* ApiRequestPrivate::addRemoveSubscriptions( const QString& username, const QString& device, const QList< QUrl >& add, const QList< QUrl >& remove )
AddRemoveResultPtr ApiRequestPrivate::addRemoveSubscriptions( const QString& username, const QString& device, const QList< QUrl >& add, const QList< QUrl >& remove )
{
QString requestUrl = UrlBuilder::getAddRemoveSubUrl( username, device );
QByteArray data = JsonCreator::addRemoveSubsToJSON( add, remove );
QNetworkReply *reply;
reply = m_requestHandler.postRequest( data, requestUrl );
return new AddRemoveResult( reply );
AddRemoveResultPtr addRemoveResult( new AddRemoveResult( reply ) );
return addRemoveResult;
}
Settings* ApiRequestPrivate::accountSettings( const QString& username )
SettingsPtr ApiRequestPrivate::accountSettings( const QString& username )
{
QString requestUrl = UrlBuilder::getAccountSettingsUrl( username );
QNetworkReply *reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new Settings( reply );
SettingsPtr settings( new Settings( reply ) );
return settings;
}
Settings* ApiRequestPrivate::deviceSettings( const QString& username, const QString& device )
SettingsPtr ApiRequestPrivate::deviceSettings( const QString& username, const QString& device )
{
QString requestUrl = UrlBuilder::getDeviceSettingsUrl( username, device );
QNetworkReply *reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new Settings( reply );
SettingsPtr settings( new Settings( reply ) );
return settings;
}
Settings* ApiRequestPrivate::podcastSettings( const QString& username, const QString& podcastUrl )
SettingsPtr ApiRequestPrivate::podcastSettings( const QString& username, const QString& podcastUrl )
{
QString requestUrl = UrlBuilder::getPodcastSettingsUrl( username, podcastUrl );
QNetworkReply *reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new Settings( reply );
SettingsPtr settings( new Settings( reply ) );
return settings;
}
Settings* ApiRequestPrivate::episodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl )
SettingsPtr ApiRequestPrivate::episodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl )
{
QString requestUrl = UrlBuilder::getEpisodeSettingsUrl( username, podcastUrl, episodeUrl );
QNetworkReply *reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new Settings( reply );
SettingsPtr settings( new Settings( reply ) );
return settings;
}
Settings* ApiRequestPrivate::setAccountSettings( const QString& username, QMap<QString, QVariant >& set, const QList< QString >& remove )
SettingsPtr ApiRequestPrivate::setAccountSettings( const QString& username, QMap<QString, QVariant >& set, const QList< QString >& remove )
{
QString requestUrl = UrlBuilder::getAccountSettingsUrl( username );
QNetworkReply *reply;
QByteArray postData = JsonCreator::saveSettingsToJSON( set, remove );
reply = m_requestHandler.postRequest( postData, requestUrl );
return new Settings( reply );
SettingsPtr settings( new Settings( reply ) );
return settings;
}
Settings* ApiRequestPrivate::setDeviceSettings( const QString& username, const QString& device, QMap<QString, QVariant >& set, const QList< QString >& remove )
SettingsPtr ApiRequestPrivate::setDeviceSettings( const QString& username, const QString& device, QMap<QString, QVariant >& set, const QList< QString >& remove )
{
QString requestUrl = UrlBuilder::getDeviceSettingsUrl( username, device );
QNetworkReply *reply;
QByteArray postData = JsonCreator::saveSettingsToJSON( set, remove );
reply = m_requestHandler.postRequest( postData, requestUrl );
return new Settings( reply );
SettingsPtr settings( new Settings( reply ) );
return settings;
}
Settings* ApiRequestPrivate::setPodcastSettings( const QString& username, const QString& podcastUrl, QMap<QString, QVariant >& set, const QList< QString >& remove )
SettingsPtr ApiRequestPrivate::setPodcastSettings( const QString& username, const QString& podcastUrl, QMap<QString, QVariant >& set, const QList< QString >& remove )
{
QString requestUrl = UrlBuilder::getPodcastSettingsUrl( username, podcastUrl );
QNetworkReply *reply;
QByteArray postData = JsonCreator::saveSettingsToJSON( set, remove );
reply = m_requestHandler.postRequest( postData, requestUrl );
return new Settings( reply );
SettingsPtr settings( new Settings( reply ) );
return settings;
}
Settings* ApiRequestPrivate::setEpisodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl, QMap<QString, QVariant >& set, const QList< QString >& remove )
SettingsPtr ApiRequestPrivate::setEpisodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl, QMap<QString, QVariant >& set, const QList< QString >& remove )
{
QString requestUrl = UrlBuilder::getEpisodeSettingsUrl( username, podcastUrl, episodeUrl );
QNetworkReply *reply;
QByteArray postData = JsonCreator::saveSettingsToJSON( set, remove );
reply = m_requestHandler.postRequest( postData, requestUrl );
return new Settings( reply );
SettingsPtr settings( new Settings( reply ) );
return settings;
}
DeviceUpdates* ApiRequestPrivate::deviceUpdates( const QString& username, const QString& deviceId, qlonglong timestamp )
DeviceUpdatesPtr ApiRequestPrivate::deviceUpdates( const QString& username, const QString& deviceId, qlonglong timestamp )
{
QString requestUrl = UrlBuilder::getDeviceUpdatesUrl( username, deviceId, timestamp );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new DeviceUpdates( reply );
DeviceUpdatesPtr updates( new DeviceUpdates( reply ) );
return updates;
}
EpisodeActionList* ApiRequestPrivate::episodeActions( const QString& username, const bool aggregated )
EpisodeActionListPtr ApiRequestPrivate::episodeActions( const QString& username, const bool aggregated )
{
QString requestUrl = UrlBuilder::getEpisodeActionsUrl( username, aggregated );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new EpisodeActionList( reply );
EpisodeActionListPtr episodeActions( new EpisodeActionList( reply ) );
return episodeActions;
}
EpisodeActionList* ApiRequestPrivate::episodeActionsByPodcast( const QString& username, const QString& podcastUrl, const bool aggregated )
EpisodeActionListPtr ApiRequestPrivate::episodeActionsByPodcast( const QString& username, const QString& podcastUrl, const bool aggregated )
{
QString requestUrl = UrlBuilder::getEpisodeActionsUrlByPodcast( username, podcastUrl, aggregated );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new EpisodeActionList( reply );
EpisodeActionListPtr episodeActions( new EpisodeActionList( reply ) );
return episodeActions;
}
EpisodeActionList* ApiRequestPrivate::episodeActionsByDevice( const QString& username, const QString& deviceId, const bool aggregated )
EpisodeActionListPtr ApiRequestPrivate::episodeActionsByDevice( const QString& username, const QString& deviceId, const bool aggregated )
{
QString requestUrl = UrlBuilder::getEpisodeActionsUrlByDevice( username, deviceId, aggregated );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new EpisodeActionList( reply );
EpisodeActionListPtr episodeActions( new EpisodeActionList( reply ) );
return episodeActions;
}
EpisodeActionList* ApiRequestPrivate::episodeActionsByTimestamp( const QString& username, const qulonglong since )
EpisodeActionListPtr ApiRequestPrivate::episodeActionsByTimestamp( const QString& username, const qulonglong since )
{
QString requestUrl = UrlBuilder::getEpisodeActionsUrlByTimestamp( username, since );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new EpisodeActionList( reply );
EpisodeActionListPtr episodeActions( new EpisodeActionList( reply ) );
return episodeActions;
}
EpisodeActionList* ApiRequestPrivate::episodeActionsByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, const qulonglong since )
EpisodeActionListPtr ApiRequestPrivate::episodeActionsByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, const qulonglong since )
{
QString requestUrl = UrlBuilder::getEpisodeActionsUrlByPodcastAndTimestamp( username, podcastUrl, since );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new EpisodeActionList( reply );
EpisodeActionListPtr episodeActions( new EpisodeActionList( reply ) );
return episodeActions;
}
EpisodeActionList* ApiRequestPrivate::episodeActionsByDeviceAndTimestamp( const QString& username, const QString& deviceId, const qulonglong since )
EpisodeActionListPtr ApiRequestPrivate::episodeActionsByDeviceAndTimestamp( const QString& username, const QString& deviceId, const qulonglong since )
{
QString requestUrl = UrlBuilder::getEpisodeActionsUrlByDeviceAndTimestamp( username, deviceId, since );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new EpisodeActionList( reply );
EpisodeActionListPtr episodeActions( new EpisodeActionList( reply ) );
return episodeActions;
}
AddRemoveResult* ApiRequestPrivate::uploadEpisodeActions( const QString& username, const QList<EpisodeActionPtr>& episodeActions )
AddRemoveResultPtr ApiRequestPrivate::uploadEpisodeActions( const QString& username, const QList<EpisodeActionPtr>& episodeActions )
{
QString requestUrl = UrlBuilder::getEpisodeActionsUrl( username, false );
QNetworkReply *reply;
QByteArray postData = JsonCreator::episodeActionListToJSON( episodeActions );
reply = m_requestHandler.postRequest( postData, requestUrl );
return new AddRemoveResult( reply );
AddRemoveResultPtr addRemoveResult( new AddRemoveResult( reply ) );
return addRemoveResult;
}
QNetworkReply* ApiRequestPrivate::renameDevice( const QString& username , const QString& deviceId , const QString& caption, Device::Type type )
@ -348,20 +373,22 @@ QNetworkReply* ApiRequestPrivate::renameDevice( const QString& username , const
return reply;
}
DeviceList* ApiRequestPrivate::listDevices( const QString& username )
DeviceListPtr ApiRequestPrivate::listDevices( const QString& username )
{
QString requestUrl = UrlBuilder::getDeviceListUrl( username );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new DeviceList( reply );
DeviceListPtr list( new DeviceList( reply ) );
return list;
}
DeviceSyncResult* ApiRequestPrivate::deviceSynchronizationStatus ( const QString& username )
DeviceSyncResultPtr ApiRequestPrivate::deviceSynchronizationStatus ( const QString& username )
{
QString requestUrl = UrlBuilder::getDeviceSynchronizationStatusUrl( username );
QNetworkReply* reply;
reply = m_requestHandler.authGetRequest( requestUrl );
return new DeviceSyncResult( reply );
DeviceSyncResultPtr result( new DeviceSyncResult( reply ) );
return result;
}
ApiRequest::ApiRequest( const QString& username, const QString& password, QNetworkAccessManager* nam ) : d( new ApiRequestPrivate( username, password, nam ) )
@ -427,17 +454,17 @@ QNetworkReply* ApiRequest::searchXml ( const QString& query )
return d->searchXml( query );
}
PodcastList* ApiRequest::toplist( uint count )
PodcastListPtr ApiRequest::toplist( uint count )
{
return d->toplist( count );
}
PodcastList* ApiRequest::search( const QString& query )
PodcastListPtr ApiRequest::search( const QString& query )
{
return d->search( query );
}
PodcastList* ApiRequest::suggestions( uint count )
PodcastListPtr ApiRequest::suggestions( uint count )
{
return d->suggestions( count );
}
@ -447,112 +474,112 @@ QNetworkReply* ApiRequest::downloadSubscriptionsJson(const QString& username, co
return d->downloadSubscriptionsJson( username, device );
}
PodcastList* ApiRequest::podcastsOfTag( uint count, const QString& tag )
PodcastListPtr ApiRequest::podcastsOfTag( uint count, const QString& tag )
{
return d->podcastsOfTag( count, tag );
}
Podcast* ApiRequest::podcastData( const QUrl& podcasturl )
PodcastPtr ApiRequest::podcastData( const QUrl& podcasturl )
{
return d->podcastData( podcasturl );
}
Episode* ApiRequest::episodeData( const QUrl& podcasturl, const QUrl& episodeurl )
EpisodePtr ApiRequest::episodeData( const QUrl& podcasturl, const QUrl& episodeurl )
{
return d->episodeData( podcasturl, episodeurl );
}
EpisodeList* ApiRequest::favoriteEpisodes( const QString& username )
EpisodeListPtr ApiRequest::favoriteEpisodes( const QString& username )
{
return d->favoriteEpisodes( username );
}
TagList* ApiRequest::topTags( uint count )
TagListPtr ApiRequest::topTags( uint count )
{
return d->topTags( count );
}
AddRemoveResult* ApiRequest::addRemoveSubscriptions( const QString& username, const QString& device, const QList< QUrl >& add, const QList< QUrl >& remove )
AddRemoveResultPtr ApiRequest::addRemoveSubscriptions( const QString& username, const QString& device, const QList< QUrl >& add, const QList< QUrl >& remove )
{
return d->addRemoveSubscriptions( username, device, add, remove );
}
Settings* ApiRequest::accountSettings( const QString& username )
SettingsPtr ApiRequest::accountSettings( const QString& username )
{
return d->accountSettings( username );
}
Settings* ApiRequest::deviceSettings( const QString& username, const QString& device )
SettingsPtr ApiRequest::deviceSettings( const QString& username, const QString& device )
{
return d->deviceSettings( username, device );
}
Settings* ApiRequest::podcastSettings( const QString& username, const QString& podcastUrl )
SettingsPtr ApiRequest::podcastSettings( const QString& username, const QString& podcastUrl )
{
return d->podcastSettings( username, podcastUrl );
}
Settings* ApiRequest::episodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl )
SettingsPtr ApiRequest::episodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl )
{
return d->episodeSettings( username, podcastUrl, episodeUrl );
}
Settings* ApiRequest::setAccountSettings( const QString& username, QMap<QString, QVariant >& set, const QList< QString >& remove )
SettingsPtr ApiRequest::setAccountSettings( const QString& username, QMap<QString, QVariant >& set, const QList< QString >& remove )
{
return d->setAccountSettings( username, set, remove );
}
Settings* ApiRequest::setDeviceSettings( const QString& username, const QString& device, QMap<QString, QVariant >& set, const QList< QString >& remove )
SettingsPtr ApiRequest::setDeviceSettings( const QString& username, const QString& device, QMap<QString, QVariant >& set, const QList< QString >& remove )
{
return d->setDeviceSettings( username, device, set, remove );
}
Settings* ApiRequest::setPodcastSettings( const QString& username, const QString& podcastUrl, QMap<QString, QVariant >& set, const QList< QString >& remove )
SettingsPtr ApiRequest::setPodcastSettings( const QString& username, const QString& podcastUrl, QMap<QString, QVariant >& set, const QList< QString >& remove )
{
return d->setPodcastSettings( username, podcastUrl, set, remove );
}
Settings* ApiRequest::setEpisodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl, QMap<QString, QVariant >& set, const QList< QString >& remove )
SettingsPtr ApiRequest::setEpisodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl, QMap<QString, QVariant >& set, const QList< QString >& remove )
{
return d->setEpisodeSettings( username, podcastUrl, episodeUrl, set, remove );
}
DeviceUpdates* ApiRequest::deviceUpdates( const QString& username, const QString& deviceId, qlonglong timestamp )
DeviceUpdatesPtr ApiRequest::deviceUpdates( const QString& username, const QString& deviceId, qlonglong timestamp )
{
return d->deviceUpdates( username, deviceId, timestamp );
}
EpisodeActionList* ApiRequest::episodeActions( const QString& username, const bool aggregated )
EpisodeActionListPtr ApiRequest::episodeActions( const QString& username, const bool aggregated )
{
return d->episodeActions( username, aggregated );
}
EpisodeActionList* ApiRequest::episodeActionsByPodcast( const QString& username, const QString& podcastUrl, const bool aggregated )
EpisodeActionListPtr ApiRequest::episodeActionsByPodcast( const QString& username, const QString& podcastUrl, const bool aggregated )
{
return d->episodeActionsByPodcast( username, podcastUrl, aggregated );
}
EpisodeActionList* ApiRequest::episodeActionsByDevice( const QString& username, const QString& deviceId, const bool aggregated )
EpisodeActionListPtr ApiRequest::episodeActionsByDevice( const QString& username, const QString& deviceId, const bool aggregated )
{
return d->episodeActionsByDevice( username, deviceId, aggregated );
}
EpisodeActionList* ApiRequest::episodeActionsByTimestamp( const QString& username, const qulonglong since )
EpisodeActionListPtr ApiRequest::episodeActionsByTimestamp( const QString& username, const qulonglong since )
{
return d->episodeActionsByTimestamp( username, since );
}
EpisodeActionList* ApiRequest::episodeActionsByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, const qulonglong since )
EpisodeActionListPtr ApiRequest::episodeActionsByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, const qulonglong since )
{
return d->episodeActionsByPodcastAndTimestamp( username, podcastUrl, since );
}
EpisodeActionList* ApiRequest::episodeActionsByDeviceAndTimestamp( const QString& username, const QString& deviceId, const qulonglong since )
EpisodeActionListPtr ApiRequest::episodeActionsByDeviceAndTimestamp( const QString& username, const QString& deviceId, const qulonglong since )
{
return d->episodeActionsByDeviceAndTimestamp( username, deviceId, since );
}
AddRemoveResult* ApiRequest::uploadEpisodeActions( const QString& username, const QList<EpisodeActionPtr>& episodeActions )
AddRemoveResultPtr ApiRequest::uploadEpisodeActions( const QString& username, const QList<EpisodeActionPtr>& episodeActions )
{
return d->uploadEpisodeActions( username, episodeActions );
}
@ -562,12 +589,12 @@ QNetworkReply* ApiRequest::renameDevice( const QString& username , const QString
return d->renameDevice( username, deviceId, caption, type );
}
DeviceList* ApiRequest::listDevices( const QString& username )
DeviceListPtr ApiRequest::listDevices( const QString& username )
{
return d->listDevices( username );
}
DeviceSyncResult* ApiRequest::deviceSynchronizationStatus ( const QString& username )
DeviceSyncResultPtr ApiRequest::deviceSynchronizationStatus ( const QString& username )
{
return d->deviceSynchronizationStatus( username );
}

View File

@ -139,7 +139,7 @@ public:
* @return List of Podcast Objects containing the Data from gPodder
*
*/
PodcastList* toplist( uint count );
PodcastListPtr toplist( uint count );
/**
* Returns the Result for the Simple API Call "Searching for Podcasts"
@ -147,7 +147,7 @@ public:
* @return List of Podcast Objects containing the Data from gPodder
*
*/
PodcastList* search( const QString& query );
PodcastListPtr search( const QString& query );
/**
* Returns the Result for the Simple API Call "Downloading podcast suggestions"
@ -156,7 +156,7 @@ public:
* @return List of Podcast Objects containing the Data from gPodder
*
*/
PodcastList* suggestions( uint count );
PodcastListPtr suggestions( uint count );
QNetworkReply* downloadSubscriptionsJson( const QString& username, const QString& device );
@ -169,7 +169,7 @@ public:
* @return List of Podcast Objects containing the Data from gPodder
*
*/
PodcastList* podcastsOfTag( uint count, const QString& tag );
PodcastListPtr podcastsOfTag( uint count, const QString& tag );
/**
* Returns the Result for the Advanced API Call "Retrieving Podcast Data"
@ -177,7 +177,7 @@ public:
* @return Podcast Object containing the Data from gPodder
*
*/
Podcast* podcastData( const QUrl& podcasturl );
PodcastPtr podcastData( const QUrl& podcasturl );
/**
* Returns the Result for the Advanced API Call "Retrieving Episode Data"
@ -186,7 +186,7 @@ public:
* @return Episode Object containing the Data from gPodder
*
*/
Episode* episodeData( const QUrl& podcasturl, const QUrl& episodeurl );
EpisodePtr episodeData( const QUrl& podcasturl, const QUrl& episodeurl );
/**
* Returns the Result for the Advanced API Call "Listing Favorite Episodes"
@ -194,7 +194,7 @@ public:
* @return List of Episode Objects containing the Data from gPodder
*
*/
EpisodeList* favoriteEpisodes( const QString& username );
EpisodeListPtr favoriteEpisodes( const QString& username );
/**
* Returns the Result for the Advanced API Call "Retrieving Top Tags"
@ -202,7 +202,7 @@ public:
* @return List of Tag Objects containing the Data from gPodder
*
*/
TagList* topTags( uint count );
TagListPtr topTags( uint count );
/**
* Uploads Data & returns the Result for the Advanced API Call "Add/remove subscriptions"
@ -213,7 +213,7 @@ public:
* @param remove URLs of Podcasts that should be removed from the Subscriptions of the User
*
*/
AddRemoveResult* addRemoveSubscriptions( const QString& username, const QString& device, const QList< QUrl >& add, const QList< QUrl >& remove );
AddRemoveResultPtr addRemoveSubscriptions( const QString& username, const QString& device, const QList< QUrl >& add, const QList< QUrl >& remove );
/**
* Retrieve settings which are attached to an account.
@ -221,7 +221,7 @@ public:
* @return Received settings as key-value-pairs
*
*/
Settings* accountSettings( const QString& username );
SettingsPtr accountSettings( const QString& username );
/**
* Retrieve settings which are attached to a device.
@ -230,7 +230,7 @@ public:
* @return Received settings as key-value-pairs
*
*/
Settings* deviceSettings( const QString& username, const QString& device );
SettingsPtr deviceSettings( const QString& username, const QString& device );
/**
* Retrieve settings which are attached to a podcast.
@ -239,7 +239,7 @@ public:
* @return Received settings as key-value-pairs
*
*/
Settings* podcastSettings( const QString& username, const QString& podcastUrl );
SettingsPtr podcastSettings( const QString& username, const QString& podcastUrl );
/**
* Retrieve settings which are attached to an episode.
@ -249,7 +249,7 @@ public:
* @return Received settings as key-value-pairs
*
*/
Settings* episodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl );
SettingsPtr episodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl );
/**
* Set and or remove settings which are attached to an account.
@ -259,7 +259,7 @@ public:
* @return All settings as key-value-pairs which are stored after the update
*
*/
Settings* setAccountSettings( const QString& username, QMap<QString, QVariant >& set, const QList<QString>& remove );
SettingsPtr setAccountSettings( const QString& username, QMap<QString, QVariant >& set, const QList<QString>& remove );
/**
* Set and or remove settings which are attached to a device.
@ -270,7 +270,7 @@ public:
* @return All settings as key-value-pairs which are stored after the update
*
*/
Settings* setDeviceSettings( const QString& username, const QString& device, QMap<QString, QVariant >& set, const QList<QString>& remove );
SettingsPtr setDeviceSettings( const QString& username, const QString& device, QMap<QString, QVariant >& set, const QList<QString>& remove );
/**
* Set and or remove settings which are attached to a podcast.
@ -281,7 +281,7 @@ public:
* @return All settings as key-value-pairs which are stored after the update
*
*/
Settings* setPodcastSettings( const QString& username, const QString& podcastUrl, QMap<QString, QVariant >& set, const QList<QString>& remove );
SettingsPtr setPodcastSettings( const QString& username, const QString& podcastUrl, QMap<QString, QVariant >& set, const QList<QString>& remove );
/**
* Set and or remove settings which are attached to an episode.
@ -293,20 +293,20 @@ public:
* @return All settings as key-value-pairs which are stored after the update
*
*/
Settings* setEpisodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl, QMap<QString, QVariant >& set, const QList<QString>& remove );
SettingsPtr setEpisodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl, QMap<QString, QVariant >& set, const QList<QString>& remove );
/**
* Retrieve episode and subscription updates for a given device.
* @param username Username of the account which owns the device
* @param deviceId Id of the targeted device
* @param timestamp A date in milliseconds, All changes since this timestamp will be retrieved
* @return A DeviceUpdates* which accesses:
* @return A DeviceUpdatesPtr which accesses:
* - a list of subscriptions to be added, with URL, title and descriptions
* - a list of URLs to be unsubscribed
* - a list of updated episodes
*
*/
DeviceUpdates* deviceUpdates( const QString& username, const QString& deviceId, qlonglong timestamp );
DeviceUpdatesPtr deviceUpdates( const QString& username, const QString& deviceId, qlonglong timestamp );
/**
* Sets a new name and type for a device identified by a given ID
@ -325,7 +325,7 @@ public:
* @return List of devices
*
*/
DeviceList* listDevices( const QString& username );
DeviceListPtr listDevices( const QString& username );
/**
* Download episode actions for a given username.
@ -334,7 +334,7 @@ public:
* @return List of all episode actions of the user
*
*/
EpisodeActionList* episodeActions( const QString& username, const bool aggregated = false );
EpisodeActionListPtr episodeActions( const QString& username, const bool aggregated = false );
/**
* Download episode actions for a given podcast.
@ -344,7 +344,7 @@ public:
* @return List of all episode actions for the given podcast
*
*/
EpisodeActionList* episodeActionsByPodcast( const QString& username, const QString& podcastUrl, const bool aggregated = false );
EpisodeActionListPtr episodeActionsByPodcast( const QString& username, const QString& podcastUrl, const bool aggregated = false );
/**
* Download episode actions for a given device.
@ -354,7 +354,7 @@ public:
* @return List of all episode actions for the given device
*
*/
EpisodeActionList* episodeActionsByDevice( const QString& username, const QString& deviceId, const bool aggregated = false );
EpisodeActionListPtr episodeActionsByDevice( const QString& username, const QString& deviceId, const bool aggregated = false );
/**
* Download episode actions for a given username since a given timestamp.
@ -363,7 +363,7 @@ public:
* @return List of all new episode actions since the given timestamp
*
*/
EpisodeActionList* episodeActionsByTimestamp( const QString& username, const qulonglong since );
EpisodeActionListPtr episodeActionsByTimestamp( const QString& username, const qulonglong since );
/**
* Download episode actions for a given podcast since a given timestamp.
@ -373,7 +373,7 @@ public:
* @return List of all new episode actions since the given timestamp
*
*/
EpisodeActionList* episodeActionsByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, const qulonglong since );
EpisodeActionListPtr episodeActionsByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, const qulonglong since );
/**
* Download episode actions for a given device since a given timestamp.
@ -383,17 +383,17 @@ public:
* @return List of all new episode actions since the given timestamp
*
*/
EpisodeActionList* episodeActionsByDeviceAndTimestamp( const QString& username, const QString& deviceId, const qulonglong since );
EpisodeActionListPtr episodeActionsByDeviceAndTimestamp( const QString& username, const QString& deviceId, const qulonglong since );
/**
* Upload episode actions
* @param episodeActions The list of episode actions which shall be uploaded
* @return An AddRemoveResult* which contains information about the updated Urls
* @return An AddRemoveResultPtr which contains information about the updated Urls
*
*/
AddRemoveResult* uploadEpisodeActions( const QString& username, const QList<EpisodeActionPtr>& episodeActions );
AddRemoveResultPtr uploadEpisodeActions( const QString& username, const QList<EpisodeActionPtr>& episodeActions );
DeviceSyncResult* deviceSynchronizationStatus( const QString& username );
DeviceSyncResultPtr deviceSynchronizationStatus( const QString& username );
private:
ApiRequestPrivate* const d;

View File

@ -47,39 +47,39 @@ public:
QNetworkReply* downloadSubscriptionsTxt ( const QString& username, const QString& device );
QNetworkReply* toplistXml( uint count );
QNetworkReply* searchXml( const QString& query );
PodcastList* toplist( uint count );
PodcastList* search( const QString& query );
PodcastList* suggestions( uint count );
PodcastListPtr toplist( uint count );
PodcastListPtr search( const QString& query );
PodcastListPtr suggestions( uint count );
QNetworkReply* downloadSubscriptionsJson( const QString& username, const QString& device );
PodcastList* podcastsOfTag( uint count, const QString& tag );
Podcast* podcastData( const QUrl& podcasturl );
Episode* episodeData( const QUrl& podcasturl, const QUrl& episodeurl );
EpisodeList* favoriteEpisodes( const QString& username );
TagList* topTags( uint count );
AddRemoveResult* addRemoveSubscriptions( const QString& username, const QString& device, const QList< QUrl >& add, const QList< QUrl >& remove );
Settings* accountSettings( const QString& username );
Settings* deviceSettings( const QString& username, const QString& device );
Settings* podcastSettings( const QString& username, const QString& podcastUrl );
Settings* episodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl );
Settings* setAccountSettings( const QString& username, QMap<QString, QVariant >& set, const QList<QString>& remove );
Settings* setDeviceSettings( const QString& username, const QString& device, QMap<QString, QVariant >& set, const QList<QString>& remove );
Settings* setPodcastSettings( const QString& username, const QString& podcastUrl, QMap<QString, QVariant >& set, const QList<QString>& remove );
Settings* setEpisodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl, QMap<QString, QVariant >& set, const QList<QString>& remove );
DeviceUpdates* deviceUpdates( const QString& username, const QString& deviceId, qlonglong timestamp );
PodcastListPtr podcastsOfTag( uint count, const QString& tag );
PodcastPtr podcastData( const QUrl& podcasturl );
EpisodePtr episodeData( const QUrl& podcasturl, const QUrl& episodeurl );
EpisodeListPtr favoriteEpisodes( const QString& username );
TagListPtr topTags( uint count );
AddRemoveResultPtr addRemoveSubscriptions( const QString& username, const QString& device, const QList< QUrl >& add, const QList< QUrl >& remove );
SettingsPtr accountSettings( const QString& username );
SettingsPtr deviceSettings( const QString& username, const QString& device );
SettingsPtr podcastSettings( const QString& username, const QString& podcastUrl );
SettingsPtr episodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl );
SettingsPtr setAccountSettings( const QString& username, QMap<QString, QVariant >& set, const QList<QString>& remove );
SettingsPtr setDeviceSettings( const QString& username, const QString& device, QMap<QString, QVariant >& set, const QList<QString>& remove );
SettingsPtr setPodcastSettings( const QString& username, const QString& podcastUrl, QMap<QString, QVariant >& set, const QList<QString>& remove );
SettingsPtr setEpisodeSettings( const QString& username, const QString& podcastUrl, const QString& episodeUrl, QMap<QString, QVariant >& set, const QList<QString>& remove );
DeviceUpdatesPtr deviceUpdates( const QString& username, const QString& deviceId, qlonglong timestamp );
QNetworkReply* renameDevice( const QString& username, const QString& deviceId, const QString& caption, Device::Type type );
DeviceList* listDevices( const QString& username );
EpisodeActionList* episodeActions( const QString& username, const bool aggregated );
EpisodeActionList* episodeActionsByPodcast( const QString& username, const QString& podcastUrl, const bool aggregated );
EpisodeActionList* episodeActionsByDevice( const QString& username, const QString& deviceId, const bool aggregated );
EpisodeActionList* episodeActionsByTimestamp( const QString& username, const qulonglong since );
EpisodeActionList* episodeActionsByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, const qulonglong since );
EpisodeActionList* episodeActionsByDeviceAndTimestamp( const QString& username, const QString& deviceId, const qulonglong since );
AddRemoveResult* uploadEpisodeActions( const QString& username, const QList<EpisodeActionPtr>& episodeActions );
DeviceSyncResult* deviceSynchronizationStatus( const QString& username );
DeviceListPtr listDevices( const QString& username );
EpisodeActionListPtr episodeActions( const QString& username, const bool aggregated );
EpisodeActionListPtr episodeActionsByPodcast( const QString& username, const QString& podcastUrl, const bool aggregated );
EpisodeActionListPtr episodeActionsByDevice( const QString& username, const QString& deviceId, const bool aggregated );
EpisodeActionListPtr episodeActionsByTimestamp( const QString& username, const qulonglong since );
EpisodeActionListPtr episodeActionsByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, const qulonglong since );
EpisodeActionListPtr episodeActionsByDeviceAndTimestamp( const QString& username, const QString& deviceId, const qulonglong since );
AddRemoveResultPtr uploadEpisodeActions( const QString& username, const QList<EpisodeActionPtr>& episodeActions );
DeviceSyncResultPtr deviceSynchronizationStatus( const QString& username );
private:
RequestHandler m_requestHandler;
};
}
#endif //APIREQUEST_PRIVATE_H
#endif //APIREQUEST_PRIVATE_H

View File

@ -44,20 +44,19 @@ GPodderSearchPage::~GPodderSearchPage() {
void GPodderSearchPage::SearchClicked() {
emit Busy(true);
mygpo::PodcastList* list = api_->search(ui_->query->text());
mygpo::PodcastListPtr list(api_->search(ui_->query->text()));
NewClosure(list, SIGNAL(finished()),
this, SLOT(SearchFinished(mygpo::PodcastList*)),
list);
list.data());
NewClosure(list, SIGNAL(parseError()),
this, SLOT(SearchFailed(mygpo::PodcastList*)),
list);
list.data());
NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)),
this, SLOT(SearchFailed(mygpo::PodcastList*)),
list);
list.data());
}
void GPodderSearchPage::SearchFinished(mygpo::PodcastList* list) {
list->deleteLater();
emit Busy(false);
model()->clear();
@ -71,7 +70,6 @@ void GPodderSearchPage::SearchFinished(mygpo::PodcastList* list) {
}
void GPodderSearchPage::SearchFailed(mygpo::PodcastList* list) {
list->deleteLater();
emit Busy(false);
model()->clear();

View File

@ -151,26 +151,23 @@ void GPodderSync::GetUpdatesNow() {
timestamp = last_successful_get_.toTime_t();
}
mygpo::DeviceUpdates* reply = api_->deviceUpdates(username_, DeviceId(), timestamp);
mygpo::DeviceUpdatesPtr reply(api_->deviceUpdates(username_, DeviceId(), timestamp));
NewClosure(reply, SIGNAL(finished()),
this, SLOT(DeviceUpdatesFinished(mygpo::DeviceUpdates*)),
reply);
reply.data());
NewClosure(reply, SIGNAL(parseError()),
this, SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdates*)),
reply);
reply.data());
NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)),
this, SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdates*)),
reply);
reply.data());
}
void GPodderSync::DeviceUpdatesFailed(mygpo::DeviceUpdates* reply) {
reply->deleteLater();
qLog(Warning) << "Failed to get gpodder.net device updates";
}
void GPodderSync::DeviceUpdatesFinished(mygpo::DeviceUpdates* reply) {
reply->deleteLater();
// Remember episode actions for each podcast, so when we add a new podcast
// we can apply the actions immediately.
QMap<QUrl, QList<mygpo::EpisodePtr> > episodes_by_podcast;
@ -334,34 +331,32 @@ void GPodderSync::FlushUpdateQueue() {
return;
flushing_queue_ = true;
mygpo::AddRemoveResult* reply =
mygpo::AddRemoveResultPtr reply(
api_->addRemoveSubscriptions(username_, DeviceId(),
queued_add_subscriptions_.toList(),
queued_remove_subscriptions_.toList());
queued_remove_subscriptions_.toList()));
qLog(Info) << "Sending" << all_urls.count() << "changes to gpodder.net";
NewClosure(reply, SIGNAL(finished()),
this, SLOT(AddRemoveFinished(mygpo::AddRemoveResult*,QList<QUrl>)),
reply, all_urls.toList());
reply.data(), all_urls.toList());
NewClosure(reply, SIGNAL(parseError()),
this, SLOT(AddRemoveFailed(mygpo::AddRemoveResult*)),
reply);
reply.data());
NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)),
this, SLOT(AddRemoveFailed(mygpo::AddRemoveResult*)),
reply);
reply.data());
}
void GPodderSync::AddRemoveFailed(mygpo::AddRemoveResult* reply) {
flushing_queue_ = false;
reply->deleteLater();
qLog(Warning) << "Failed to update gpodder.net subscriptions";
}
void GPodderSync::AddRemoveFinished(mygpo::AddRemoveResult* reply,
const QList<QUrl>& affected_urls) {
flushing_queue_ = false;
reply->deleteLater();
// Remove the URLs from the queue.
foreach (const QUrl& url, affected_urls) {

View File

@ -61,24 +61,22 @@ void GPodderTopTagsModel::fetchMore(const QModelIndex& parent) {
// Create a little Loading... item.
itemFromIndex(parent)->appendRow(CreateLoadingIndicator());
mygpo::PodcastList* list =
api_->podcastsOfTag(GPodderTopTagsPage::kMaxTagCount, parent.data().toString());
mygpo::PodcastListPtr list(
api_->podcastsOfTag(GPodderTopTagsPage::kMaxTagCount, parent.data().toString()));
NewClosure(list, SIGNAL(finished()),
this, SLOT(PodcastsOfTagFinished(QModelIndex,mygpo::PodcastList*)),
parent, list);
parent, list.data());
NewClosure(list, SIGNAL(parseError()),
this, SLOT(PodcastsOfTagFailed(QModelIndex,mygpo::PodcastList*)),
parent, list);
parent, list.data());
NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)),
this, SLOT(PodcastsOfTagFailed(QModelIndex,mygpo::PodcastList*)),
parent, list);
parent, list.data());
}
void GPodderTopTagsModel::PodcastsOfTagFinished(const QModelIndex& parent,
mygpo::PodcastList* list) {
list->deleteLater();
QStandardItem* parent_item = itemFromIndex(parent);
if (!parent_item)
return;
@ -98,8 +96,6 @@ void GPodderTopTagsModel::PodcastsOfTagFinished(const QModelIndex& parent,
void GPodderTopTagsModel::PodcastsOfTagFailed(const QModelIndex& parent,
mygpo::PodcastList* list) {
list->deleteLater();
QStandardItem* parent_item = itemFromIndex(parent);
if (!parent_item)
return;

View File

@ -22,6 +22,8 @@
#include <ApiRequest.h>
#include <QMessageBox>
const int GPodderTopTagsPage::kMaxTagCount = 100;
@ -47,19 +49,39 @@ void GPodderTopTagsPage::Show() {
emit Busy(true);
done_initial_load_ = true;
mygpo::TagList* tag_list = api_->topTags(kMaxTagCount);
mygpo::TagListPtr tag_list(api_->topTags(kMaxTagCount));
NewClosure(tag_list, SIGNAL(finished()),
this, SLOT(TagListLoaded(mygpo::TagList*)),
tag_list);
tag_list.data());
NewClosure(tag_list, SIGNAL(parseError()),
this, SLOT(TagListFailed(mygpo::TagList*)),
tag_list.data());
NewClosure(tag_list, SIGNAL(requestError(QNetworkReply::NetworkError)),
this, SLOT(TagListFailed(mygpo::TagList*)),
tag_list.data());
}
}
void GPodderTopTagsPage::TagListLoaded(mygpo::TagList* tag_list) {
tag_list->deleteLater();
emit Busy(false);
foreach (mygpo::TagPtr tag, tag_list->list()) {
model()->appendRow(model()->CreateFolder(tag->tag()));
}
}
void GPodderTopTagsPage::TagListFailed(mygpo::TagList* list) {
emit Busy(false);
done_initial_load_ = false;
if (QMessageBox::warning(
NULL, tr("Failed to fetch directory"),
tr("There was a problem communicating with gpodder.net"),
QMessageBox::Retry | QMessageBox::Close,
QMessageBox::Retry) != QMessageBox::Retry) {
return;
}
// Try doing the search again.
Show();
}

View File

@ -43,6 +43,7 @@ public:
private slots:
void TagListLoaded(mygpo::TagList* tag_list);
void TagListFailed(mygpo::TagList* tag_list);
private:
QNetworkAccessManager* network_;