aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2016-05-28 17:46:24 +0200
committerMario Vavti <mario@mariovavti.com>2016-05-28 17:46:24 +0200
commit66effbfe0827fc61fff6d248797a894213ad20d6 (patch)
tree0fbb5ca644e1140e5b3b44b1adc874043790c388 /vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
parentac4688eac087854bf8cb0c893d7a79052ad63a20 (diff)
downloadvolse-hubzilla-66effbfe0827fc61fff6d248797a894213ad20d6.tar.gz
volse-hubzilla-66effbfe0827fc61fff6d248797a894213ad20d6.tar.bz2
volse-hubzilla-66effbfe0827fc61fff6d248797a894213ad20d6.zip
upgrade to sabre32
Diffstat (limited to 'vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php')
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php167
1 files changed, 134 insertions, 33 deletions
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
index 3f96d3c5d..840b898e8 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
@@ -13,24 +13,24 @@ class Mock extends AbstractBackend {
$this->cards = $cards;
if (is_null($this->addressBooks)) {
- $this->addressBooks = array(
- array(
- 'id' => 'foo',
- 'uri' => 'book1',
- 'principaluri' => 'principals/user1',
+ $this->addressBooks = [
+ [
+ 'id' => 'foo',
+ 'uri' => 'book1',
+ 'principaluri' => 'principals/user1',
'{DAV:}displayname' => 'd-name',
- ),
- );
+ ],
+ ];
- $card2 = fopen('php://memory','r+');
- fwrite($card2,"BEGIN:VCARD\nVERSION:3.0\nUID:45678\nEND:VCARD");
+ $card2 = fopen('php://memory', 'r+');
+ fwrite($card2, "BEGIN:VCARD\nVERSION:3.0\nUID:45678\nEND:VCARD");
rewind($card2);
- $this->cards = array(
- 'foo' => array(
+ $this->cards = [
+ 'foo' => [
'card1' => "BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD",
'card2' => $card2,
- ),
- );
+ ],
+ ];
}
}
@@ -38,8 +38,8 @@ class Mock extends AbstractBackend {
function getAddressBooksForUser($principalUri) {
- $books = array();
- foreach($this->addressBooks as $book) {
+ $books = [];
+ foreach ($this->addressBooks as $book) {
if ($book['principaluri'] === $principalUri) {
$books[] = $book;
}
@@ -64,14 +64,14 @@ class Mock extends AbstractBackend {
* @param \Sabre\DAV\PropPatch $propPatch
* @return void
*/
- public function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) {
+ function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) {
- foreach($this->addressBooks as &$book) {
+ foreach ($this->addressBooks as &$book) {
if ($book['id'] !== $addressBookId)
continue;
$propPatch->handleRemaining(function($mutations) use (&$book) {
- foreach($mutations as $key=>$value) {
+ foreach ($mutations as $key => $value) {
$book[$key] = $value;
}
return true;
@@ -83,17 +83,17 @@ class Mock extends AbstractBackend {
function createAddressBook($principalUri, $url, array $properties) {
- $this->addressBooks[] = array_merge($properties, array(
- 'id' => $url,
- 'uri' => $url,
+ $this->addressBooks[] = array_merge($properties, [
+ 'id' => $url,
+ 'uri' => $url,
'principaluri' => $principalUri,
- ));
+ ]);
}
function deleteAddressBook($addressBookId) {
- foreach($this->addressBooks as $key=>$value) {
+ foreach ($this->addressBooks as $key => $value) {
if ($value['id'] === $addressBookId)
unset($this->addressBooks[$key]);
}
@@ -101,41 +101,142 @@ class Mock extends AbstractBackend {
}
+ /**
+ * Returns all cards for a specific addressbook id.
+ *
+ * This method should return the following properties for each card:
+ * * carddata - raw vcard data
+ * * uri - Some unique url
+ * * lastmodified - A unix timestamp
+ *
+ * It's recommended to also return the following properties:
+ * * etag - A unique etag. This must change every time the card changes.
+ * * size - The size of the card in bytes.
+ *
+ * If these last two properties are provided, less time will be spent
+ * calculating them. If they are specified, you can also ommit carddata.
+ * This may speed up certain requests, especially with large cards.
+ *
+ * @param mixed $addressbookId
+ * @return array
+ */
function getCards($addressBookId) {
- $cards = array();
- foreach($this->cards[$addressBookId] as $uri=>$data) {
- $cards[] = array(
- 'uri' => $uri,
- 'carddata' => $data,
- );
+ $cards = [];
+ foreach ($this->cards[$addressBookId] as $uri => $data) {
+ if (is_resource($data)) {
+ $cards[] = [
+ 'uri' => $uri,
+ 'carddata' => $data,
+ ];
+ } else {
+ $cards[] = [
+ 'uri' => $uri,
+ 'carddata' => $data,
+ 'etag' => '"' . md5($data) . '"',
+ 'size' => strlen($data)
+ ];
+ }
}
return $cards;
}
+ /**
+ * Returns a specfic card.
+ *
+ * The same set of properties must be returned as with getCards. The only
+ * exception is that 'carddata' is absolutely required.
+ *
+ * If the card does not exist, you must return false.
+ *
+ * @param mixed $addressBookId
+ * @param string $cardUri
+ * @return array
+ */
function getCard($addressBookId, $cardUri) {
if (!isset($this->cards[$addressBookId][$cardUri])) {
return false;
}
- return array(
- 'uri' => $cardUri,
- 'carddata' => $this->cards[$addressBookId][$cardUri],
- );
+ $data = $this->cards[$addressBookId][$cardUri];
+ return [
+ 'uri' => $cardUri,
+ 'carddata' => $data,
+ 'etag' => '"' . md5($data) . '"',
+ 'size' => strlen($data)
+ ];
}
+ /**
+ * Creates a new card.
+ *
+ * The addressbook id will be passed as the first argument. This is the
+ * same id as it is returned from the getAddressBooksForUser method.
+ *
+ * The cardUri is a base uri, and doesn't include the full path. The
+ * cardData argument is the vcard body, and is passed as a string.
+ *
+ * It is possible to return an ETag from this method. This ETag is for the
+ * newly created resource, and must be enclosed with double quotes (that
+ * is, the string itself must contain the double quotes).
+ *
+ * You should only return the ETag if you store the carddata as-is. If a
+ * subsequent GET request on the same card does not have the same body,
+ * byte-by-byte and you did return an ETag here, clients tend to get
+ * confused.
+ *
+ * If you don't return an ETag, you can just return null.
+ *
+ * @param mixed $addressBookId
+ * @param string $cardUri
+ * @param string $cardData
+ * @return string|null
+ */
function createCard($addressBookId, $cardUri, $cardData) {
+ if (is_resource($cardData)) {
+ $cardData = stream_get_contents($cardData);
+ }
$this->cards[$addressBookId][$cardUri] = $cardData;
+ return '"' . md5($cardData) . '"';
}
+ /**
+ * Updates a card.
+ *
+ * The addressbook id will be passed as the first argument. This is the
+ * same id as it is returned from the getAddressBooksForUser method.
+ *
+ * The cardUri is a base uri, and doesn't include the full path. The
+ * cardData argument is the vcard body, and is passed as a string.
+ *
+ * It is possible to return an ETag from this method. This ETag should
+ * match that of the updated resource, and must be enclosed with double
+ * quotes (that is: the string itself must contain the actual quotes).
+ *
+ * You should only return the ETag if you store the carddata as-is. If a
+ * subsequent GET request on the same card does not have the same body,
+ * byte-by-byte and you did return an ETag here, clients tend to get
+ * confused.
+ *
+ * If you don't return an ETag, you can just return null.
+ *
+ * @param mixed $addressBookId
+ * @param string $cardUri
+ * @param string $cardData
+ * @return string|null
+ */
function updateCard($addressBookId, $cardUri, $cardData) {
+ if (is_resource($cardData)) {
+ $cardData = stream_get_contents($cardData);
+ }
$this->cards[$addressBookId][$cardUri] = $cardData;
+ return '"' . md5($cardData) . '"';
}