Проблема с обновлением изображения контакта Google в Ruby - PullRequest
2 голосов
/ 27 мая 2011

Я пытаюсь написать приложение ruby ​​для обновления Google Contact Photos, но не могу загрузить загрузку.Я не уверен, что я неправильно понял API Google, но это то, что я имею до сих пор:

Net::HTTP.start(URI.parse(image_element.attributes['href']).host) do |http|
  response, body = http.put(URI.parse(image_element.attributes['href']).path, data, {'If-Match' => '*', 'content-type'=>'image/*'})
end

API данных Google говорит:

У каждого контакта есть элемент ссылки на фотографию,Он имеет вид:

href = 'https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de' gd: etag =' "KTlcZWs1bCp7ImBBPV43VUV4LXEZCXERZAc." '>

Этот элемент отображается независимо от того, есть у контакта связанная фотография или нет.Если у контакта есть фотография, то элемент содержит атрибут gd: etag, указывающий ETag для фотографии.Если у контакта нет фотографии, то нет атрибута gd: etag, а атрибут href предоставляет URL-адрес, который используется для добавления фотографии в контакт.

Чтобы добавить или обновить фотографию, используя элемент, показанный выше,отправьте новую фотографию с помощью команды PUT на URL: https://www.google.com/m8/feeds/photos/media/liz%40gmail.com/c9012de. Не забудьте установить правильный заголовок "image / *" Content-Type.

Чтобы удалить фотографию, отправьте HTTP-запрос DELETE натот же URL.

При обновлении или удалении фотографии отправьте ETag фотографии в заголовок If-Match HTTP-запроса.В качестве альтернативы, используйте If-Match: * для обновления или удаления независимо от того, установлена ​​ли у вас последняя версия фотографии.

Может кто-нибудь увидеть, в чем проблема?

ОБНОВЛЕНИЕ ИОТВЕТ: Мне удалось заставить это работать с некоторой помощью от StackOverflow и помощника.По сути, неправильно было задано неправильное значение типа MIME (см. Ниже), но я также не прошел надлежащую аутентификацию в Google для запроса PUT.То, что я пытался написать, это сценарий, который обновляет любые недостающие фотографии контактов Google с изображениями из Gravatar (где это возможно).Как только я заработал, все заработало: удалось найти около 2-3 контактов.Я написал сообщение в блоге о сценарии на случай, если кто-нибудь захочет его запустить: http://ashleyangell.com/2011/06/ruby-script-to-import-google-contact-photos-from-gravatar/

1 Ответ

3 голосов
/ 08 июня 2011

Я никогда не использовал API данных Google самостоятельно, но попробуйте установить заголовок Content-Type, например, image/jpeg, а не просто image/*.

...