LoginSignup
2
2

More than 5 years have passed since last update.

curlでHipChatへファイルアップロード(ファイル名を変えて・メッセージを添えて)

Posted at

使ったもの

  • bash (v4.3)
  • curl (v7.43)
  • HipChat

curlでファイルアップロード

まずは単純なファイルアップロードから

file-upload.sh
#!/bin/bash
FILEPATH=/foo/bar/baz
curl -X PUT \
  -F "file=@${FILEPATH}" \
  https://www.example.com/files/

-Fオプションを使って"@ファイル名"とするだけでファイルを読み込んでくれるから簡単ですね。

curlでHipChatへファイル共有

先ほどのスクリプトをベースに、HipChatへファイルを送るには
HipChat - API - Share file with room
このAPIを利用します。

hipchat-share-file.sh
#!/bin/bash
AUTHTOKEN=`cat .authtoken`
ROOMID=roomid
FILEPATH=/foo/bar/baz
curl -X POST \
  -H "Content-type: multipart/related" \
  -F "file=@${FILEPATH}" \
  https://www.hipchat.com/v2/room/${ROOMID}/share/file?auth_token=${AUTHTOKEN}

ヘッダにmultipart/relatedを足しておくことと
auth_tokenに、指定した部屋に対してsend_messageの権限を持ったものを使うことに気をつければ、そこまで難しくはないと思います。

ここからが本題

よく見かける説明はここまでで、

  • アップロード時にファイル名を変える
  • メッセージと一緒に送る

という例があまり見当たりません。
というわけで・・・

curlでHipChatへファイル名を変えてファイル共有

元のファイル名をそのままHipChat上に表示するのではなく、
任意の名前の変えて表示できるようにします。

APIのページの"Example Request"のところで、"filename="upload.png"とあるので

share-file-change-name.sh
#!/bin/bash
AUTHTOKEN=`cat .authtoken`
ROOMID=roomid
FILEPATH=/foo/bar/baz
curl -X POST \
  -H "Content-type: multipart/related" \
  -F "file=@${FILEPATH};filename=hoge.txt;type=text/plain" \
  https://www.hipchat.com/v2/room/${ROOMID}/share/file?auth_token=${AUTHTOKEN}

このように、ファイルを指定する際に";filename={任意のファイル名}"とすることで、アップロード元のファイル名とは異なるファイル名で表示することができます。
この例では"hoge.txt"として表示されます。
";type=text/plain"は送るファイルの形式にあったContent-typeを指定してあげてください。

curlでHipChatへメッセージを添えてファイル共有

ついでに、ファイル共有すると同時にメッセージも送ってみます。
こちらもファイル名を変えた時と同じように"Example Request"が参考になります。

/hoge/fuga/piyo.json
{
  "message" : "Please check this file!"
}
share-file-change-name.sh
#!/bin/bash
AUTHTOKEN=`cat .authtoken`
ROOMID=roomid
MESSAGE=/hoge/fuga/piyo.json
FILEPATH=/foo/bar/baz
curl -X POST \
  -H "Content-type: multipart/related" \
  -F "metadata=@{MESSAGE};type=application/json" \
  -F "file=@${FILEPATH};filename=hoge.txt;type=text/plain" \
  https://www.hipchat.com/v2/room/${ROOMID}/share/file?auth_token=${AUTHTOKEN}

この例では、送るメッセージを別ファイルにして、metadataパラメーターで送っています。
メッセージファイルの中身はJSON形式で、"message"キーに表示したいメッセージを設定します。
その時に";type=application/json"もお忘れなく。

ファイルと一緒にメッセージを送る場合は、メッセージもファイルにして
-Fオプションで読み込むのが簡単でいいと思います。

さいごに

HipChatへファイルアップロードする方法はいろいろなところで見かけるのですが、
ファイル名を変えたり、メッセージも一緒に送ったりといった方法が載っていなかったので
自分のメモを兼ねて投稿してみました。
HipChatでファイルを共有する際の参考になれば幸いです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2