Кто-нибудь смог получить Confluence.pm для добавления вложений? - PullRequest
5 голосов
/ 13 июня 2009

Если да, можете ли вы предоставить код. Я могу делать почти все остальное, начиная с создания новых страниц, изменения атрибутов страницы и т. Д. Но я не могу добавить вложения. Я прочитал официальный сайт Perl XML-RPC и обсуждения , но все фрагменты кода, которые они там показывают, мне не подходят. Вот моя взломанная попытка:

# The following command sort of worked:
# ~/bin/wikitool.pl -action attach_file -url $MYURL
# IT attached something but the file was empty
sub attach_file {
    my $confluence = XMLRPC::Lite->proxy($opts{server}."rpc/xmlrpc");
    my $token = $confluence->call("confluence1.login", $opts{login}, $opts{password})->result();

    # Fetch page
    my $page = FetchPage($opts{title});
    if (not $page) {
      dbg("$opts{title} page is missing.","FATAL");
    }

    my $pageId = SOAP::Data->type( string => $$page{id} );

    my $filename = "$ENV{HOME}/tmp/tmp0.gif";
    my $metadata = {
        fileName => $filename,
        contentType => "image/gif",
        comment => "Some random GIF",
    };
    if (not open FILE, "< $filename") {
        dbg("Could not open file $filename: $!\n","FATAL");
    }
    binmode FILE;
    my $data;
    $data .= $_ while (<FILE>);
    my $call = $confluence->addAttachment($pageId, $metadata, $data);

    my $fault = $call->fault();
    if (defined $fault) {
        dbg("could not attach $filename" . $call->faultstring(), "FATAL");
    }
    else {
      print "attached $filename\n";
    }
}

Ответы [ 3 ]

5 голосов
/ 26 августа 2010

Вы прошли 95% пути туда. Секретный соус для меня:

$data .= $_ while (<FILE>);
my $escaped_data = new RPC::XML::base64($data);
my $call = $confluence->addAttachment($pageId, $metadata, $escaped_data);

Я уверен, что уже слишком поздно, чтобы быть полезным, но, может быть, кто-то еще столкнется с ним когда-нибудь.

0 голосов
/ 20 мая 2016

xml-rpc устарел теперь в слиянии. В настоящее время многие функции не работают в интерфейсе xml-rpc. больше работает под мылом.

0 голосов
/ 20 января 2011

Попробуйте взглянуть на то, как Chery Chase использует SOAP вместо RPC для вложений.

См. http://confluence.atlassian.com/display/DISC/Perl+XML-RPC+client в обсуждении.

...