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 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