Проблема Ruby Curb (Curl) с настройкой параметров и куки - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть ряд довольно больших массивов записей, которые я хочу опубликовать в настраиваемых полях удаленного экземпляра Jira, поэтому я пытаюсь сделать это с помощью Curb под Ruby (поскольку их API этого не позволяет,а под SQL это немного опасно. Я открыт для других предложений, но я не могу на всю жизнь понять, как я могу установить свои куки с моим первоначальным запросом get, затем предоставить параметры и соответствующие заголовки.для сообщения

c = Curl::Easy.new("http://jira/secure/Dashboard.jspa")
c.verbose = true
c.http_auth_types = :basic
c.username = 'user'
c.password = 'pass'
c.perform
c.headers="X-Atlassian-Token: no-check"
params=    {:fieldConfigId=>'13499',:selectedParentOptionId=>'',:addSelectValue=>'true',:os_username=>'user',:os_password=>'pass',:addValue=>'Barry the Badger',:add=>'Add'}
url="http://jira/secure/admin/EditCustomFieldOptions!add.jspa"
c.http_post(url,params)
c.perform

Похоже, что он все еще использует тот же URL-адрес, который я пытался использовать rest_client, но это похоже на неправильную работу с куки, и мне действительно нужно установить заголовок выше для токена atlassian(поэтому он не запрашивает имя пользователя / пароль) Кто-нибудь получил какие-либо идеи - или предложения о том, какие лучшие механизмы могут быть для этого - или еще лучше - что я сделал неправильно;) Приветствия Скотт

1 Ответ

1 голос
/ 04 апреля 2012

отсортировано Переместил все вокруг, и пришлось явно установить enable_cookies (что немного чокнуто)

c = Curl::Easy.new
#set first url
c.url = dashboard
#c.verbose = true
c.http_auth_types = :basic
c.username = username
c.password = password
c.enable_cookies = true
c.headers="X-Atlassian-Token: no-check"
#perform login to first link
c.perform
#puts c.cookies
#prepare url to access websudo
c.url=websudo
c.verbose = true
#set password for websudo form
params={:webSudoPassword=>password}.to_query
#set post
c.http_post(c.url,params)
#prepare all variables for creating new custom field option
params={:fieldConfigId=>cf_config:selectedParentOptionId=>'',:addSelectValue=>'true',:os_username=>username,:os_password=>password,:addValue=>cf_value,:add=>'Add'}.to_query
c.url=addoption
c.verbose = true
c.http_post(c.url,params)

Теперь работает с лечением, следуя совету Передавайте параметры GET с помощью Ruby Curb и используйте ActiveSupport to_query

...