breacan 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -1
- data/lib/breacan/client.rb +40 -6
- data/lib/breacan/client/api.rb +9 -0
- data/lib/breacan/client/auth.rb +9 -0
- data/lib/breacan/client/channels.rb +50 -5
- data/lib/breacan/client/chat.rb +6 -6
- data/lib/breacan/client/emoji.rb +9 -0
- data/lib/breacan/client/files.rb +22 -0
- data/lib/breacan/client/groups.rb +66 -0
- data/lib/breacan/client/im.rb +25 -0
- data/lib/breacan/client/oauth.rb +2 -2
- data/lib/breacan/client/rtm.rb +9 -0
- data/lib/breacan/client/search.rb +17 -0
- data/lib/breacan/client/star.rb +9 -0
- data/lib/breacan/client/users.rb +25 -0
- data/lib/breacan/configurable.rb +2 -2
- data/lib/breacan/error.rb +2 -2
- data/lib/breacan/response/custom.rb +27 -0
- data/lib/breacan/version.rb +1 -1
- metadata +13 -3
- data/lib/breacan/response/raise_error.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b00472d07204ce1568710fee7a51ea915968d28f
|
4
|
+
data.tar.gz: 82694f601cc895ddf3810c6521e343ff9a25fea7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b863a33cc7bcf774774b71e3db3af49b030834eb7b5830edca2b381e2598c186039ab741c23ba0afe17109033a0f9a8986fcbd27fb66f5e6f7e902af28967c83
|
7
|
+
data.tar.gz: 7815344349e9d1890c3445bf2f94c199fb05e0c23cd0a558d66d5aedf29fc7ec5feb73ca8833eab78f44e17dfebce1670d6d3f437cb9beddc6c8cce618f47a25
|
data/README.md
CHANGED
@@ -26,7 +26,22 @@ Or install it yourself as:
|
|
26
26
|
Usage
|
27
27
|
-----
|
28
28
|
|
29
|
-
|
29
|
+
example:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
require 'breacan'
|
33
|
+
Breacan.access_token = 'xoxp-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
|
34
|
+
Breacan.channels
|
35
|
+
=> [{:id=>"C03QXXXX",
|
36
|
+
:name=>"hello",
|
37
|
+
:is_channel=>true,
|
38
|
+
:created=>1424735886,
|
39
|
+
:creator=>"U03PXXXX",
|
40
|
+
:is_archived=>false,
|
41
|
+
:is_general=>false,
|
42
|
+
:is_member=>false,
|
43
|
+
:members=> ["U0NLXXXX",...
|
44
|
+
```
|
30
45
|
|
31
46
|
Contributing
|
32
47
|
------------
|
data/lib/breacan/client.rb
CHANGED
@@ -1,17 +1,37 @@
|
|
1
1
|
require 'sawyer'
|
2
2
|
require 'breacan/configurable'
|
3
3
|
require 'breacan/authentication'
|
4
|
-
require 'breacan/client/
|
4
|
+
require 'breacan/client/api'
|
5
|
+
require 'breacan/client/auth'
|
5
6
|
require 'breacan/client/channels'
|
6
7
|
require 'breacan/client/chat'
|
8
|
+
require 'breacan/client/emoji'
|
9
|
+
require 'breacan/client/files'
|
10
|
+
require 'breacan/client/groups'
|
11
|
+
require 'breacan/client/im'
|
12
|
+
require 'breacan/client/oauth'
|
13
|
+
require 'breacan/client/rtm'
|
14
|
+
require 'breacan/client/search'
|
15
|
+
require 'breacan/client/star'
|
16
|
+
require 'breacan/client/users'
|
7
17
|
|
8
18
|
module Breacan
|
9
19
|
class Client
|
10
20
|
include Breacan::Authentication
|
11
21
|
include Breacan::Configurable
|
12
|
-
include Breacan::Client::
|
22
|
+
include Breacan::Client::Api
|
23
|
+
include Breacan::Client::Auth
|
13
24
|
include Breacan::Client::Channels
|
14
25
|
include Breacan::Client::Chat
|
26
|
+
include Breacan::Client::Emoji
|
27
|
+
include Breacan::Client::Files
|
28
|
+
include Breacan::Client::Groups
|
29
|
+
include Breacan::Client::Im
|
30
|
+
include Breacan::Client::OAuth
|
31
|
+
include Breacan::Client::Rtm
|
32
|
+
include Breacan::Client::Search
|
33
|
+
include Breacan::Client::Star
|
34
|
+
include Breacan::Client::Users
|
15
35
|
|
16
36
|
CONVENIENCE_HEADERS = Set.new(%i(accept content_type))
|
17
37
|
|
@@ -52,7 +72,6 @@ module Breacan
|
|
52
72
|
def agent
|
53
73
|
@agent ||= Sawyer::Agent.new(api_endpoint, sawyer_options) do |http|
|
54
74
|
http.headers[:accept] = media_type
|
55
|
-
http.headers[:content_type] = media_type
|
56
75
|
http.headers[:user_agent] = user_agent
|
57
76
|
end
|
58
77
|
end
|
@@ -66,10 +85,25 @@ module Breacan
|
|
66
85
|
if accept = data.delete(:accept)
|
67
86
|
options[:headers][:accept] = accept
|
68
87
|
end
|
88
|
+
options[:query][:token] = access_token
|
69
89
|
end
|
70
|
-
|
71
|
-
@last_response = response = agent.call(
|
72
|
-
|
90
|
+
|
91
|
+
@last_response = response = agent.call(
|
92
|
+
method,
|
93
|
+
URI::Parser.new.escape(path.to_s),
|
94
|
+
data,
|
95
|
+
options
|
96
|
+
)
|
97
|
+
|
98
|
+
simplize_body response.data
|
99
|
+
end
|
100
|
+
|
101
|
+
def simplize_body(body)
|
102
|
+
body.to_hash.keys.count == 1 ? body[body.to_hash.keys.last] : body
|
103
|
+
end
|
104
|
+
|
105
|
+
def last_response
|
106
|
+
@last_response if defined? @last_response
|
73
107
|
end
|
74
108
|
|
75
109
|
def boolean_from_response(method, path, options = {})
|
@@ -1,16 +1,61 @@
|
|
1
1
|
module Breacan
|
2
2
|
class Client
|
3
3
|
module Channels
|
4
|
+
def channels_archive(args)
|
5
|
+
get 'channels.archive', query: args
|
6
|
+
end
|
7
|
+
|
8
|
+
def channels_create(args)
|
9
|
+
get 'channels.create', query: args
|
10
|
+
end
|
11
|
+
|
12
|
+
def channels_history(args)
|
13
|
+
get 'channels.history', query: args
|
14
|
+
end
|
15
|
+
|
16
|
+
def channels_info(args)
|
17
|
+
get 'channels.info', query: args
|
18
|
+
end
|
19
|
+
|
20
|
+
def channels_info(args)
|
21
|
+
get 'channels.info', query: args
|
22
|
+
end
|
23
|
+
|
24
|
+
def channels_invite(args)
|
25
|
+
get 'channels.invite', query: args
|
26
|
+
end
|
27
|
+
|
28
|
+
def channels_join(args)
|
29
|
+
get 'channels.join', query: args
|
30
|
+
end
|
31
|
+
|
32
|
+
def channels_kick(args)
|
33
|
+
get 'channels.kick', query: args
|
34
|
+
end
|
35
|
+
|
36
|
+
def channels_leave(args)
|
37
|
+
get 'channels.leave', query: args
|
38
|
+
end
|
39
|
+
|
4
40
|
def channels_list
|
5
41
|
get 'channels.list'
|
6
42
|
end
|
43
|
+
alias_method :channels, :channels_list
|
7
44
|
|
8
|
-
def
|
9
|
-
get 'channels.
|
45
|
+
def channels_mark(args)
|
46
|
+
get 'channels.mark', query: args
|
10
47
|
end
|
11
|
-
|
12
|
-
|
13
|
-
|
48
|
+
def channels_rename(args)
|
49
|
+
get 'channels.rename', query: args
|
50
|
+
end
|
51
|
+
def channels_set_purpose(args)
|
52
|
+
get 'channels.setPurpose', query: args
|
53
|
+
end
|
54
|
+
def channels_set_topic(args)
|
55
|
+
get 'channels.setTopic', query: args
|
56
|
+
end
|
57
|
+
def channels_unarchive(args)
|
58
|
+
get 'channels.unarchive', query: args
|
14
59
|
end
|
15
60
|
|
16
61
|
def channels_info_by_name(name)
|
data/lib/breacan/client/chat.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
module Breacan
|
2
2
|
class Client
|
3
3
|
module Chat
|
4
|
-
def chat_delete(
|
5
|
-
|
4
|
+
def chat_delete(args)
|
5
|
+
get 'chat.delete', query: args
|
6
6
|
end
|
7
7
|
|
8
|
-
def chat_post_message(
|
9
|
-
get 'chat.postMessage', args
|
8
|
+
def chat_post_message(args)
|
9
|
+
get 'chat.postMessage', query: args
|
10
10
|
end
|
11
11
|
|
12
|
-
def chat_update(
|
13
|
-
get 'chat.update', args
|
12
|
+
def chat_update(args)
|
13
|
+
get 'chat.update', query: args
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Breacan
|
2
|
+
class Client
|
3
|
+
module Files
|
4
|
+
def files_delete(args)
|
5
|
+
get 'files.delete', query: args
|
6
|
+
end
|
7
|
+
|
8
|
+
def files_info(args)
|
9
|
+
get 'files.info', query: args
|
10
|
+
end
|
11
|
+
|
12
|
+
def files_list(args)
|
13
|
+
get 'files.list', query: args
|
14
|
+
end
|
15
|
+
|
16
|
+
def files_upload(args)
|
17
|
+
# content_type = 'multipart/form-data'
|
18
|
+
# post 'files.upload', query: args
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Breacan
|
2
|
+
class Client
|
3
|
+
module Groups
|
4
|
+
def groups_archive(args)
|
5
|
+
get 'groups.archive', query: args
|
6
|
+
end
|
7
|
+
|
8
|
+
def groups_create(args)
|
9
|
+
get 'groups.create', query: args
|
10
|
+
end
|
11
|
+
|
12
|
+
def groups_history(args)
|
13
|
+
get 'groups.history', query: args
|
14
|
+
end
|
15
|
+
|
16
|
+
def groups_info(args)
|
17
|
+
get 'groups.info', query: args
|
18
|
+
end
|
19
|
+
|
20
|
+
def groups_info(args)
|
21
|
+
get 'groups.info', query: args
|
22
|
+
end
|
23
|
+
|
24
|
+
def groups_invite(args)
|
25
|
+
get 'groups.invite', query: args
|
26
|
+
end
|
27
|
+
|
28
|
+
def groups_join(args)
|
29
|
+
get 'groups.join', query: args
|
30
|
+
end
|
31
|
+
|
32
|
+
def groups_kick(args)
|
33
|
+
get 'groups.kick', query: args
|
34
|
+
end
|
35
|
+
|
36
|
+
def groups_leave(args)
|
37
|
+
get 'groups.leave', query: args
|
38
|
+
end
|
39
|
+
|
40
|
+
def groups_list
|
41
|
+
get 'groups.list'
|
42
|
+
end
|
43
|
+
|
44
|
+
def groups_mark(args)
|
45
|
+
get 'groups.mark', query: args
|
46
|
+
end
|
47
|
+
def groups_rename(args)
|
48
|
+
get 'groups.rename', query: args
|
49
|
+
end
|
50
|
+
def groups_set_purpose(args)
|
51
|
+
get 'groups.setPurpose', query: args
|
52
|
+
end
|
53
|
+
def groups_set_topic(args)
|
54
|
+
get 'groups.setTopic', query: args
|
55
|
+
end
|
56
|
+
def groups_unarchive(args)
|
57
|
+
get 'groups.unarchive', query: args
|
58
|
+
end
|
59
|
+
|
60
|
+
def groups_info_by_name(name)
|
61
|
+
res = groups_list
|
62
|
+
res.groups.find { |ch| ch['name'] == name } if res.ok
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Breacan
|
2
|
+
class Client
|
3
|
+
module Im
|
4
|
+
def im_close(args)
|
5
|
+
get 'im.close', query: args
|
6
|
+
end
|
7
|
+
|
8
|
+
def im_history(args)
|
9
|
+
get 'im.history', query: args
|
10
|
+
end
|
11
|
+
|
12
|
+
def im_list(args)
|
13
|
+
get 'im.list', query: args
|
14
|
+
end
|
15
|
+
|
16
|
+
def im_mark(args)
|
17
|
+
get 'im.mark', query: args
|
18
|
+
end
|
19
|
+
|
20
|
+
def im_open(args)
|
21
|
+
get 'im.open', query: args
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/breacan/client/oauth.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Breacan
|
2
|
+
class Client
|
3
|
+
module Search
|
4
|
+
def search_all(args)
|
5
|
+
get 'serach.all', query: args
|
6
|
+
end
|
7
|
+
|
8
|
+
def search_files(args)
|
9
|
+
get 'serach.files', query: args
|
10
|
+
end
|
11
|
+
|
12
|
+
def search_messages(args)
|
13
|
+
get 'serach.messages', query: args
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Breacan
|
2
|
+
class Client
|
3
|
+
module Users
|
4
|
+
def users_get_presence(args)
|
5
|
+
get 'users.getPresence', query: args
|
6
|
+
end
|
7
|
+
|
8
|
+
def users_info(args)
|
9
|
+
get 'users.info', query: args
|
10
|
+
end
|
11
|
+
|
12
|
+
def users_list(args)
|
13
|
+
get 'users.list', query: args
|
14
|
+
end
|
15
|
+
|
16
|
+
def users_set_active(args)
|
17
|
+
get 'users.setActive', query: args
|
18
|
+
end
|
19
|
+
|
20
|
+
def users_set_presence(args)
|
21
|
+
get 'users.setPresence', query: args
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/breacan/configurable.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'breacan/response/
|
1
|
+
require 'breacan/response/custom'
|
2
2
|
|
3
3
|
module Breacan
|
4
4
|
module Configurable
|
@@ -44,8 +44,8 @@ module Breacan
|
|
44
44
|
@connection_options = { headers: { accept: media_type, user_agent: user_agent } }
|
45
45
|
@proxy = ENV['BREACAN_PROXY']
|
46
46
|
@middleware = Faraday::RackBuilder.new { |builder|
|
47
|
-
builder.use Breacan::Response::RaiseError
|
48
47
|
builder.adapter Faraday.default_adapter
|
48
|
+
builder.response :breacan_custom
|
49
49
|
}
|
50
50
|
self
|
51
51
|
end
|
data/lib/breacan/error.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Breacan
|
2
2
|
class Error < StandardError
|
3
|
-
def self.
|
4
|
-
if klass = case
|
3
|
+
def self.from_body(body)
|
4
|
+
if klass = case body[:error]
|
5
5
|
when 400 then Breacan::BadRequest
|
6
6
|
when 401 then Breacan::Unauthorized
|
7
7
|
when 403 then Breacan::Forbidden
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'breacan/error'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Breacan
|
6
|
+
module Response
|
7
|
+
class Custom < Faraday::Response::Middleware
|
8
|
+
private
|
9
|
+
|
10
|
+
def on_complete(res)
|
11
|
+
if error = Breacan::Error.from_response(res)
|
12
|
+
raise error
|
13
|
+
end
|
14
|
+
|
15
|
+
return if res[:body].empty?
|
16
|
+
|
17
|
+
body = JSON.load(res[:body])
|
18
|
+
if body['ok']
|
19
|
+
res[:body].gsub!('"ok":true,', '')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
Faraday::Response.register_middleware \
|
25
|
+
breacan_custom: -> { Breacan::Response::Custom }
|
26
|
+
end
|
27
|
+
end
|
data/lib/breacan/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: breacan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- linyows
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sawyer
|
@@ -68,12 +68,22 @@ files:
|
|
68
68
|
- lib/breacan.rb
|
69
69
|
- lib/breacan/authentication.rb
|
70
70
|
- lib/breacan/client.rb
|
71
|
+
- lib/breacan/client/api.rb
|
72
|
+
- lib/breacan/client/auth.rb
|
71
73
|
- lib/breacan/client/channels.rb
|
72
74
|
- lib/breacan/client/chat.rb
|
75
|
+
- lib/breacan/client/emoji.rb
|
76
|
+
- lib/breacan/client/files.rb
|
77
|
+
- lib/breacan/client/groups.rb
|
78
|
+
- lib/breacan/client/im.rb
|
73
79
|
- lib/breacan/client/oauth.rb
|
80
|
+
- lib/breacan/client/rtm.rb
|
81
|
+
- lib/breacan/client/search.rb
|
82
|
+
- lib/breacan/client/star.rb
|
83
|
+
- lib/breacan/client/users.rb
|
74
84
|
- lib/breacan/configurable.rb
|
75
85
|
- lib/breacan/error.rb
|
76
|
-
- lib/breacan/response/
|
86
|
+
- lib/breacan/response/custom.rb
|
77
87
|
- lib/breacan/version.rb
|
78
88
|
homepage: https://github.com/linyows/breacan
|
79
89
|
licenses:
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'breacan/error'
|
3
|
-
|
4
|
-
module Breacan
|
5
|
-
module Response
|
6
|
-
class RaiseError < Faraday::Response::Middleware
|
7
|
-
private
|
8
|
-
|
9
|
-
def on_complete(response)
|
10
|
-
if error = Breacan::Error.from_response(response)
|
11
|
-
raise error
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|