From owner-svn-ports-all@freebsd.org Thu Apr 5 17:22:59 2018 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B0223F94778; Thu, 5 Apr 2018 17:22:59 +0000 (UTC) (envelope-from jhale@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 654A98730D; Thu, 5 Apr 2018 17:22:59 +0000 (UTC) (envelope-from jhale@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 601AB25A87; Thu, 5 Apr 2018 17:22:59 +0000 (UTC) (envelope-from jhale@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w35HMxmG034833; Thu, 5 Apr 2018 17:22:59 GMT (envelope-from jhale@FreeBSD.org) Received: (from jhale@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w35HMw4r034828; Thu, 5 Apr 2018 17:22:58 GMT (envelope-from jhale@FreeBSD.org) Message-Id: <201804051722.w35HMw4r034828@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhale set sender to jhale@FreeBSD.org using -f From: "Jason E. Hale" Date: Thu, 5 Apr 2018 17:22:58 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-branches@freebsd.org Subject: svn commit: r466575 - in branches/2018Q2/audio/liblastfm: . files X-SVN-Group: ports-branches X-SVN-Commit-Author: jhale X-SVN-Commit-Paths: in branches/2018Q2/audio/liblastfm: . files X-SVN-Commit-Revision: 466575 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Apr 2018 17:23:00 -0000 Author: jhale Date: Thu Apr 5 17:22:58 2018 New Revision: 466575 URL: https://svnweb.freebsd.org/changeset/ports/466575 Log: MFH: r466574 Fix 301 redirects in the UrlBuilder class - http scheme redirects to https - Mobile website (m.last.fm) redirects to www.last.fm - Localized hosts redirect e.g. www.lastfm.de to www.last.fm/de - New localePath() function has been added to handle the localized base path since the library was localizing using the host before. This is not an official fix, but upstream is pretty dead. Move USES upward Convert CMAKE_ARGS to CMAKE_ON Approved by: ports-secteam (blanket) Added: branches/2018Q2/audio/liblastfm/files/patch-src_UrlBuilder.cpp - copied unchanged from r466574, head/audio/liblastfm/files/patch-src_UrlBuilder.cpp branches/2018Q2/audio/liblastfm/files/patch-src_UrlBuilder.h - copied unchanged from r466574, head/audio/liblastfm/files/patch-src_UrlBuilder.h branches/2018Q2/audio/liblastfm/files/patch-tests_TestUrlBuilder.h - copied unchanged from r466574, head/audio/liblastfm/files/patch-tests_TestUrlBuilder.h Modified: branches/2018Q2/audio/liblastfm/Makefile branches/2018Q2/audio/liblastfm/files/patch-src_mbid__mp3.c Directory Properties: branches/2018Q2/ (props changed) Modified: branches/2018Q2/audio/liblastfm/Makefile ============================================================================== --- branches/2018Q2/audio/liblastfm/Makefile Thu Apr 5 17:20:36 2018 (r466574) +++ branches/2018Q2/audio/liblastfm/Makefile Thu Apr 5 17:22:58 2018 (r466575) @@ -3,7 +3,7 @@ PORTNAME= liblastfm PORTVERSION= 1.0.9 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= audio MAINTAINER= jhale@FreeBSD.org @@ -12,15 +12,14 @@ COMMENT= Qt C++ library for the Last.fm webservices LICENSE= GPLv3+ LICENSE_FILE= ${WRKSRC}/COPYING +USES= cmake pkgconfig USE_GITHUB= yes GH_ACCOUNT= lastfm - -USES= cmake pkgconfig USE_LDCONFIG= yes USE_QT4= corelib dbus network sql xml \ moc_build qmake_build rcc_build -CMAKE_ARGS= -DBUILD_WITH_QT4:BOOL=ON +CMAKE_ON= BUILD_WITH_QT4 OPTIONS_DEFINE= FINGERPRINT TEST OPTIONS_DEFAULT= FINGERPRINT Copied: branches/2018Q2/audio/liblastfm/files/patch-src_UrlBuilder.cpp (from r466574, head/audio/liblastfm/files/patch-src_UrlBuilder.cpp) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2018Q2/audio/liblastfm/files/patch-src_UrlBuilder.cpp Thu Apr 5 17:22:58 2018 (r466575, copy of r466574, head/audio/liblastfm/files/patch-src_UrlBuilder.cpp) @@ -0,0 +1,123 @@ +url(): + - Use https scheme to avoid 301 redirects + - Override default QUrl::TolerantMode with QUrl::StrictMode for Qt 5.x to + prevent overprocessing the already encoded input URL +localePath(): + - New function to return the base path of the localized website +host(): + - Just return www.last.fm since the localized hosts 301 redirect there +localize(): + - Set the path of the url instead of the host since the localized + hosts 301 redirect to the main website with a localized path +mobilize(): + - Mobile website 301 redirects to main website, so just return the url as-is + +--- src/UrlBuilder.cpp.orig 2014-10-02 14:05:46 UTC ++++ src/UrlBuilder.cpp +@@ -32,7 +32,7 @@ class lastfm::UrlBuilderPrivate (public) + lastfm::UrlBuilder::UrlBuilder( const QString& base ) + : d( new UrlBuilderPrivate ) + { +- d->path = '/' + base.toLatin1(); ++ d->path = localePath().toLatin1() + '/' + base.toLatin1(); + } + + +@@ -60,10 +60,10 @@ QUrl + lastfm::UrlBuilder::url() const + { + QUrl url; +- url.setScheme( "http" ); ++ url.setScheme( "https" ); + url.setHost( host() ); + #if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) +- url.setPath( d->path ); ++ url.setPath( d->path, QUrl::StrictMode ); + #else + url.setEncodedPath( d->path ); + #endif +@@ -85,49 +85,50 @@ lastfm::UrlBuilder::encode( QString s ) + + + QString //static +-lastfm::UrlBuilder::host( const QLocale& locale ) ++lastfm::UrlBuilder::localePath( const QLocale& locale ) + { + switch (locale.language()) + { +- case QLocale::Portuguese: return "www.lastfm.com.br"; +- case QLocale::Turkish: return "www.lastfm.com.tr"; +- case QLocale::French: return "www.lastfm.fr"; +- case QLocale::Italian: return "www.lastfm.it"; +- case QLocale::German: return "www.lastfm.de"; +- case QLocale::Spanish: return "www.lastfm.es"; +- case QLocale::Polish: return "www.lastfm.pl"; +- case QLocale::Russian: return "www.lastfm.ru"; +- case QLocale::Japanese: return "www.lastfm.jp"; +- case QLocale::Swedish: return "www.lastfm.se"; +- case QLocale::Chinese: return "cn.last.fm"; +- default: return "www.last.fm"; ++ case QLocale::Chinese: return "/zh"; ++ case QLocale::French: return "/fr"; ++ case QLocale::German: return "/de"; ++ case QLocale::Italian: return "/it"; ++ case QLocale::Japanese: return "/ja"; ++ case QLocale::Polish: return "/pl"; ++ case QLocale::Portuguese: return "/pt"; ++ case QLocale::Russian: return "/ru"; ++ case QLocale::Spanish: return "/es"; ++ case QLocale::Swedish: return "/sv"; ++ case QLocale::Turkish: return "/tr"; ++ default: return ""; + } + } + + ++QString //static ++lastfm::UrlBuilder::host( const QLocale& locale ) ++{ ++ return "www.last.fm"; ++} ++ ++ + bool // static + lastfm::UrlBuilder::isHost( const QUrl& url ) + { +- QStringList hosts = QStringList() << "www.lastfm.com.br" +- << "www.lastfm.com.tr" +- << "www.lastfm.fr" +- << "www.lastfm.it" +- << "www.lastfm.de" +- << "www.lastfm.es" +- << "www.lastfm.pl" +- << "www.lastfm.ru" +- << "www.lastfm.jp" +- << "www.lastfm.se" +- << "cn.last.fm" +- << "www.last.fm"; ++ QStringList hosts = QStringList() << "www.last.fm"; + + return hosts.contains( url.host() ); + } + ++ + QUrl //static + lastfm::UrlBuilder::localize( QUrl url) + { +- url.setHost( url.host().replace( QRegExp("^(www.)?last.fm"), host() ) ); ++#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) ++ url.setPath( url.path().prepend( localePath() ), QUrl::DecodedMode ); ++#else ++ url.setPath( url.path().prepend( localePath() ) ); ++#endif + return url; + } + +@@ -135,7 +136,6 @@ lastfm::UrlBuilder::localize( QUrl url) + QUrl //static + lastfm::UrlBuilder::mobilize( QUrl url ) + { +- url.setHost( url.host().replace( QRegExp("^(www.)?last"), "m.last" ) ); + return url; + } + Copied: branches/2018Q2/audio/liblastfm/files/patch-src_UrlBuilder.h (from r466574, head/audio/liblastfm/files/patch-src_UrlBuilder.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2018Q2/audio/liblastfm/files/patch-src_UrlBuilder.h Thu Apr 5 17:22:58 2018 (r466575, copy of r466574, head/audio/liblastfm/files/patch-src_UrlBuilder.h) @@ -0,0 +1,31 @@ +Add prototype for localePath() and adjust comments to reflect current +website layout + +--- src/UrlBuilder.h.orig 2014-10-02 14:05:46 UTC ++++ src/UrlBuilder.h +@@ -44,9 +44,11 @@ namespace lastfm + + QUrl url() const; + +- /** www.last.fm becomes the local version, eg www.lastfm.de */ ++ /** www.last.fm becomes the local version, e.g. www.last.fm/de */ + static QUrl localize( QUrl ); +- /** www.last.fm becomes m.last.fm, localisation is preserved */ ++ ++ /** DEPRECATED: Returns url as-is since the mobile website redirects ++ * to the main website */ + static QUrl mobilize( QUrl ); + + /** Use this to URL encode any database item (artist, track, album). It +@@ -60,7 +62,10 @@ namespace lastfm + */ + static QByteArray encode( QString ); + +- /** returns eg. www.lastfm.de */ ++ /** returns the base path of the localized website e.g. /de */ ++ static QString localePath ( const QLocale& = QLocale() ); ++ ++ /** returns www.last.fm */ + static QString host( const QLocale& = QLocale() ); + + /** return true if url is a last.fm url */ Modified: branches/2018Q2/audio/liblastfm/files/patch-src_mbid__mp3.c ============================================================================== --- branches/2018Q2/audio/liblastfm/files/patch-src_mbid__mp3.c Thu Apr 5 17:20:36 2018 (r466574) +++ branches/2018Q2/audio/liblastfm/files/patch-src_mbid__mp3.c Thu Apr 5 17:22:58 2018 (r466575) @@ -4,7 +4,7 @@ warning: logical not is only applied to the left hand --- src/mbid_mp3.c.orig 2014-10-02 14:05:46 UTC +++ src/mbid_mp3.c -@@ -94,7 +94,7 @@ int getMP3_MBID(const char *path, char m +@@ -94,7 +94,7 @@ int getMP3_MBID(const char *path, char mbid[MBID_BUFFE while (s) { mfile(3,head,fp,&s); Copied: branches/2018Q2/audio/liblastfm/files/patch-tests_TestUrlBuilder.h (from r466574, head/audio/liblastfm/files/patch-tests_TestUrlBuilder.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2018Q2/audio/liblastfm/files/patch-tests_TestUrlBuilder.h Thu Apr 5 17:22:58 2018 (r466575, copy of r466574, head/audio/liblastfm/files/patch-tests_TestUrlBuilder.h) @@ -0,0 +1,13 @@ +http://www.last.fm 301 redirects to https://www.last.fm causing test to fail + +--- tests/TestUrlBuilder.h.orig 2018-03-31 12:04:00 UTC ++++ tests/TestUrlBuilder.h +@@ -81,7 +81,7 @@ private slots: + + void test404() /** @author */ + { +- QCOMPARE( getResponseCode( QUrl("http://www.last.fm/404") ), 404 ); ++ QCOMPARE( getResponseCode( QUrl("https://www.last.fm/404") ), 404 ); + } + }; +