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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd1925ffbf6e5ae727056a78968ad71c79e299b5
4
- data.tar.gz: e13e08f2d165b7e99bf6e52e51bae971ee1d9e71
3
+ metadata.gz: b00472d07204ce1568710fee7a51ea915968d28f
4
+ data.tar.gz: 82694f601cc895ddf3810c6521e343ff9a25fea7
5
5
  SHA512:
6
- metadata.gz: 7985138b2198118c6147f524a9adf9d9baf1682e66ea4ed7d587b11c6cf7131002553c5450a1199028880b37c2280f4248c9ccc162bb7311289382236f3c9a39
7
- data.tar.gz: 6d87c8702becbc3b027ec1d4bd4d8957733f840bcf90a5e9f70a608d0348a14eb1a4aa73a6ac919cbf53fd1aeb6af221977b8fde107390cb7524825ce0d5327c
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
- TODO: Write usage instructions here
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
  ------------
@@ -1,17 +1,37 @@
1
1
  require 'sawyer'
2
2
  require 'breacan/configurable'
3
3
  require 'breacan/authentication'
4
- require 'breacan/client/oauth'
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::OAuth
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
- api_path = URI::Parser.new.escape("#{path.to_s}?token=#{@access_token}")
71
- @last_response = response = agent.call(method, api_path, data, options)
72
- response.data
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 = {})
@@ -0,0 +1,9 @@
1
+ module Breacan
2
+ class Client
3
+ module Api
4
+ def api_test(args)
5
+ get 'api.test', query: args
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Breacan
2
+ class Client
3
+ module Auth
4
+ def auth_test(args)
5
+ get 'auth.test', query: args
6
+ end
7
+ end
8
+ end
9
+ end
@@ -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 channels_info(*args)
9
- get 'channels.info', args
45
+ def channels_mark(args)
46
+ get 'channels.mark', query: args
10
47
  end
11
-
12
- def channels_history(*args)
13
- get 'channels.history', args
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)
@@ -1,16 +1,16 @@
1
1
  module Breacan
2
2
  class Client
3
3
  module Chat
4
- def chat_delete(*args)
5
- delete 'chat.delete', args
4
+ def chat_delete(args)
5
+ get 'chat.delete', query: args
6
6
  end
7
7
 
8
- def chat_post_message(*args)
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(*args)
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,9 @@
1
+ module Breacan
2
+ class Client
3
+ module Emoji
4
+ def emoji_list
5
+ get 'emoji.list'
6
+ end
7
+ end
8
+ end
9
+ 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
@@ -1,8 +1,8 @@
1
1
  module Breacan
2
2
  class Client
3
3
  module OAuth
4
- def oauth_access(*args)
5
- post 'oauth.access', args
4
+ def oauth_access(args)
5
+ get 'oauth.access', query: args
6
6
  end
7
7
  end
8
8
  end
@@ -0,0 +1,9 @@
1
+ module Breacan
2
+ class Client
3
+ module Rtm
4
+ def rtm_start
5
+ get 'rtm.start'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -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,9 @@
1
+ module Breacan
2
+ class Client
3
+ module Star
4
+ def star_list(args)
5
+ get 'star.list', query: args
6
+ end
7
+ end
8
+ end
9
+ 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
@@ -1,4 +1,4 @@
1
- require 'breacan/response/raise_error'
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.from_response(response)
4
- if klass = case response[:status].to_i
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
@@ -1,3 +1,3 @@
1
1
  module Breacan
2
- VERSION = "0.0.1"
2
+ VERSION = '0.1.0'
3
3
  end
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.1
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-02 00:00:00.000000000 Z
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/raise_error.rb
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