Боролся с этим сам.Библиотека oauth2 поддерживается Фарадеем для взаимодействия по HTTP.с небольшой настройкой он поддерживает загруженные файлы из коробки.Первым шагом является добавление соответствующего промежуточного программного обеспечения Фарадея при построении соединения.Пример из моего кода:
OAuth2::Client.new client_id, secret, site: site do |stack|
stack.request :multipart
stack.request :url_encoded
stack.adapter Faraday.default_adapter
end
Это добавляет поддержку многочастного кодирования к соединению Фарадея.Далее при выполнении запроса к вашему объекту токена доступа вы хотите использовать объект Faraday :: UploadIO.Итак:
upload = Faraday::UploadIO.new io, mime_type, filename
access_token.post('some/url', params: {url: 'params'}, body: {file: upload})
В приведенном выше коде:
io - объект ввода-вывода для файла, который вы хотите загрузить.Может быть объектом File или даже StringIO.
mime_type - тип mime загружаемого файла.Вы можете либо попытаться обнаружить эту серверную часть, либо, если пользователь загрузил вам файл, вы сможете извлечь тип mime из их запроса.
имя файла - Что это такое?вызов файла, который вы загружаете.Это также может быть определено по вашему собственному выбору, или вы можете просто использовать то, что пользователь, загружающий файл, называет его.
some / url - замените его URL-адресом, который вы хотите опубликовать
{url: 'params'} - замените его на любые URL-параметры, которые вы хотите предоставить
{file: upload} - замените его наваши данные из нескольких частей формы.Очевидно, одна (или более) из пар ключ / значение должны иметь экземпляр вашего файла загрузки.