/*************************************************************************** * This file is part of libmygpo-qt * * Copyright (c) 2010 - 2013 Stefan Derkits * * Copyright (c) 2010 - 2011 Christian Wagner * * Copyright (c) 2010 - 2011 Felix Winter * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library; if not, write to the Free Software * * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * * USA * ***************************************************************************/ #ifndef LIBMYGPO_QT_URLBUILDER_H #define LIBMYGPO_QT_URLBUILDER_H #include namespace mygpo { /** * Helper class to generate request URL's. * Helps to generate URL's for the gpodder requests. * This class uses the singleton pattern, to retrieve a * reference to the singleton object use the function instance(). */ class UrlBuilder { public: enum Format { JSON, OPML, TEXT, XML }; /** * @param i Any value between 1..100. If i <= 0 it will be set to 1. * @return Request URL to retrieve a list of the top 'i' podcasts. */ static QString getToplistUrl( uint i, Format f = JSON ); /** * @param i Any value between 1..100. If i <= 0 it will be set to 1. * @return Rquest URL to retrieve 'i' podcast suggestions. */ static QString getSuggestionsUrl( uint i, Format f = JSON ); /** * @param query The query to search in the podcasts name/descrption. * @return Request URL to retrieve podcasts related to the query. */ static QString getPodcastSearchUrl( const QString& query, Format f = JSON ); static QString getSubscriptionsUrl( const QString& username, const QString& device, Format f = JSON ); /** * @param i Amount of tags. If i == 0 it will be set to 1. * @return Request URL to retrieve the 'i' most used tags. */ static QString getTopTagsUrl( uint i ); /** * @param i Amount of podcasts. If i == 0 it will be set to 1. * @return Request URL to retrieve the 'i' most-subscribed podcats that are tagged with tag. */ static QString getPodcastsOfTagUrl( const QString& tag, uint i ); /** * @param url The URL of the podcast * @return Request URL to retrieve information about the podcast with the given url. */ static QString getPodcastDataUrl( const QString& url ); /** * @param podcastUrl URL of the podcast * @param episodeUrl URL of the episode that belongs to the podcast-url * @return Request URL to retrieve information about the episode with the given episode-url. */ static QString getEpisodeDataUrl( const QString& podcastUrl, const QString& episodeUrl ); /** * @param username User name (gpodder.net). You need to be logged in with username. * @return Request URL to retrieve a list of all favorite episodes. */ static QString getFavEpisodesUrl( const QString& username ); /** * @param username User name (gpodder.net). You need to be logged in with username. * @param deviceId The id of the device. * @return Request URL to to update the subscription list for a given device. */ static QString getAddRemoveSubUrl( const QString& username, const QString& deviceId ); static QString getAccountSettingsUrl( const QString& username ); static QString getDeviceSettingsUrl( const QString& username, const QString& deviceId ); static QString getPodcastSettingsUrl( const QString& username, const QString& podcastUrl ); static QString getEpisodeSettingsUrl( const QString& username, const QString& podcastUrl, const QString& episodeUrl ); static QString getDeviceListUrl( const QString& username ); static QString getRenameDeviceUrl( const QString& username, const QString& deviceId ); static QString getDeviceUpdatesUrl( const QString& username, const QString& deviceId, qulonglong timestamp ); static QString getEpisodeActionsUrl( const QString& username, bool aggregated ); static QString getEpisodeActionsUrlByPodcast( const QString& username, const QString& podcastUrl, bool aggregated ); static QString getEpisodeActionsUrlByDevice( const QString& username, const QString& deviceId, bool aggregated ); static QString getEpisodeActionsUrlByTimestamp( const QString& username, qulonglong since ); static QString getEpisodeActionsUrlByPodcastAndTimestamp( const QString& username, const QString& podcastUrl, qulonglong since ); static QString getEpisodeActionsUrlByDeviceAndTimestamp( const QString& username, const QString& deviceId, qulonglong since ); static QString getUploadEpisodeActionsUrl( const QString& username ); static QString getDeviceSynchronizationStatusUrl( const QString& username ); private: UrlBuilder() {}; UrlBuilder( const UrlBuilder& ) {}; static const QString s_server; static const QString s_api2; static const QString s_api1; }; } #endif // LIBMYGPO_QT_URLBUILDER_H