/** * @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)); } } }