slackpolice 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9430c345744179f341caf42c66816b00cd21829f
4
- data.tar.gz: c3df5b2c4455c3808cfe96a7878a6ea53847f404
3
+ metadata.gz: 6524a33282ba911981e607533a6231aa5f076875
4
+ data.tar.gz: 920a22d1ff49e47ef27ccc596066db5bc45511c1
5
5
  SHA512:
6
- metadata.gz: bd5561fadcc3691a2387ab8aaefa52482b94c38a58043038de37e58a2b5d4ee1a736b154c17ed303ba48ce3f693076066344cbf708ab7fede6126c7b83bd5d5a
7
- data.tar.gz: de61b9dbbf6e6add903ca6d004558debb37d40dbd2587bcbcc41a214a39b8df8b1ff8ea7c8ef1d9742a3356565cdc2c73df96ffc93465103e55a397f50747e91
6
+ metadata.gz: 4231568902960edf2e31c1fa4b00a986364d1cd7e61727377f3613877fdbd67551d25723534aae16df9e16a26413f7390fbea319f8ada456b63e7fe15e269575
7
+ data.tar.gz: c492b25593a32532057ab814928123889999196149f43c4785e1c1165f2d03a2bb6f5173aafaf4a1caa726b70640889ca482a8b7582903816239594c18736957
data/README.md CHANGED
@@ -1,28 +1,22 @@
1
1
  # Slackpolice
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/slackpolice`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Slackpolice is Slack administration tools.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ * Archive non members channels.
6
+ * Delete old files.
6
7
 
7
8
  ## Installation
8
9
 
9
- Add this line to your application's Gemfile:
10
-
11
- ```ruby
12
- gem 'slackpolice'
13
- ```
14
-
15
- And then execute:
16
-
17
- $ bundle
18
-
19
- Or install it yourself as:
20
-
21
10
  $ gem install slackpolice
22
11
 
23
12
  ## Usage
24
13
 
25
- TODO: Write usage instructions here
14
+ ```
15
+ Commands:
16
+ slackpolice archive --api-token=API_TOKEN # archive no members channels
17
+ slackpolice help [COMMAND] # Describe available commands or one specific command
18
+ slackpolice remove_files --api-token=API_TOKEN # remove expired files
19
+ ```
26
20
 
27
21
  ## Development
28
22
 
@@ -12,6 +12,23 @@ module Slackpolice
12
12
  end
13
13
  end
14
14
 
15
+ desc :remove_files, "remove expired files"
16
+ method_option :api_token, type: :string, required: true
17
+ method_option :days, type: :numeric, default: 7
18
+ method_option :dry_run, type: :boolean, default: false
19
+ def remove_files
20
+ dt = Date.today.prev_day(options['days'])
21
+ if options[:dry_run]
22
+ client.expired_files(dt).each do |f|
23
+ puts "deleted: #{Time.at(f['created'])} #{f['title']} (dry-run)"
24
+ end
25
+ else
26
+ client.delete_expired_files(dt).each do |f|
27
+ puts "deleted: #{Time.at(f['created'])} #{f['title']}"
28
+ end
29
+ end
30
+ end
31
+
15
32
  private
16
33
 
17
34
  def client
@@ -1,5 +1,6 @@
1
1
  require 'slack-api-wrapper'
2
2
  require 'logger'
3
+ require 'date'
3
4
 
4
5
  module Slackpolice
5
6
  class Client
@@ -17,6 +18,16 @@ module Slackpolice
17
18
  resp = @client.channels_archive('channel' => c['id'])
18
19
  archives << c if resp['ok']
19
20
  end
21
+ archives
22
+ end
23
+
24
+ def delete_expired_files(ts_to = Date.today.prev_day(7))
25
+ Enumerator.new do |y|
26
+ expired_files(ts_to).each do |f|
27
+ resp = @client.files_delete('file' => f['id'])
28
+ y << f if resp['ok']
29
+ end
30
+ end
20
31
  end
21
32
 
22
33
  def no_members_channels
@@ -24,5 +35,21 @@ module Slackpolice
24
35
  c['num_members'] == 0 && c['is_archived'] == false
25
36
  end
26
37
  end
38
+
39
+ def expired_files(ts_to = Date.today.prev_day(7))
40
+ page = 1
41
+ Enumerator.new do |y|
42
+ begin
43
+ resp = @client.files_list('ts_to' => ts_to.to_time.to_i, 'page' => page)
44
+ if resp['ok']
45
+ pages = resp['paging']['pages']
46
+ resp['files'].map do |file|
47
+ y << file
48
+ end
49
+ end
50
+ page += 1
51
+ end while pages >= page && 100 > page # over 100 page is not found. api bug?
52
+ end
53
+ end
27
54
  end
28
55
  end
@@ -1,3 +1,3 @@
1
1
  module Slackpolice
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slackpolice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ISOBE Kazuhiko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-09 00:00:00.000000000 Z
11
+ date: 2015-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler