/**
  * @param UnsubscribeList $unsubscribeList
  * @param string $email
  * @return string
  */
 public function unsubscribeAction(UnsubscribeList $unsubscribeList, $email)
 {
     /* @var $httpRequest Request */
     $httpRequest = $this->request->getHttpRequest();
     $arguments = $httpRequest->getUri()->getArguments();
     if (!isset($arguments['hmac'])) {
         return '<h1>Error: HMAC needed to unsubscribe a person.</h1>';
     }
     $actualHmac = $arguments['hmac'];
     $uriWithoutHmac = str_replace('&hmac=' . $actualHmac, '', (string) $httpRequest->getUri());
     $expectedHmac = hash_hmac('sha1', $uriWithoutHmac, $this->hmacUrlSecret);
     if ($expectedHmac !== $actualHmac) {
         return '<h1>Error: Could not unsubscribe this email address.</h1>(Hash incorrect)';
     }
     $unsubscribeList->unsubscribeEmail($email);
     $this->view->assign('email', $email);
 }
 /**
  * @param UnsubscribeList $unsubscribeList
  */
 public function downloadUnsubscribeListAction(UnsubscribeList $unsubscribeList)
 {
     $fp = fopen($unsubscribeList->getUnsubscribeFileName(), 'r');
     header('Content-Type: text/csv');
     header('Content-disposition: attachment;filename=UnsubscribeList.csv');
     header('Content-Length: ' . filesize($unsubscribeList->getUnsubscribeFileName()));
     fpassthru($fp);
     exit;
 }