1

REST::Client モジュールを介して Perl から最新の REST API を使用して、既存の Confluence ページに画像を添付するにはどうすればよいですか?

これは、perl の質問 (画像を間違って投稿している可能性があります)、または Confluence の質問 (curl によって静かに追加されている必要なヘッダーなど、必要な詳細が API ドキュメントにない可能性があります)、またはその両方である可能性があります。

REST::Client モジュールを使用して接続オブジェクト $client を確立しました。$client->GET を既知の Confluence ページ ID に対して実行することで、$client が有効な接続であることを確認しました。これにより、ページの詳細が正しく返されます。

以下を使用して画像をアップロードしようとしました:

$headers = {Accept => 'application/json',
        Authorization => 'Basic ' . encode_base64($user . ':' .
        $password),
        X_Atlassian_Token => 'no-check',
        Content_Type => 'form-data',
        Content => 
        [ file => ["file1.jpg"], ]};

$client->POST('rest/api/content/44073843/child/attachment', $headers);

...そして、画像が添付リストに表示されません。

ブラウザに画像をアップロードしているときにパケットを盗聴しましたが、非推奨のプロトタイプ API が使用されていることがわかりました。Atlassian の投稿ストリームがどのように見えるかを正確に確認し、それを複製するという点で、Atlassian の肩に立つことができればと思っていましたが、非推奨になっている API は使用したくありません。

Confluence API を呼び出してhttps://developer.atlassian.com/confdev/confluence-rest-api/confluence-rest-api-examplesで提供されるファイルを添付する curl の例、ホスト、ファイル名、およびページの場合IDに代入して、添付して投稿します。

以前はコンテンツ項目の配列でコメントを指定していましたが、ドキュメントではオプションであると述べられていたため、デバッグ中にそれを削除して簡単にしました。

私がはっきりしていないことの 1 つは、ファイルの内容をポスト ストリームに取り込むことです。curl コマンドでは、@ がそれを実現します。REST::Client では、それを実現するために、私が行った以上のことをしなければならないかどうかはわかりません。

私たちのサーバーは https しか許可していないため、送信トラフィックをパケット スニッフィングできません。また、SSL 情報を記録するために REST::Client モジュールまたはその基礎となるモジュールの 1 つを設定する方法 (またはそれが可能かどうか) もわかりません。 Wireshark がそれを取得して結果の TLS トラフィックをデコードできるように、Chrome または Firefox の環境変数を使用してログ ファイルに追加します。サーバーログにもアクセスできません。そのため、実際に送信しているリクエストがどのように見えるかはわかりません (送信した場合、おそらく「OK、ここが間違っているように見えます」または「しかし、正しく見える?!」と言うことができます)。したがって、残念ながら、盲目的にデバッグする方法について途方に暮れています。

REST::Client を使用したマルチパート フォームの投稿に関する同様の質問が、より一般的に言えば、昨年 4 月に他の人から尋ねられましたが、回答はありませんでした。私はより具体的であるため、誰かが私が間違っている可能性があることを教えてくれることを願っています.

どんな助けでも大歓迎です。

4

1 に答える 1