通过XWiki-API上传间隔标签

时间:2017-10-12 17:38:15

标签: ruby xwiki typhoeus

我正在使用ruby和typhoeus-gem通过其RESTful API将内容上传到XWiki页面。这非常有效。 但是当谈到上传标签时,我正在与空间角色斗争。 通过GUI添加逗号分隔的标签,如“有空格字符,另一个标签”,将产生两个标签:“有空格字符”和“另一个标签”。 这就是我想要的,但这不适用于API。上面的例子将导致五个标签除以空格。

  • 具有
  • space
  • 字符
  • 另一个
  • 标签

页面的API Documentation describes how to add a tab。它说,在“application / x-www-form-urlencoded”的情况下,使用字段名称“tag”。 如果我使用此字段类型,则只能上载一个标记。重复此操作将覆盖以前的标记。 所以我尝试使用“标签”作为字段类型,它适用于上传多个标签。但是间距问题仍然如上所述。

这是我正在使用的ruby代码:

url = mainpage_url + "/tags"
tags = "having space characters, another tag"   

# HTTP PUT request 
request = Typhoeus::Request.new(
    url,
    ssl_verifypeer: false,
    method: :put,
    userpwd: "#{username}:#{password}",
    headers: {'Content-Type'=> "application/x-www-form-urlencoded;charset=UTF-8"},
    body: {tags: tags}
)

# Handling HTTP errors
request.on_complete do |response|
    if response.success?
        #$log.info("Tags uploaded.")
    elsif response.timed_out?
        $log.error("Time out: Tags not uploaded.")
    elsif response.code == 0
        $log.fatal("Could not get http response while uploading Tags. #{response.return_message}")
    else
        $log.fatal("HTTP request failed while uploading Tags. #{response.code.to_s}")
    end
end

request.run
response = request.response
puts response.body

我已经尝试过:

  • 用“+”,“%20”和“\ s”替换标记空格。
  • 使用text / plain和application / xml作为媒体类型

我认为application / xml可以是解决方案。我尝试了不同的xml-strings而没有成功。也许你有一个线索给我。

1 个答案:

答案 0 :(得分:0)

当我写下我的问题时,我发现用换行符替换空格(\ n)会阻止XWiki按空格分割标签。所以字符串必须看起来像:

tags = "having\nspace\ncharacters,another\ntag"

这将按预期结果:

  • 有空格字符
  • 另一个标签

纠正我,但我认为这不是最好的做法。如果您有其他解决方案,我们非常欢迎您。