1212 */
1313namespace Tmdb \Factory ;
1414
15- use Tmdb \Common \ObjectHydrator ;
15+ use Tmdb \Event \HydrationEvent ;
16+ use Tmdb \Event \TmdbEvents ;
17+ use Tmdb \HttpClient \HttpClient ;
1618use Tmdb \Model \AbstractModel ;
1719use Tmdb \Model \Collection \ResultCollection ;
1820use Tmdb \Model \Common \AccountStates ;
2628 */
2729abstract class AbstractFactory
2830{
31+ /**
32+ * @var HttpClient
33+ */
34+ protected $ httpClient ;
35+
36+ /**
37+ * Constructor
38+ *
39+ * @param HttpClient $httpClient
40+ */
41+ public function __construct (HttpClient $ httpClient )
42+ {
43+ $ this ->httpClient = $ httpClient ;
44+ }
45+
2946 /**
3047 * Convert an array to an hydrated object
3148 *
@@ -42,6 +59,16 @@ abstract public function create(array $data = []);
4259 */
4360 abstract public function createCollection (array $ data = []);
4461
62+ /**
63+ * Get the http client
64+ *
65+ * @return HttpClient
66+ */
67+ protected function getHttpClient ()
68+ {
69+ return $ this ->httpClient ;
70+ }
71+
4572 /**
4673 * Create a generic collection of data and map it on the class by it's static parameter $properties
4774 *
@@ -179,14 +206,20 @@ public function createResult(array $data = [])
179206 /**
180207 * Hydrate the object with data
181208 *
182- * @param AbstractModel $object
209+ * @param AbstractModel $subject
183210 * @param array $data
184211 * @return AbstractModel
185212 */
186- protected function hydrate (AbstractModel $ object , $ data = [])
213+ protected function hydrate (AbstractModel $ subject , $ data = [])
187214 {
188- $ objectHydrator = new ObjectHydrator ();
215+ $ httpClient = $ this ->getHttpClient ();
216+
217+ $ event = new HydrationEvent ($ subject , $ data );
218+ $ event ->setLastRequest ($ httpClient ->getLastRequest ());
219+ $ event ->setLastResponse ($ httpClient ->getLastResponse ());
220+
221+ $ this ->getHttpClient ()->getEventDispatcher ()->dispatch (TmdbEvents::HYDRATE , $ event );
189222
190- return $ objectHydrator -> hydrate ( $ object , $ data );
223+ return $ event -> getSubject ( );
191224 }
192225}
0 commit comments