-
Notifications
You must be signed in to change notification settings - Fork 36
/
files.clj
66 lines (60 loc) · 2.29 KB
/
files.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
(ns clj-slack.files
(:require [clj-slack.core :refer [slack-request slack-post-request stringify-keys]])
(:refer-clojure :exclude [list]))
(defn delete
"Deletes a file from your team."
[connection file-id]
(slack-request connection "files.delete" {"file" file-id}))
(defn info
"Gets information about a team file.
Optional arguments are:
- count: number of items to return per page
- page: page number of results to return"
([connection file-id]
(info connection file-id {}))
([connection file-id optionals]
(->> optionals
stringify-keys
(merge {"file" file-id})
(slack-request connection "files.info"))))
(defn list
"Lists & filters team files.
Optional arguments are:
- user: filter files created by a single user
- ts_from: filter files created after this timestamp
- ts_to: filter files created before this timestamp
- types: filter files by type
- count: number of items to return per page
- page: page number of results to return"
([connection]
(list connection {}))
([connection optionals]
(->> optionals
stringify-keys
(slack-request connection "files.list"))))
(defn revoke-public-url
"This method disables public/external sharing for a file."
[connection file]
(slack-request connection "files.revokePublicURL" {"file" file}))
(defn shared-public-url
"This method enables public/external sharing for a file."
[connection file]
(slack-request connection "files.sharedPublicURL" {"file" file}))
(defn upload
"Creates or uploads an existing file. Content can be a String, File or InputStream
Optional arguments are:
- filetype: internal file type identifier
- filename: filename of file
- title: title of file
- initial_comment: initial comment to add to file
- channels: list of channels to share the file into"
([connection content]
(upload connection content {}))
([connection content optionals]
(let [params (->> optionals
stringify-keys)]
(if (string? content)
;; if content is string use get request (e.g. post a snippet)
(slack-request connection "files.upload" (merge params {"content" content}))
;; otherwise assume it is a file or an inputstream and use post
(slack-post-request connection "files.upload" (merge params {"file" content}))))))