/**
  * Get the messages list.
  *
  * @param Request $request HTTP Request object
  *
  * @internal param int $page The pagenumber assigned by MAL.
  *
  * @return View
  */
 public function getAction(Request $request)
 {
     // http://myanimelist.net/mymessages.php?go=&show=#{page}
     $downloader = $this->get('atarashii_api.communicator');
     $page = (int) $request->query->get('page');
     if ($page <= 0) {
         $page = 1;
     }
     //get the credentials we received
     $username = $this->getRequest()->server->get('PHP_AUTH_USER');
     $password = $this->getRequest()->server->get('PHP_AUTH_PW');
     try {
         if (!$downloader->cookieLogin($username, $password)) {
             $view = $this->view(array('error' => 'unauthorized'), 401);
             $view->setHeader('WWW-Authenticate', 'Basic realm="myanimelist.net"');
             return $view;
         }
         Date::setTimeZone($downloader->fetch('/editprofile.php'));
         $messagesdetails = $downloader->fetch('/mymessages.php?go=&show=' . ($page * 20 - 20));
     } catch (Exception\CurlException $e) {
         return $this->view(array('error' => 'network-error'), 500);
     }
     if (strpos($messagesdetails, 'You have 0 messages') !== false) {
         return $this->view(array('error' => 'No messages found.'), 404);
     } else {
         $messages = MessagesParser::parse($messagesdetails);
         $response = new Response();
         $view = $this->view($messages);
         $view->setResponse($response);
         $view->setStatusCode(200);
         return $view;
     }
 }
 public function testParseMessage()
 {
     $messageContent = file_get_contents(__DIR__ . '/../InputSamples/user-message.html');
     $message = MessagesParser::parseMessage($messageContent, 1234);
     $this->assertInstanceOf('Atarashii\\APIBundle\\Model\\Messages', $message);
     //Do some basic type checking for things that should exist (not null)
     $this->assertInternalType('int', $message->getId());
     $this->assertInternalType('string', $message->getUsername());
     $this->assertInternalType('string', $message->getSubject());
     $this->assertInternalType('string', $message->getMessage());
     $this->assertNull($message->getPreview());
 }