Google Drive SDK - проверяйте etag при загрузке/синхронизации

Я пытаюсь реализовать синхронизацию файлов между локальной папкой и удаленным Google Диском. Классическая проблема — это когда какие-то модификации делаются с обеих сторон одновременно. Поэтому, когда я обновляю файл локально, я должен убедиться, что файл не был изменен на Google Диске, прежде чем выполнять загрузку, чтобы я мог управлять конфликтами. Что касается Google Drive SDK, у меня есть несколько вариантов обнаружения:

  • Загрузите метаданные файла непосредственно перед загрузкой, чтобы убедиться, что etag не изменился с момента последней загрузки.
  • Периодически потребляйте ленту изменений и проверяйте теги файлов декоррелированным образом.

Google, похоже, отдает предпочтение второму варианту. Но с обоими из них нет способа быть уверенным, что файл не был изменен во время загрузки. По сути, мне нужна операция атомарной загрузки, которая:

  1. Проверяет, что etag совпадает с последним обновлением. Если нет выдает ошибку.
  2. Если все в порядке, обновляет загруженный файл

Есть какой-либо способ сделать это?

Спасибо


person benweet    schedule 30.03.2013    source источник


Ответы (1)


Если вы добавите и If-Match в свои заголовки HTTP в своих запросах PUT, он должен отклонять устаревшие версии и отвечать с ошибкой.

If-Match: "S0wCTlpIIip7ImA0X0QI"
person Burcu Dogan    schedule 09.04.2013
comment
Очень хорошо! Документация, кажется, не упоминает об этом. Большое спасибо. - person benweet; 12.04.2013