UrlBuilder.h | UrlBuilder.h | |||
---|---|---|---|---|
/************************************************************************** | /* | |||
* | Copyright 2009 Last.fm Ltd. | |||
* Copyright 2005-2009 Last.fm Ltd. | - Primarily authored by Max Howell, Jono Cole and Doug Mansell | |||
* | ||||
* | This file is part of liblastfm. | |||
* | ||||
* This program is free software; you can redistribute it and/or modify | liblastfm is free software: you can redistribute it and/or modify | |||
* | it under the terms of the GNU General Public License as published by | |||
* it under the terms of the GNU General Public License as published by | the Free Software Foundation, either version 3 of the License, or | |||
* | (at your option) any later version. | |||
* the Free Software Foundation; either version 2 of the License, or | ||||
* | liblastfm is distributed in the hope that it will be useful, | |||
* (at your option) any later version. | but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* | GNU General Public License for more details. | |||
* | ||||
* This program is distributed in the hope that it will be useful, | You should have received a copy of the GNU General Public License | |||
* | along with liblastfm. If not, see <http://www.gnu.org/licenses/>. | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | */ | |||
* | ||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
* | ||||
* GNU General Public License for more details. | ||||
* | ||||
* | ||||
* | ||||
* You should have received a copy of the GNU General Public License | ||||
* | ||||
* along with this program; if not, write to the | ||||
* | ||||
* Free Software Foundation, Inc., | ||||
* | ||||
* 51 Franklin Steet, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
* | ||||
************************************************************************** | ||||
*/ | ||||
#ifndef LASTFM_URL_BUILDER_H | #ifndef LASTFM_URL_BUILDER_H | |||
#define LASTFM_URL_BUILDER_H | #define LASTFM_URL_BUILDER_H | |||
#include <lastfm/global.h> | #include "global.h" | |||
#include <QLocale> | #include <QLocale> | |||
#include <QString> | ||||
#include <QUrl> | #include <QUrl> | |||
namespace lastfm | namespace lastfm | |||
{ | { | |||
/** For building www.last.fm urls. We have special rules for encoding a nd that */ | /** For building www.last.fm urls. We have special rules for encoding a nd that */ | |||
class LASTFM_CORE_DLLEXPORT UrlBuilder | class LASTFM_DLLEXPORT UrlBuilder | |||
{ | { | |||
QByteArray path; | ||||
public: | public: | |||
/** Careful, the base is not encoded at all, we assume it is ASCII! | /** Careful, the base is not encoded at all, we assume it is ASCII! | |||
* If you need it encoded at all you must use the slash function. | * If you need it encoded at all you must use the slash function. | |||
* eg. UrlBuilder( "user" ).slash( "mxcl" ) ==> http://last.fm/use r/mxcl | * eg. UrlBuilder( "user" ).slash( "mxcl" ) ==> http://last.fm/use r/mxcl | |||
*/ | */ | |||
UrlBuilder( const QString& base ) : path( '/' + base.toAscii() ) | UrlBuilder( const QString& base ); | |||
{} | ||||
UrlBuilder& slash( const QString& path ) { this->path += '/' + enco | UrlBuilder& slash( const QString& path ); | |||
de( path ); return *this; } | ||||
UrlBuilder( const UrlBuilder& that ); | ||||
~UrlBuilder(); | ||||
QUrl url() const; | QUrl url() const; | |||
/** www.last.fm becomes the local version, eg www.lastfm.de */ | /** www.last.fm becomes the local version, eg www.lastfm.de */ | |||
static QUrl localize( QUrl ); | static QUrl localize( QUrl ); | |||
/** www.last.fm becomes m.last.fm, localisation is preserved */ | /** www.last.fm becomes m.last.fm, localisation is preserved */ | |||
static QUrl mobilize( QUrl ); | static QUrl mobilize( QUrl ); | |||
/** Use this to URL encode any database item (artist, track, album). | /** Use this to URL encode any database item (artist, track, album) | |||
It | . It | |||
* internally calls UrlEncodeSpecialChars to double encode some spe | * internally calls UrlEncodeSpecialChars to double encode some sp | |||
cial | ecial | |||
* symbols according to the same pattern as that used on the websit | * symbols according to the same pattern as that used on the websi | |||
e. | te. | |||
* | * | |||
* &, /, ;, +, # | * &, /, ;, +, # | |||
* | * | |||
* Use for any urls that go to www.last.fm | * Use for any urls that go to www.last.fm | |||
* Do not use for ws.audioscrobbler.com | * Do not use for ws.audioscrobbler.com | |||
*/ | */ | |||
static QByteArray encode( QString ); | static QByteArray encode( QString ); | |||
/** returns eg. www.lastfm.de */ | ||||
static QString host( const QLocale& = QLocale() ); | ||||
/** return true if url is a last.fm url */ | ||||
static bool isHost( const QUrl& url ); | ||||
UrlBuilder& operator=( const UrlBuilder& that ); | ||||
/** returns eg. www.lastfm.de */ | private: | |||
static QString host( const QLocale& = QLocale() ); | class UrlBuilderPrivate * const d; | |||
}; | }; | |||
} | } | |||
#endif | #endif | |||
End of changes. 9 change blocks. | ||||
66 lines changed or deleted | 54 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |