public function transformResponseToMessage(Response $response) { $listeners = $this->netstringEncoder->encode(implode(' ', $response->getListeners())); $content = $response->getContent(); $headers = $response->getHeaders(); // Ensure content-length is set, otherwise Mongrel2 will ignore our request. if (!isset($headers['content-length'][0])) { $headers['content-length'][] = strlen($content); } $headersString = ''; foreach ($headers as $name => $values) { $name = implode('-', array_map('ucfirst', explode('-', $name))); foreach ($values as $value) { $headersString .= sprintf("%s %s\r\n", $name . ':', $value); } } // Building our own HTTP Response. $message = sprintf("%s %s HTTP/%s %d %s\r\n%s\r\n%s\r\n", $response->getUuid(), $listeners, $response->getHttpVersion(), $response->getStatusCode(), $response->getReasonPhrase(), $headersString, $content); return $message; }