22
33namespace BasicHttpClient \Response ;
44
5- use BasicHttpClient \Request \Message \ Header \ Header as RequestHeader ;
5+ use BasicHttpClient \Request \Base \ RequestInterface ;
66use BasicHttpClient \Response \Header \Header ;
77use BasicHttpClient \Response \Statistics \Statistics ;
8- use BasicHttpClient \Response \Statistics \StatisticsBuilder ;
98
109/**
1110 * Class Response
1514class Response
1615{
1716
17+ /**
18+ * @var RequestInterface
19+ */
20+ private $ request ;
21+
1822 /**
1923 * @var int
2024 */
@@ -56,19 +60,14 @@ class Response
5660 private $ statistics ;
5761
5862 /**
59- * @var string
60- */
61- private $ effectiveRequestStatus ;
62-
63- /**
64- * @var string
65- */
66- private $ effectiveRequestEndpoint ;
67-
68- /**
69- * @var RequestHeader[]
63+ * Response constructor.
64+ *
65+ * @param RequestInterface $request
7066 */
71- private $ effectiveRequestHeaders = array ();
67+ public function __construct (RequestInterface $ request )
68+ {
69+ $ this ->request = $ request ;
70+ }
7271
7372 /**
7473 * @param resource $curl
@@ -78,12 +77,10 @@ class Response
7877 public function populateFromCurlResult ($ curl , $ responseBody )
7978 {
8079 $ this ->statusCode = intval (curl_getinfo ($ curl , CURLINFO_HTTP_CODE ));
81- $ this ->effectiveRequestEndpoint = curl_getinfo ($ curl , CURLINFO_EFFECTIVE_URL );
8280 $ this ->redirectCount = curl_getinfo ($ curl , CURLINFO_REDIRECT_COUNT );
8381 $ this ->redirectTime = curl_getinfo ($ curl , CURLINFO_REDIRECT_TIME );
8482 $ this ->redirectEndpoint = curl_getinfo ($ curl , CURLINFO_REDIRECT_URL );
8583 $ this ->setStatistics ($ curl );
86- $ this ->setEffectiveRequestHeaders ($ curl );
8784 $ this ->setResponseData ($ responseBody );
8885 return $ this ;
8986 }
@@ -94,40 +91,8 @@ public function populateFromCurlResult($curl, $responseBody)
9491 */
9592 private function setStatistics ($ curl )
9693 {
97- $ statisticsBuilder = new StatisticsBuilder ();
98- $ this ->statistics = $ statisticsBuilder
99- ->setTotalTime (curl_getinfo ($ curl , CURLINFO_TOTAL_TIME ))
100- ->setHostLookupTime (curl_getinfo ($ curl , CURLINFO_NAMELOOKUP_TIME ))
101- ->setConnectionEstablishTime (curl_getinfo ($ curl , CURLINFO_CONNECT_TIME ))
102- ->setPreTransferTime (curl_getinfo ($ curl , CURLINFO_PRETRANSFER_TIME ))
103- ->setStartTransferTime (curl_getinfo ($ curl , CURLINFO_STARTTRANSFER_TIME ))
104- ->buildStatistics ();
105- return $ this ;
106- }
107-
108- /**
109- * @param resource $curl
110- * @return $this
111- */
112- private function setEffectiveRequestHeaders ($ curl )
113- {
114- // Build effective request headers
115- $ requestHeaders = preg_split (
116- '/\r\n/ ' ,
117- curl_getinfo ($ curl , CURLINFO_HEADER_OUT ),
118- null ,
119- PREG_SPLIT_NO_EMPTY
120- );
121- foreach ($ requestHeaders as $ requestHeader ) {
122- if (strpos ($ requestHeader , ': ' ) !== false ) {
123- $ headerName = mb_substr ($ requestHeader , 0 , strpos ($ requestHeader , ': ' ));
124- $ headerValue = mb_substr ($ requestHeader , strpos ($ requestHeader , ': ' ) + 1 );
125- $ headerValues = explode (', ' , $ headerValue );
126- $ this ->effectiveRequestHeaders [] = new RequestHeader ($ headerName , $ headerValues );
127- } else {
128- $ this ->effectiveRequestStatus = $ requestHeader ;
129- }
130- }
94+ $ this ->statistics = new Statistics ();
95+ $ this ->statistics ->populateFromCurlResult ($ curl );
13196 return $ this ;
13297 }
13398
0 commit comments