protected function getPath(Request $request) { $path = $this->path . DIRECTORY_SEPARATOR . strtolower($request->getMethod()) . DIRECTORY_SEPARATOR . $request->getHost() . DIRECTORY_SEPARATOR; if ($request->getPath() !== '/') { $rpath = $request->getPath(); $rpath = substr($rpath, 0, 1) === '/' ? substr($rpath, 1) : $rpath; $rpath = substr($rpath, -1, 1) === '/' ? substr($rpath, 0, -1) : $rpath; $path .= str_replace("/", "_", $rpath) . DIRECTORY_SEPARATOR; } return $path; }
public function signer(Request $request) { $query = $request->getQuery(); $query->merge($this->defaults); $newQuery = $query->toArray(); if (str_contains(strtolower($request->getPath()), 'orders')) { $newQuery['MarketplaceId.Id.1'] = $newQuery['MarketplaceId']; unset($newQuery['MarketplaceId']); } ksort($newQuery, SORT_NATURAL); $query->replace($newQuery); $canonicalizedString = implode("\n", [$request->getMethod(), $request->getHost(), $request->getPath(), (string) $request->getQuery()]); $signature = base64_encode(hash_hmac('sha256', $canonicalizedString, env('MWS_SECRET_KEY'), true)); $request->getQuery()->set('Signature', $signature); return $request; }
public function testSettingUrlOverridesHostHeaders() { $r = new Request('GET', 'http://test.com/test'); $r->setUrl('https://baz.com/bar'); $this->assertEquals('baz.com', $r->getHost()); $this->assertEquals('baz.com', $r->getHeader('Host')); $this->assertEquals('/bar', $r->getPath()); $this->assertEquals('https', $r->getScheme()); }