use \OCP\AppFramework\Controller;
use \OCP\AppFramework\Http\JSONResponse;
+use \OCA\Grauphel\Lib\Client;
use \OCA\Grauphel\Lib\NoteStorage;
use \OCA\Grauphel\Lib\OAuth;
use \OCA\Grauphel\Lib\OAuthException;
'api-version' => '1.0',
);
+ $cl = new Client();
+ $client = $cl->getClient();
+ if ($client !== false) {
+ $data['oauth_authorize_url'] .= '?client=' . urlencode($client);
+ }
+
if ($authenticated) {
$data['user-ref'] = array(
'api-ref' => $urlGen->getAbsoluteURL(
'grauphel.api.user', array('username' => $username)
)
),
- 'href' => null,//FIXME
+ 'href' => null,
);
}
'grauphel.api.notes', array('username' => $username)
)
),
- 'href' => null,
+ 'href' => $this->deps->urlGen->getAbsoluteURL(
+ $this->deps->urlGen->linkToRoute('grauphel.gui.index')
+ ),
),
'latest-sync-revision' => $syncdata->latestSyncRevision,
'current-sync-guid' => $syncdata->currentSyncGuid,
)
);
$syncdata = $this->notes->loadSyncData();
-
+
$res = $this->handleNoteSave($username, $syncdata);
if ($res instanceof \OCP\AppFramework\Http\Response) {
return $res;
return;
}
- //note that we have more data in $arPut than just our JSON
- // request object merges it with other data
+ //Note that we have more data in $arPut than just our JSON.
+ // The request object merges it with other data.
$arPut = $this->request->put;
//structural validation
}
//update
- ++$syncdata->latestSyncRevision;
- foreach ($arPut['note-changes'] as $noteUpdate) {
- //owncloud converts object to array, so we reverse
- $noteUpdate = (object) $noteUpdate;
-
- $note = $this->notes->load($noteUpdate->guid);
- if (isset($noteUpdate->command) && $noteUpdate->command == 'delete') {
- $this->notes->delete($noteUpdate->guid);
- } else {
- $this->notes->update(
- $note, $noteUpdate, $syncdata->latestSyncRevision
- );
- $this->notes->save($note);
+ $db = \OC::$server->getDatabaseConnection();
+ $db->beginTransaction();
+ try {
+ ++$syncdata->latestSyncRevision;
+ foreach ($arPut['note-changes'] as $noteUpdate) {
+ //owncloud converts object to array, so we reverse
+ $noteUpdate = (object) $noteUpdate;
+
+ $note = $this->notes->load($noteUpdate->guid);
+ if (isset($noteUpdate->command) && $noteUpdate->command == 'delete') {
+ $this->notes->delete($noteUpdate->guid);
+ } else {
+ $this->notes->update(
+ $note, $noteUpdate, $syncdata->latestSyncRevision
+ );
+ $this->notes->save($note);
+ }
}
- }
- $this->notes->saveSyncData($syncdata);
+ $this->notes->saveSyncData($syncdata);
+ $db->commit();
+ } catch (\DatabaseException $e) {
+ $db->rollBack();
+ throw $e;
+ }
}
/**