public function create(Step $step, ValueBag $values = null, RequestInterface $request = null, ResponseInterface $response = null, Crawler $crawler = null)
{
if (null === $values) {
$values = new ValueBag();
}
if ($step->getUri()) {
$request = $this->createRequestFromUri($step, $values);
} elseif ($step->getLinkSelector()) {
$request = $this->createRequestFromLink($step, $values, $crawler);
} elseif ($step->getFormSelector()) {
$request = $this->createRequestFromForm($step, $values, $crawler);
} elseif ($step->isFollow()) {
$request = $this->createRequestFromFollow($step, $values, $request, $response, $crawler);
} else {
throw new LogicException('A step needs a URI, a link, a form, or a follow redirect.');
}
return $request->withHeader('X-Request-Id', substr(sha1($request->getUri()), 0, 7));
}