slack_chatter 0.8.1

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.
@@ -0,0 +1,12 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Api < SlackChatter::Api::Base
5
+
6
+ def test opts={}
7
+ call_method("api", "test", opts)
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Auth < SlackChatter::Api::Base
5
+
6
+ def test
7
+ call_method("auth", "test", {})
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,25 @@
1
+ module SlackChatter
2
+ module Api
3
+ class Base
4
+ attr_accessor :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def call_method(name_space, slack_method, params, http_method=:get)
11
+ path = "#{name_space}.#{slack_method}"
12
+ if http_method.to_sym == :get
13
+ client.get(path, params)
14
+ else
15
+ client.post(path, params)
16
+ end
17
+ end
18
+
19
+ def bool_as_i(bool)
20
+ bool ? 1 : 0
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,79 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Channels < SlackChatter::Api::Base
5
+
6
+ def find_by_name name
7
+ list.channels.detect do |channel|
8
+ channel["name"] == name
9
+ end
10
+ end
11
+
12
+ def archive channel_id
13
+ call_method("channels", "archive", {"channel" => channel_id})
14
+ end
15
+
16
+ def create channel_name
17
+ # channel_name - name of channel to recreate
18
+ call_method("channels", "create", {"name" => channel_name})
19
+ end
20
+
21
+ def history channel_id, opts={}
22
+ # latest - End of time range of messages to include in results
23
+ # oldest - Start of time range of messages to include in results
24
+ # inclusive - Include messages with latest or oldest timestamp in results (send 0/1)
25
+ # count - Number of messages to return, between 1 and 1000
26
+ call_method("channels", "history", {"channel" => channel_id}.merge(opts))
27
+ end
28
+
29
+ def info channel_id
30
+ call_method("channels", "info", {"channel" => channel_id})
31
+ end
32
+
33
+ def invite channel_id, user_id
34
+ call_method("channels", "invite", {"channel" => channel_id, "user" => user_id})
35
+ end
36
+
37
+ def join channel_name
38
+ call_method("channels", "join", {"name" => channel_name})
39
+ end
40
+
41
+ def kick channel_id, user_id
42
+ call_method("channels", "kick", {"channel" => channel_id, "user" => user_id})
43
+ end
44
+
45
+ def leave channel_id
46
+ call_method("channels", "leave", {"channel" => channel_id})
47
+ end
48
+
49
+ def list exclude_archived=false
50
+ # exclude_archives - Don't return archived channels (send 0/1)
51
+ call_method("channels", "list", {"exclude_archived" => bool_as_i(exclude_archived)})
52
+ end
53
+
54
+ def mark channel_id, epoch_time_stamp
55
+ # ts - Timestamp of the most recently seen message
56
+ call_method("channels", "mark", {"channel" => channel_id, "ts" => epoch_time_stamp})
57
+ end
58
+
59
+ def rename channel_id, new_name
60
+ # new_name - New name for channel
61
+ call_method("channels", "rename", {"channel" => channel_id, "name" => new_name})
62
+ end
63
+
64
+ def set_purpose channel_id, purpose
65
+ # purpose - The new purpose for the channel
66
+ call_method("channels", "setPurpose", {"channel" => channel_id, "purpose" => purpose})
67
+ end
68
+
69
+ def set_topic channel_id, topic
70
+ # topic - The new topic for the channel
71
+ call_method("channels", "setTopic", {"channel" => channel_id, "topic" => topic})
72
+ end
73
+
74
+ def unarchive channel_id
75
+ call_method("channels", "unarchive", {"channel"=> channel_id})
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,18 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Chat < SlackChatter::Api::Base
5
+ def post_message channel_id, text, opts={}
6
+ call_method("chat", "postMessage", {"channel" => channel_id, "text" => text}.merge(opts))
7
+ end
8
+
9
+ def delete timestamp, channel_id
10
+ call_method("chat", "delete", {"channel" => channel_id, "ts" => timestamp})
11
+ end
12
+
13
+ def update timestamp, channel_id, text
14
+ call_method("chat", "update", {"channel" => channel_id, "ts" => timestamp, "text" => text})
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Emoji < SlackChatter::Api::Base
5
+
6
+ def list
7
+ call_method("emoji", "list", {})
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Files < SlackChatter::Api::Base
5
+ def delete file_id
6
+ call_method("files", "delete", {"file" => file_id})
7
+ end
8
+
9
+ def info file_id, opts={}
10
+ call_method("files", "info", {"file" => file_id}.merge(opts))
11
+ end
12
+
13
+ def list opts={}
14
+ call_method("files", "list", opts)
15
+ end
16
+
17
+ def upload
18
+ raise "not implemented"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,84 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Groups < SlackChatter::Api::Base
5
+
6
+ def archive channel_id
7
+ params = {"channel" => channel_id}
8
+ call_method("groups", "archive", params)
9
+ end
10
+
11
+ def close channel_id
12
+ params = {"channel" => channel_id}
13
+ call_method("groups", "close", params)
14
+ end
15
+
16
+ def create channel_name
17
+ # channel_name - name of channel to recreate
18
+ params = {"name" => channel_name}
19
+ call_method("groups", "create", params)
20
+ end
21
+
22
+ def create_child channel_id
23
+ call_method("groups", "createChild", {"channel" => channel_id})
24
+ end
25
+
26
+ def history channel_id, opts={}
27
+ # latest - End of time range of messages to include in results
28
+ # oldest - Start of time range of messages to include in results
29
+ # inclusive - Include messages with latest or oldest timestamp in results (send 0/1)
30
+ # count - Number of messages to return, between 1 and 1000
31
+ call_method("groups", "history", {"channel" => channel_id}.merge(opts))
32
+ end
33
+
34
+ def info channel_id
35
+ call_method("groups", "info", {"channel" => channel_id})
36
+ end
37
+
38
+ def invite channel_id, user_id
39
+ call_method("groups", "invite", {"channel" => channel_id, "user" => user_id})
40
+ end
41
+
42
+ def kick channel_id, user_id
43
+ call_method("groups", "kick", {"channel" => channel_id, "user" => user_id})
44
+ end
45
+
46
+ def leave channel_id
47
+ call_method("groups", "leave", {"channel" => channel_id})
48
+ end
49
+
50
+ def list exclude_archived=false
51
+ # exclude_archives - Don't return archived groups (send 0/1)
52
+ call_method("groups", "list", {"exclude_archived" => bool_as_i(exclude_archived)})
53
+ end
54
+
55
+ def mark channel_id, epoch_time_stamp
56
+ # ts - Timestamp of the most recently seen message
57
+ call_method("groups", "mark", {"channel" => channel_id, "ts" => epoch_time_stamp})
58
+ end
59
+
60
+ def open channel_id
61
+ call_method("groups", "open", {"channel" => channel_id})
62
+ end
63
+
64
+ def rename channel_id, new_name
65
+ # new_name - New name for channel
66
+ call_method("groups", "rename", {"channel" => channel_id, "name" => new_name})
67
+ end
68
+
69
+ def set_purpose channel_id, purpose
70
+ # purpose - The new purpose for the channel
71
+ call_method("groups", "setPurpose", {"channel" => channel_id, "purpose" => purpose})
72
+ end
73
+
74
+ def set_topic channel_id, topic
75
+ # topic - The new topic for the channel
76
+ call_method("groups", "setTopic", {"channel" => channel_id, "topic" => topic})
77
+ end
78
+
79
+ def unarchive channel_id
80
+ call_method("groups", "unarchive", {"channel"=> channel_id})
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,34 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Im < SlackChatter::Api::Base
5
+
6
+
7
+ def close channel_id
8
+ call_method("im", "close", {"channel" => channel_id})
9
+ end
10
+
11
+ def history channel_id, opts={}
12
+ # latest - End of time range of messages to include in results
13
+ # oldest - Start of time range of messages to include in results
14
+ # inclusive - Include messages with latest or oldest timestamp in results (send 0/1)
15
+ # count - Number of messages to return, between 1 and 1000
16
+ call_method("im", "history", {"channel" => channel_id}.merge(opts))
17
+ end
18
+
19
+ def list
20
+ # exclude_archives - Don't return archived im (send 0/1)
21
+ call_method("im", "list", {})
22
+ end
23
+
24
+ def mark channel_id, epoch_time_stamp
25
+ # ts - Timestamp of the most recently seen message
26
+ call_method("im", "mark", {"channel" => channel_id, "ts" => epoch_time_stamp})
27
+ end
28
+
29
+ def open channel_id
30
+ call_method("im", "open", {"channel" => channel_id})
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,81 @@
1
+ require_relative './api.rb'
2
+ require_relative './auth.rb'
3
+ require_relative './channels.rb'
4
+ require_relative './chat.rb'
5
+ require_relative './emoji.rb'
6
+ require_relative './files.rb'
7
+ require_relative './groups.rb'
8
+ require_relative './im.rb'
9
+ require_relative './oauth.rb'
10
+ require_relative './rtm.rb'
11
+ require_relative './search.rb'
12
+ require_relative './stars.rb'
13
+ require_relative './team.rb'
14
+ require_relative './users.rb'
15
+
16
+ module SlackChatter
17
+ module Api
18
+ module Namespaces
19
+ extend ActiveSupport::Concern
20
+
21
+ included do
22
+ def api
23
+ @api ||= SlackChatter::Api::Api.new(self)
24
+ end
25
+
26
+ def auth
27
+ @auth ||= SlackChatter::Api::Auth.new(self)
28
+ end
29
+
30
+ def channels
31
+ @channels ||= SlackChatter::Api::Channels.new(self)
32
+ end
33
+
34
+ def chat
35
+ @chat ||= SlackChatter::Api::Chat.new(self)
36
+ end
37
+
38
+ def emoji
39
+ @emoji ||= SlackChatter::Api::Emoji.new(self)
40
+ end
41
+
42
+ def files
43
+ @files ||= SlackChatter::Api::Files.new(self)
44
+ end
45
+
46
+ def groups
47
+ @groups ||= SlackChatter::Api::Groups.new(self)
48
+ end
49
+
50
+ def im
51
+ @im ||= SlackChatter::Api::Im.new(self)
52
+ end
53
+
54
+ def oauth
55
+ @oath ||= SlackChatter::Api::Oauth.new(self)
56
+ end
57
+
58
+ def rtm
59
+ @rtm ||= SlackChatter::Api::Rtm.new(self)
60
+ end
61
+
62
+ def search
63
+ @search ||= SlackChatter::Api::Search.new(self)
64
+ end
65
+
66
+ def stars
67
+ @stars ||= SlackChatter::Api::Stars.new(self)
68
+ end
69
+
70
+ def team
71
+ @team ||= SlackChatter::Api::Team.new(self)
72
+ end
73
+
74
+ def users
75
+ @users ||= SlackChatter::Api::Users.new(self)
76
+ end
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,14 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Oauth < SlackChatter::Api::Base
5
+ def access client_id, client_secret, code, opts={}
6
+ opts.merge!({
7
+ "client_id" => client_id,
8
+ "client_secret" => client_secret,
9
+ "code" => code})
10
+ call_method("oauth", "access", opts)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,8 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Rtm < SlackChatter::Api::Base
5
+
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,21 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Search < SlackChatter::Api::Base
5
+ def all query, opts={}
6
+ opts = {"query" => query}.reverse_merge(opts)
7
+ call_method("search", "all", opts)
8
+ end
9
+
10
+ def files query, opts={}
11
+ opts = {"query" => query}.reverse_merge(opts)
12
+ call_method("search", "files", opts)
13
+ end
14
+
15
+ def messages query, opts={}
16
+ opts = {"query" => query}.reverse_merge(opts)
17
+ call_method("search", "messages", opts)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "./base"
2
+ module SlackChatter
3
+ module Api
4
+ class Stars < SlackChatter::Api::Base
5
+
6
+ def list opts={}
7
+ call_method("stars", "list", opts)
8
+ end
9
+ end
10
+ end
11
+ end