Slack API の files.list

Slack に投稿したファイルの一覧を取得するAPI
https://api.slack.com/methods/files.list
問い合わせする時に、絞り込み条件をしないと1つのファイルの情報だけでも大きく
大量に出てたいへん、
投稿時刻等の条件指定するのが現実的で、
ts_from = From 時刻
ts_to = To時刻
で、UNIX Time を指定しないとならない。
1つのファイルの情報は、以下の情報が、JSON で取得される。
https://api.slack.com/types/file
この中の、url_private のURLをSlackログイン済ブラウザに貼り付ければ、
画像ファイルであればそのまま表示される。
url_private_download のURLをSlackログイン済ブラウザに貼り付ければ、
ファイルダウンロードする。
だれが、投稿したか?は、user キーの値だが、Slackが管理してるIDで値だけ見ても
判断できない。
users.info というAPI メソッドでユーザ情報を
問い合わせれば出てくるのだが、、
https://api.slack.com/methods/users.info

これもたくさん情報が返ってくる。Slack表示上の人の名前が知りたいわけで、
Slack表示上の人の名前は、user → real_name を参照

{
    "ok": true,
    "user": {
        "id": "XXXXXXXXXXXXX",
        "team_id": "XXXXXXXXXXXXXXX",
        "name": "xxxxxxxxxxx",
        "deleted": false,
        "color": "e7392d",
        "real_name": "\u文字の Unicode 書式",
  ...

のように、real_name は、Unicode である。

JavaScript 上で、問い合わせていて実際の表示名を知りたければ、

var realname = decodeURIComponent(real_name_value);

のようにする。

Java で、問い合わせ結果 JSON パースしていて、実際の表示名を知りたければ、

static String unicodeToString(String unicode){
    String[] sp = unicode.split("\\\\u");
    int[] cs = new int[sp.length - 1];
    for (int i = 0; i < cs.length; i++){
        cs[i] = Integer.parseInt(sp[i + 1], 16);
    }
    return new String(cs, 0, cs.length);
}

こんなメソッドでも用意して、real_name の値を変換することになるだろう。
いや、そんなことしなくても、gson で読み込めば、JsonObject として読み込めるので、
getAsString() は、期待どおりの文字列を返してくれるのを簡単に書ける。