URL Shortener: Difference between revisions
Jump to navigation
Jump to search
AutoSpider (talk | contribs) (Remove non-functioning "toc" command) |
m (→Source Code: Change c++ to cpp-qt to match edits mentioned here: https://forum.qt.io/topic/124460/qt-wiki-code-formatting) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:snippets]] | [[Category:snippets]] | ||
[[Category:HowTo]] | [[Category:HowTo]] | ||
== Overview == | == Overview == | ||
Line 26: | Line 18: | ||
=== Source Code === | === Source Code === | ||
URL Shortener API provided by is.gd supports json, xml and plain text as a simple response. In certain cases such as mobile applications the simple response is better solution because parsing is not required | URL Shortener API provided by is.gd supports json, xml and plain text as a simple response. In certain cases such as mobile applications the simple response is better solution because parsing is not required. | ||
< | <syntaxhighlight lang="cpp-qt"> | ||
#ifndef URLSHORTENER_H | #ifndef URLSHORTENER_H | ||
#define URLSHORTENER_H | #define URLSHORTENER_H | ||
Line 44: | Line 36: | ||
private: | private: | ||
FileDownloader* m_pDownloader; | FileDownloader* m_pDownloader; | ||
QString m_sShortUrl; | QString m_sShortUrl; | ||
public: | public: | ||
explicit UrlShortener(QObject *parent = 0); | |||
explicit UrlShortener(QObject | virtual ~UrlShortener(); | ||
/* | |||
/ | |||
* Request short URL from Google API | * Request short URL from Google API | ||
* | * | ||
* | * param sURL | ||
* | * | ||
* | * return nothing | ||
*/ | */ | ||
void requestShortUrl(QString sURL); | void requestShortUrl(QString sURL); | ||
/ | /* | ||
* Get address | * Get address | ||
* | * | ||
* | * return QString | ||
*/ | */ | ||
QString getShortUrl() const; | QString getShortUrl() const; | ||
Line 76: | Line 63: | ||
private slots: | private slots: | ||
void parseResponse(); | void parseResponse(); | ||
}; | }; | ||
#endif // URLSHORTENER_H | #endif // URLSHORTENER_H | ||
< | </syntaxhighlight> | ||
< | <syntaxhighlight lang="cpp-qt"> | ||
//Project specific includes | //Project specific includes | ||
Line 92: | Line 77: | ||
#include <QTextStream> | #include <QTextStream> | ||
UrlShortener::UrlShortener(QObject | UrlShortener::UrlShortener(QObject *parent) : | ||
QObject(parent), | QObject(parent), | ||
m_pDownloader(NULL) | m_pDownloader(NULL) | ||
{ | { | ||
m_pDownloader = new FileDownloader(this); | m_pDownloader = new FileDownloader(this); | ||
connect(m_pDownloader, SIGNAL (downloaded()), SLOT (parseResponse())); | connect(m_pDownloader, SIGNAL (downloaded()), SLOT (parseResponse())); | ||
} | } | ||
// | // ------------------ | ||
UrlShortener::~UrlShortener() | UrlShortener::~UrlShortener() | ||
Line 106: | Line 90: | ||
//Nothing to do | //Nothing to do | ||
} | } | ||
// | // ------------------ | ||
void UrlShortener::requestShortUrl(QString sURL) | void UrlShortener::requestShortUrl(QString sURL) | ||
Line 116: | Line 100: | ||
m_pDownloader->downloadUrl(req); | m_pDownloader->downloadUrl(req); | ||
} | } | ||
// | // ------------------ | ||
void UrlShortener::parseResponse() | void UrlShortener::parseResponse() | ||
Line 127: | Line 111: | ||
emit shortUrlRetrieved(); | emit shortUrlRetrieved(); | ||
} | } | ||
// | // ------------------ | ||
QString UrlShortener::getShortUrl() const | QString UrlShortener::getShortUrl() const | ||
Line 133: | Line 117: | ||
return m_sShortUrl; | return m_sShortUrl; | ||
} | } | ||
// | // ------------------ | ||
</syntaxhighlight> | |||
=== Usage === | |||
<code> | <code> | ||
m_pUrlShortener = new UrlShortener(this); | m_pUrlShortener = new UrlShortener(this); | ||
connect(m_pUrlShortener, SIGNAL (shortUrlRetrieved()), this, SLOT (loadMapShortUrl())); | connect(m_pUrlShortener, SIGNAL (shortUrlRetrieved()), this, SLOT (loadMapShortUrl())); | ||
// | //* | ||
m_pUrlShortener->requestShortUrl(QString("http://example.com")); | m_pUrlShortener->requestShortUrl(QString("http://example.com")); | ||
<code> | </code> | ||
Latest revision as of 04:15, 7 June 2023
Overview
URL shortening is a technique in which a Uniform Resource Locator (URL) may be made substantially shorter in length and still direct to the required page. It is often used for simpler presentation of URLs at social networks and mobile applications.
URL Shortener API
There are plenty of URL Shortner API. The most popular are:
URL Shortener for Qt
Qt implementation of URL Shortener based on is.gd service and the file download class.
Source Code
URL Shortener API provided by is.gd supports json, xml and plain text as a simple response. In certain cases such as mobile applications the simple response is better solution because parsing is not required.
#ifndef URLSHORTENER_H
#define URLSHORTENER_H
//Standard includes
#include <QObject>
#include <QString>
//Project specific includes
#include "filedownloader.h"
class UrlShortener : public QObject
{
Q_OBJECT
private:
FileDownloader* m_pDownloader;
QString m_sShortUrl;
public:
explicit UrlShortener(QObject *parent = 0);
virtual ~UrlShortener();
/*
* Request short URL from Google API
*
* param sURL
*
* return nothing
*/
void requestShortUrl(QString sURL);
/*
* Get address
*
* return QString
*/
QString getShortUrl() const;
signals:
void shortUrlRetrieved();
private slots:
void parseResponse();
};
#endif // URLSHORTENER_H
//Project specific includes
#include "urlshortener.h"
//Standard includes
#include <QTextStream>
UrlShortener::UrlShortener(QObject *parent) :
QObject(parent),
m_pDownloader(NULL)
{
m_pDownloader = new FileDownloader(this);
connect(m_pDownloader, SIGNAL (downloaded()), SLOT (parseResponse()));
}
// ------------------
UrlShortener::~UrlShortener()
{
//Nothing to do
}
// ------------------
void UrlShortener::requestShortUrl(QString sURL)
{
//Obtain short URL
QUrl req = QUrl( "http://is.gd/create.php");
req.addQueryItem("format", "simple");
req.addQueryItem("longurl", sURL);
m_pDownloader->downloadUrl(req);
}
// ------------------
void UrlShortener::parseResponse()
{
QTextStream downloadedStream(m_pDownloader->downloadedData());
m_sShortUrl = downloadedStream.readAll();
//emit a signal
emit shortUrlRetrieved();
}
// ------------------
QString UrlShortener::getShortUrl() const
{
return m_sShortUrl;
}
// ------------------
Usage
m_pUrlShortener = new UrlShortener(this);
connect(m_pUrlShortener, SIGNAL (shortUrlRetrieved()), this, SLOT (loadMapShortUrl()));
//*
m_pUrlShortener->requestShortUrl(QString("http://example.com"));