slackpolice 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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