From 15a72e2a88b000ac4f1edd5cedc7c12d9bfe45cc Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 12 Jan 2020 10:06:45 +0100 Subject: [PATCH 1/4] Updated local config files which were not fulfilling the project's coding standards --- config/autoload/common.local.php.dist | 1 + config/autoload/router.local.php.dist | 4 ++++ config/autoload/swoole.local.php.dist | 5 +++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/config/autoload/common.local.php.dist b/config/autoload/common.local.php.dist index 9d1276c4..f29c74b0 100644 --- a/config/autoload/common.local.php.dist +++ b/config/autoload/common.local.php.dist @@ -1,4 +1,5 @@ [ +// 'base_path' => '', 'fastroute' => [ FastRouteRouter::CONFIG_CACHE_ENABLED => false, ], diff --git a/config/autoload/swoole.local.php.dist b/config/autoload/swoole.local.php.dist index 5e12a5a3..2dda6f24 100644 --- a/config/autoload/swoole.local.php.dist +++ b/config/autoload/swoole.local.php.dist @@ -1,12 +1,13 @@ [ + 'expressive-swoole' => [ 'hot-code-reload' => [ 'enable' => true, ], From c52794aed6b5677a03a55fd85978b00f57d9cde4 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 12 Jan 2020 10:26:59 +0100 Subject: [PATCH 2/4] Replaced standard http_build_query by guzzle's build_query, which keeps params with no value --- module/Core/src/Action/AbstractTrackingAction.php | 10 ++-------- module/Core/test/Action/RedirectActionTest.php | 1 + 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/module/Core/src/Action/AbstractTrackingAction.php b/module/Core/src/Action/AbstractTrackingAction.php index 384b7a3e..8cac42fc 100644 --- a/module/Core/src/Action/AbstractTrackingAction.php +++ b/module/Core/src/Action/AbstractTrackingAction.php @@ -20,8 +20,8 @@ use Shlinkio\Shlink\Core\Service\VisitsTrackerInterface; use function array_key_exists; use function array_merge; +use function GuzzleHttp\Psr7\build_query; use function GuzzleHttp\Psr7\parse_query; -use function http_build_query; abstract class AbstractTrackingAction implements MiddlewareInterface { @@ -42,12 +42,6 @@ abstract class AbstractTrackingAction implements MiddlewareInterface $this->logger = $logger ?: new NullLogger(); } - /** - * Process an incoming server request and return a response, optionally delegating - * to the next middleware component to create the response. - * - * - */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $shortCode = $request->getAttribute('shortCode', ''); @@ -79,7 +73,7 @@ abstract class AbstractTrackingAction implements MiddlewareInterface } $mergedQuery = array_merge($hardcodedQuery, $currentQuery); - return (string) $uri->withQuery(http_build_query($mergedQuery)); + return (string) $uri->withQuery(build_query($mergedQuery)); } abstract protected function createSuccessResp(string $longUrl): ResponseInterface; diff --git a/module/Core/test/Action/RedirectActionTest.php b/module/Core/test/Action/RedirectActionTest.php index 04705251..b7060a8e 100644 --- a/module/Core/test/Action/RedirectActionTest.php +++ b/module/Core/test/Action/RedirectActionTest.php @@ -64,6 +64,7 @@ class RedirectActionTest extends TestCase { yield ['http://domain.com/foo/bar?some=thing', []]; yield ['http://domain.com/foo/bar?some=thing', ['foobar' => 'notrack']]; + yield ['http://domain.com/foo/bar?some=thing&else', ['else' => null]]; yield ['http://domain.com/foo/bar?some=thing&foo=bar', ['foo' => 'bar']]; yield ['http://domain.com/foo/bar?some=overwritten&foo=bar', ['foo' => 'bar', 'some' => 'overwritten']]; yield ['http://domain.com/foo/bar?some=overwritten', ['foobar' => 'notrack', 'some' => 'overwritten']]; From fc95986f0ee5c8e5871adda730a079af064e9738 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 12 Jan 2020 10:30:14 +0100 Subject: [PATCH 3/4] Updated changelog for v2.0.2 --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4ccd70e..e9a1c86a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com), and this project adheres to [Semantic Versioning](https://semver.org). -## [Unreleased] +## 2.0.2 - 2020-01-12 #### Added @@ -25,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com), and this #### Fixed * [#614](https://github.com/shlinkio/shlink/issues/614) Fixed `OPTIONS` requests including the `Origin` header not always returning an empty body with status 2xx. +* [#615](https://github.com/shlinkio/shlink/issues/615) Fixed query args with no value being lost from the long URL when users are redirected. ## 2.0.1 - 2020-01-10 From af1dd78b2c47eb76c2b9d6e73190ffd1c161b47d Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Sun, 12 Jan 2020 10:32:03 +0100 Subject: [PATCH 4/4] Fixed typo --- config/autoload/swoole.local.php.dist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/autoload/swoole.local.php.dist b/config/autoload/swoole.local.php.dist index 2dda6f24..0c485690 100644 --- a/config/autoload/swoole.local.php.dist +++ b/config/autoload/swoole.local.php.dist @@ -7,7 +7,7 @@ use Mezzio\Swoole\HotCodeReload\FileWatcher\InotifyFileWatcher; return [ - 'expressive-swoole' => [ + 'mezzio-swoole' => [ 'hot-code-reload' => [ 'enable' => true, ],