breacan 0.0.1 → 0.1.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 +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
|