Esempio n. 1
0
  /**
   * Upload new crypto/keys.
   *
   * @param keys new keys.
   * @param keyUploadDelegate a delegate.
   */
  public void uploadKeys(final CollectionKeys keys, final KeyUploadDelegate keyUploadDelegate) {
    SyncStorageRecordRequest request;
    try {
      request = new SyncStorageRecordRequest(this.config.keysURI());
    } catch (URISyntaxException e) {
      keyUploadDelegate.onKeyUploadFailed(e);
      return;
    }

    request.delegate =
        new SyncStorageRequestDelegate() {

          @Override
          public String ifUnmodifiedSince() {
            return null;
          }

          @Override
          public void handleRequestSuccess(SyncStorageResponse response) {
            Logger.debug(LOG_TAG, "Keys uploaded.");
            BaseResource.consumeEntity(response); // We don't need the response at all.
            keyUploadDelegate.onKeysUploaded();
          }

          @Override
          public void handleRequestFailure(SyncStorageResponse response) {
            Logger.debug(LOG_TAG, "Failed to upload keys.");
            GlobalSession.this.interpretHTTPFailure(response.httpResponse());
            BaseResource.consumeEntity(
                response); // The exception thrown should not need the body of the response.
            keyUploadDelegate.onKeyUploadFailed(new HTTPFailureException(response));
          }

          @Override
          public void handleRequestError(Exception ex) {
            Logger.warn(LOG_TAG, "Got exception trying to upload keys", ex);
            keyUploadDelegate.onKeyUploadFailed(ex);
          }

          @Override
          public AuthHeaderProvider getAuthHeaderProvider() {
            return GlobalSession.this.getAuthHeaderProvider();
          }
        };

    // Convert keys to an encrypted crypto record.
    CryptoRecord keysRecord;
    try {
      keysRecord = keys.asCryptoRecord();
      keysRecord.setKeyBundle(config.syncKeyBundle);
      keysRecord.encrypt();
    } catch (Exception e) {
      Logger.warn(LOG_TAG, "Got exception trying creating crypto record from keys", e);
      keyUploadDelegate.onKeyUploadFailed(e);
      return;
    }

    request.put(keysRecord);
  }
Esempio n. 2
0
 /**
  * Return a copy ready for upload.
  *
  * @return an unencrypted <code>CryptoRecord</code>.
  */
 public CryptoRecord asCryptoRecord() {
   ExtendedJSONObject payload = this.asRecordContents();
   CryptoRecord record = new CryptoRecord(payload);
   record.collection = "meta";
   record.guid = "global";
   record.deleted = false;
   return record;
 }
Esempio n. 3
0
 private void handleDownloadSuccess(SyncStorageResponse response) {
   if (response.wasSuccessful()) {
     try {
       CryptoRecord record = CryptoRecord.fromJSONRecord(response.jsonObjectBody());
       this.setFromRecord(record);
       this.callback.handleSuccess(this, response);
     } catch (Exception e) {
       this.callback.handleError(e);
     }
     return;
   }
   this.callback.handleFailure(response);
 }