Загрузка разнесенных тегов через XWiki-API

Я использую ruby ​​и typhoeus-gem для загрузки контента на страницы XWiki через его RESTful API. Это работает отлично. Но когда дело доходит до загрузки тегов, я борюсь с пробелами. Добавление разделенных запятыми тегов через GUI, таких как "наличие пробелов, другой тег", приведет к двум тегам: "наличие пробелов" и "другой тег". Это то, что я хочу, но это не работает с API. Приведенные выше примеры приведут к пяти тегам, разделенным пробелами.

  • имеющий
  • пространство
  • персонажи
  • другой
  • тег

Документация API описывает, как добавить вкладку на страницу. Это говорит о том, что в случае "application/x-www-form-urlencoded" используется имя поля "tag". Если я использую этот тип поля, можно загрузить только один тег. Повторение этого перезапишет предыдущий тег (ы). Поэтому я попробовал "теги" в качестве типа поля, и он работает для загрузки нескольких тегов. Но все равно проблема с расстоянием выглядит так, как описано выше.

Вот код рубина, который я использую:

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-строки без успеха. Может быть, у вас есть подсказка для меня.

1 ответ

Когда я писал свой вопрос, я обнаружил, что замена пробелов символом новой строки (\n) не даст XWiki разделять теги по их пробелам. Итак, строка должна выглядеть так:

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

Это приведет к тому, как задумано в:

  • с пробелами
  • другой тег

Поправьте меня, но я не думаю, что это лучшая практика. Добро пожаловать, если у вас есть другое решение.

Другие вопросы по тегам