0

我有一系列相当大的条目数组,我想将它们发布到远程 Jira 实例的自定义字段中,所以我尝试在 Ruby 下使用 Curb(因为他们的 API 不允许这样做,并且在 SQL 下)这有点危险)我对其他建议持开放态度,但我一生无法弄清楚如何使用初始获取请求设置我的 cookie,然后为帖子提供参数和适当的标题

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

看起来它仍在使用我尝试使用 rest_client 的相同 URL,但这似乎与 cookie 行为不符,我确实需要为 atlassian 令牌设置上面的标头(因此它不请求用户名/密码)有没有人有任何想法 - 或建议可能有什么更好的机制来做到这一点 - 或者更好 - 我做错了什么;)干杯斯科特

4

1 回答 1

1

排序它移动了所有东西,并且必须显式设置 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)

现在工作,并遵循使用 Ruby Curb 传递 GET 参数的建议并使用 ActiveSupport to_query

于 2012-04-03T22:29:56.607 回答