assertHttpMethod('post'); if (! $this->getRequest()->isApiRequest()) { $this->httpBadRequest('No API request'); } if ( ! preg_match('/([^;]*);?/', $this->getRequest()->getHeader('Content-Type'), $matches) || $matches[1] !== 'application/json' ) { $this->httpBadRequest('No JSON content'); } $urls = $this->getRequest()->getPost(); $result = []; foreach ($urls as $urlString) { $url = Url::fromPath($urlString); $params = $url->onlyWith(['sort', 'limit', 'view', 'columns', 'page'])->getParams(); $filter = $url->without(['sort', 'limit', 'view', 'columns', 'page'])->getParams(); $filter = QueryString::parse((string) $filter); $nonStrictOriginalFilter = QueryString::render($filter); $filter = UrlMigrator::transformLegacyWildcardFilter($filter); $nonStrictUpdatedFilter = QueryString::render($filter); if ($nonStrictUpdatedFilter !== $nonStrictOriginalFilter) { // The original filter might be formatted loosely, so if we render it again, // it might look different although nothing changed $result[] = rawurldecode($url->setParams($params)->setFilter($filter)->getAbsoluteUrl()); } else { $result[] = $urlString; } } $response = $this->getResponse()->json(); $response->setSuccessData($result); $response->sendResponse(); } }