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

Я использую ruby ​​и typhoeus-gem для загрузки контента на страницы XWiki через его RESTful API. Это работает отлично. Но когда дело доходит до загрузки тегов, я борюсь с пробелами. Добавление разделенных запятыми тегов через графический интерфейс, например «с пробелами, другой тег», приведет к появлению двух тегов: «с пробелами» и «другого тега». Это то, что я хочу, но это не работает с 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-строки. Может быть, у вас есть подсказка для меня.


person Alexander    schedule 12.10.2017    source источник


Ответы (1)


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

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

Это приведет к ожидаемому результату:

  • наличие пробелов
  • другой тег

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

person Alexander    schedule 12.10.2017