Аватар с внешнего сайта через API?

У меня есть сайт на Rails с сообществом. Я использую SSO, чтобы участники сообщества не должны были отдельно входить в Discourse, и использую API Discourse для обмена информацией между двумя серверами. Теперь я хочу унифицировать аватары пользователей, то есть использовать один и тот же аватар на форуме и на моём основном сайте. Как это сделать?

Я попробовал то, что обычно делаю для API-запросов: POST-запрос через Faraday на https://discuss.diem25.org/uploads.json с API-ключом и заголовком API-Username и следующим телом запроса:

{ 
          "type": "avatar", 
          "user_id": user_id,
          "file": "https://internal.diem25.org/.../user.jpg",
          "synchronous": "true"
        }

Этот запрос приводит к ошибке Internal Server Error. Я также не против повторно загрузить файл в качестве последнего варианта, но на первый взгляд это кажется сложным или даже невозможным с помощью Faraday.

Почему бы не попробовать настройку сайта sso overrides avatar и не передать URL аватара через систему SSO? Возможно, будет лучше обрабатывать это через SSO, а не загружать вручную через API.

Спасибо, это хорошая идея, но это просто переносит проблему интеграции в другую сторону, потому что сейчас у некоторых пользователей есть аватар в Discourse, но нет аватара на моём сайте. Так что, похоже, у меня есть два варианта: либо загрузить все аватары из Discourse на мой сайт и затем включить настройку «SSO перезаписывает аватар», либо загрузить все мои аватары в Discourse. :unamused:

Думаю, это потому, что в Faraday нельзя просто указать URL для файла — его нужно сначала прочитать как файл или что-то в этом роде.

Однако вы можете использовать gem discourse_api для обновления аватара, указав URL:

client.update_avatar(
  username: "norbert6",
  url: "http://vignette1.wikia.nocookie.net/despicableme/images/1/15/Jerryindespicableme.png"
)