Как мне удалить все файлы после DATE в Slack? - PullRequest
0 голосов
/ 21 марта 2019

Я хотел бы знать, как я могу удалить все файлы за 30 дней, используя Slack API?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

(не ответ, а большой комментарий)

Я не большой поклонник гигантских однострочников.Как насчет этого для чего-то более простого в обслуживании:

list_files() {
    local last_month=$(date -d "30 days ago" "+%s")
    local url="https://slack.com/api/files.list?ts_to=$last_month"
    local curl_opts=( 
        -X GET 
        -H "Authorization: Bearer $token" 
    )
    curl "${curl_opts[@]}" "$url"
}

extract_ids() {
    jq -r '.files[] | .id'
}

delete_files() {
    local url="https://slack.com/api/files.delete?file={}"
    local curl_opts=( 
        -X POST 
        -H "Authorization: Bearer $token" 
    )
    xargs -I {} -n 1 curl "${curl_opts[@]}" "$url"
}

token='xoxp-yourtoken'
list_files | extract_ids | delete_files
1 голос
/ 21 марта 2019

Поскольку я не нашел Stackoverflow ответы на этот вопрос, я создал для этого однострочный сценарий bash:

curl -X GET -H 'Authorization: Bearer xoxp-yourtoken' \
https://slack.com/api/files.list\?ts_to\=$(date -d "$date -30 days" +"%s") \
| jq -r '.files[] | .id' \
| xargs -I {} -n 1 curl -X POST -H 'Authorization: Bearer xoxp-yourtoken' \
https://slack.com/api/files.delete\?file\={}

Что будет делать эта команда:

  1. Он получит список всех файлов за 30 дней из slack api;
  2. Он анализирует ответ JSON и возвращает идентификатор файлов в списке, разделенном новой строкой.
  3. Затем длядля каждого идентификатора будет называться files.delete.

Вам понадобится:

  1. jq для анализа json: sudo apt install jq
  2. Slackавторизованное приложение для получения ключа на предъявителя

Вам необходимо создать новое приложение slack-api, затем выбрать «Разрешения» в качестве функций и возможностей, как показано ниже:

enter image description here

И, наконец, вы заходите в OAuth & Permissions и копируете ключ.

Наслаждайтесь!

...