Пример #1
0
 /**
  * @NoAdminRequired
  * @NoCSRFRequired
  */
 public function getAddressBook()
 {
     $params = $this->request->urlParams;
     $addressBook = $this->app->getAddressBook($params['backend'], $params['addressBookId']);
     $lastModified = $addressBook->lastModified();
     $etag = null;
     $response = new JSONResponse();
     if (!is_null($lastModified)) {
         //$response->addHeader('Cache-Control', 'private, must-revalidate');
         $response->setLastModified(\DateTime::createFromFormat('U', $lastModified) ?: null);
         $etag = md5($lastModified);
         $response->setETag($etag);
     }
     //$response->debug('comparing: "' . $etag . '" to ' . $this->request->getHeader('If-None-Match'));
     if (!is_null($etag) && $this->request->getHeader('If-None-Match') === '"' . $etag . '"') {
         return $response->setStatus(Http::STATUS_NOT_MODIFIED);
     } else {
         $contacts = array();
         foreach ($addressBook->getChildren() as $i => $contact) {
             $result = JSONSerializer::serializeContact($contact);
             if ($result !== null) {
                 $contacts[] = $result;
             }
         }
         return $response->setData(array('contacts' => $contacts));
     }
 }
 /**
  * @NoAdminRequired
  * @NoCSRFRequired
  */
 public function getContacts()
 {
     $params = $this->request->urlParams;
     $addressBook = $this->app->getAddressBook($params['backend'], $params['addressBookId']);
     $lastModified = $addressBook->lastModified();
     $etag = null;
     $response = new JSONResponse();
     if (!is_null($lastModified)) {
         //$response->addHeader('Cache-Control', 'private, must-revalidate');
         $response->setLastModified(\DateTime::createFromFormat('U', $lastModified) ?: null);
         $etag = md5($lastModified);
         $response->setETag($etag);
     }
     if (!is_null($etag) && $this->request->getHeader('If-None-Match') === '"' . $etag . '"') {
         return $response->setStatus(Http::STATUS_NOT_MODIFIED);
     } else {
         switch ($this->request->method) {
             case 'OPTIONS':
                 $options = array('GET', 'HEAD', 'OPTIONS');
                 if ($addressBook->hasPermission(\OCP\PERMISSION_DELETE) && $addressBook->getBackend()->hasAddressBookMethodFor(\OCP\PERMISSION_DELETE)) {
                     $options[] = 'DELETE';
                 }
                 if ($addressBook->hasPermission(\OCP\PERMISSION_UPDATE) && $addressBook->getBackend()->hasAddressBookMethodFor(\OCP\PERMISSION_UPDATE)) {
                     $options[] = 'POST';
                 }
                 $response->addHeader('Allow', implode(',', $options));
                 return $response;
             case 'HEAD':
                 return $response;
             case 'GET':
                 $contacts = array();
                 foreach ($addressBook->getChildren() as $i => $contact) {
                     $result = JSONSerializer::serializeContact($contact);
                     if ($result !== null) {
                         $contacts[] = $result;
                     }
                 }
                 return $response->setData(array('contacts' => $contacts));
         }
     }
 }