/**
  * Defines the "HalLinks" view helper
  *
  * @return array
  */
 public function getViewHelperConfig()
 {
     return array('factories' => array('HalLinks' => function ($helpers) {
         $serverUrlHelper = $helpers->get('ServerUrl');
         $urlHelper = $helpers->get('Url');
         $services = $helpers->getServiceLocator();
         $config = $services->get('Config');
         $metadataMap = $services->get('PhlyRestfully\\MetadataMap');
         $hydrators = $metadataMap->getHydratorManager();
         $helper = new Plugin\HalLinks($hydrators);
         $helper->setMetadataMap($metadataMap);
         $helper->setServerUrlHelper($serverUrlHelper);
         $helper->setUrlHelper($urlHelper);
         if (isset($config['phlyrestfully']) && isset($config['phlyrestfully']['renderer'])) {
             $config = $config['phlyrestfully']['renderer'];
             if (isset($config['default_hydrator'])) {
                 $hydratorServiceName = $config['default_hydrator'];
                 if (!$hydrators->has($hydratorServiceName)) {
                     throw new Exception\DomainException(sprintf('Cannot locate default hydrator by name "%s" via the HydratorManager', $hydratorServiceName));
                 }
                 $hydrator = $hydrators->get($hydratorServiceName);
                 $helper->setDefaultHydrator($hydrator);
             }
             if (isset($config['hydrators']) && is_array($config['hydrators'])) {
                 $hydratorMap = $config['hydrators'];
                 foreach ($hydratorMap as $class => $hydratorServiceName) {
                     $helper->addHydrator($class, $hydratorServiceName);
                 }
             }
         }
         return $helper;
     }));
 }