2014-01-31 2 views
6

«Я ищу примеры экспорта пространства слияния» в формате pdf. Документы для этого ужасны. Похоже, что он все равно может поддерживаться в последнее стечение (5,0) с помощью XML-RPC API я не могу найти пример того, что назвать хотя.Как экспортировать «пространство» в PDF с помощью удаленного API

https://developer.atlassian.com/display/CONFDEV/Remote+API+Specification+for+PDF+Export#RemoteAPISpecificationforPDFExport-XML-RPCInformation

что связывает говорит вызовы hould с префиксом pdfexport но dosen't список любой из вызовов или привести пример.

+0

У вас есть лицензия для плагина интерфейса командной строки? тогда было бы очень простой способ экспортировать пространство слияния как pdf – CodeFanatic

+0

Нет. Я использую версию слияния по требованию, которая имеет ограниченную поддержку плагинов. – kevzettler

ответ

0

Я знаю, что это пример PHP, а не Ruby, но вы можете проверить пример XML-RPC i n Проект PHP VoycerAG на Github по адресу https://github.com/VoycerAG/confluence-xmlrpc-pdf-export/blob/master/src/Voycer/Confluence/Command/PdfExportCommand.php ... надеюсь, что это поможет.

В принципе, вам просто нужно позвонить методу login и ввести токен аутентификации, чтобы позвонить в метод exportSpace. Это, в свою очередь, дает вам URL-адрес, который аутентифицированный пользователь может загрузить PDF-файл.

+0

Вы попробовали это? Я не верю, что конечная точка xmlrpc больше поддерживается. Я пробовал разные клиенты ruby ​​xmlrpc и возвращал загадочные ошибки – kevzettler

0

Оказывается, мыло API является единственным доступным в настоящее время апи для экспорта пространства

Использование библиотеки Савон в Рубине здесь:

require 'savon' 
# create a client for the service 
# http://<confluence-install>/rpc/soap-axis/pdfexport?wsdll 
client = Savon.client(wsdl: 'https://example.atlassian.net/wiki/rpc/soap-axis/pdfexport?wsdl', read_timeout: 200) 

# call the 'findUser' operation 
response = client.call(:login, message: {username: "user", password: "pass"}) 

token = response.body[:login_response][:login_return] 

response = client.call(:export_space, message:{token: token, space_key: "SPACE KEY"}) 
0

Это работает с использованием библиотеки SOAP Боба Свифта ('org.swift .common: стечение-мыло: 5.4.1'). Я использую это в плагине градиента, так что вам нужно будет изменить несколько вещей.

void exportSpaceAsPdf(spaceKey, File outputFile) { 
    // Setup Pdf Export Service 
    PdfExportRpcServiceLocator serviceLocator = new PdfExportRpcServiceLocator() 
    serviceLocator.setpdfexportEndpointAddress("${url}/rpc/soap-axis/pdfexport") 
    serviceLocator.setMaintainSession(true) 
    def pdfService = serviceLocator.getpdfexport() 

    // Login 
    def token = pdfService.login(user, password) 

    // Perform Export 
    def pdfUrl = pdfService.exportSpace(token, spaceKey) 

    // Download Pdf 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet(pdfUrl) 
    httpget.addHeader(
      BasicScheme.authenticate(
        new UsernamePasswordCredentials(user,password),"UTF-8", false)) 
    HttpResponse response = client.execute(httpget) 
    HttpEntity entity = response.getEntity() 

    if (entity != null) { 
     InputStream inputStream = entity.getContent() 
     FileOutputStream fos = new FileOutputStream(outputFile) 
     int inByte 
     while ((inByte = inputStream.read()) != -1) 
      fos.write(inByte) 
     inputStream.close() 
     fos.close() 
    } else { 
     throw new GradleException("""Cannot Export Space to PDF: 
     Space: ${spaceKey} 
     Dest: ${outputFile.absolutePath} 
     URL: ${pdfUrl} 
     Status: ${response.getStatusLine()} 
     """) 
    } 

} 
Смежные вопросы