public function handleRequest(HttpRequest $request)
 {
     $response = new HttpResponse(200, "application/json");
     try {
         if ("POST" !== $request->getRequestMethod()) {
             // method not allowed
             $response->setStatusCode(405);
             $response->setHeader("Allow", "POST");
         } else {
             $response->setHeader('Content-Type', 'application/json');
             $response->setHeader('Cache-Control', 'no-store');
             $response->setHeader('Pragma', 'no-cache');
             $response->setContent(Json::enc($this->_handleToken($request->getPostParameters(), $request->getBasicAuthUser(), $request->getBasicAuthPass())));
         }
     } catch (TokenException $e) {
         if ($e->getResponseCode() === 401) {
             $response->setHeader("WWW-Authenticate", 'Basic realm="OAuth Server"');
         }
         $response->setStatusCode($e->getResponseCode());
         $response->setHeader('Cache-Control', 'no-store');
         $response->setHeader('Pragma', 'no-cache');
         $response->setContent(Json::enc(array("error" => $e->getMessage(), "error_description" => $e->getDescription())));
         if (NULL !== $this->_logger) {
             $this->_logger->logFatal($e->getLogMessage(TRUE) . PHP_EOL . $request . PHP_EOL . $response);
         }
     }
     return $response;
 }
 public function testAuthentication()
 {
     $h = new HttpRequest("http://www.example.org", "GET");
     $h->setBasicAuthUser("foo");
     $h->setBasicAuthPass("bar");
     $this->assertEquals("foo", $h->getBasicAuthUser());
     $this->assertEquals("bar", $h->getBasicAuthPass());
 }