33namespace Http \Client \Common \Plugin ;
44
55use Http \Client \Common \Plugin ;
6+ use Http \Client \Exception \TransferException ;
67use Http \Message \Cookie ;
78use Http \Message \CookieJar ;
89use Psr \Http \Message \RequestInterface ;
@@ -87,6 +88,8 @@ public function handleRequest(RequestInterface $request, callable $next, callabl
8788 * @param $setCookie
8889 *
8990 * @return Cookie|null
91+ *
92+ * @throws TransferException
9093 */
9194 private function createCookie (RequestInterface $ request , $ setCookie )
9295 {
@@ -98,7 +101,8 @@ private function createCookie(RequestInterface $request, $setCookie)
98101
99102 list ($ name , $ cookieValue ) = $ this ->createValueKey (array_shift ($ parts ));
100103
101- $ expires = 0 ;
104+ $ maxAge = null ;
105+ $ expires = null ;
102106 $ domain = $ request ->getUri ()->getHost ();
103107 $ path = $ request ->getUri ()->getPath ();
104108 $ secure = false ;
@@ -110,11 +114,21 @@ private function createCookie(RequestInterface $request, $setCookie)
110114
111115 switch (strtolower ($ key )) {
112116 case 'expires ' :
113- $ expires = \DateTime::createFromFormat (DATE_COOKIE , $ value );
117+ $ expires = \DateTime::createFromFormat (\DateTime::COOKIE , $ value );
118+
119+ if (true !== ($ expires instanceof \DateTime)) {
120+ throw new TransferException (
121+ sprintf (
122+ 'Cookie header `%s` expires value `%s` could not be converted to date ' ,
123+ $ name ,
124+ $ value
125+ )
126+ );
127+ }
114128 break ;
115129
116130 case 'max-age ' :
117- $ expires = (new \ DateTime ())-> add ( new \ DateInterval ( ' PT ' .( int ) $ value. ' S ' )) ;
131+ $ maxAge = (int ) $ value ;
118132 break ;
119133
120134 case 'domain ' :
@@ -135,7 +149,7 @@ private function createCookie(RequestInterface $request, $setCookie)
135149 }
136150 }
137151
138- return new Cookie ($ name , $ cookieValue , $ expires , $ domain , $ path , $ secure , $ httpOnly );
152+ return new Cookie ($ name , $ cookieValue , $ maxAge , $ domain , $ path , $ secure , $ httpOnly, $ expires );
139153 }
140154
141155 /**
0 commit comments