2010-03-29 4 views
0

Я смотрел на это уже пару дней и не нашел нашел решение. Есть ли способ загрузить файл с помощью OAuth-Ruby?Ruby Oauth Загрузка файла/Многостраничный запрос POST

Я работаю с системой REST, которая защищает их ресурс с помощью oauth. Я создаю тестовый инструмент, используя ruby ​​и oauth-ruby, чтобы упростить загрузку тестовых данных в систему. Но я не могу обойти загрузку файлов в ресурсы.

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

Пример:

@access_token.post("http://.../imageresource", {:name=>"awesome cat"}, {'Content-Type' => 'multipart/form-data'}) 

работает, но дает мне:

<error> 
    <message>images/POST: Request has no file data</message> 
</error> 

Я не уверен, как добавить файл к сообщению.

Любые мысли по этому поводу?

Спасибо,

+0

@ the-elite-gentleman Oauth используется для авторизации, а не аутентификации. От oauth.net - «Открытый протокол, позволяющий безопасную авторизацию API в простом и стандартном методе с настольных и веб-приложений». Я уточнил вопрос, чтобы уточнить –

+0

правильный .... извините, я склонен путать аутентификацию и авторизацию. –

+0

Извините, я не человек Ruby, но вы добавляете данные файла в свой POST-запрос? Можете ли вы проверить запрос HTTP-сообщения, чтобы увидеть, были ли данные вашего файла имитированы и отправить сообщение Http? (или я не ясно?) –

ответ

0

Это либо невозможно сделать с oauth камень или чрезвычайно трудно. В любом случае, я не знаю, как это сделать, используя этот драгоценный камень.

Это можно сделать тривиально с моим драгоценным камнем signet, если у вас есть удобный способ создания действительного многопроцессного тела запроса. Построение такого органа запроса выходит за пределы области памяти OAuth, но с большинством HTTP-клиентов должно быть довольно просто. Затем камень httpadapter переводит запрос в форму, которую может подписать signet. Дайте мне знать, если ваш предпочтительный HTTP-клиент не поддерживается httpadapter, и я немедленно его разрешу.

См. Второй пример метода fetch_protected_resource, чтобы получить представление о том, как это можно сделать.

+0

Привет, Боб! Звучит здорово, и я буду изучать его. Я не работал с Ruby и Oauth какое-то время, так что это может занять некоторое время, прежде чем я начну смотреть на него, но из того, что я могу здесь прочитать, это звучит очень интересно. Обещай вернуться к тебе. (И если я не просто отправлю сообщение через несколько недель, это заставит меня двигаться) –