breacan 0.8.0 → 0.9.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
- SHA1:
3
- metadata.gz: a7bb067bed0e9f3c3cefc11ff96219b7434efb4f
4
- data.tar.gz: b43fab514b79681b12a412e988afa4911cf29b75
2
+ SHA256:
3
+ metadata.gz: 114f3618a6e60278a633ce4d583fff573e4064abf8fabdf1179a8662bc8e986f
4
+ data.tar.gz: b56af77f0a6089ba2803667d36c895f61174acca76fa6bafd3d2932c1f8c1841
5
5
  SHA512:
6
- metadata.gz: 8dc892b72ec8f19d15d955626606a6106c07a7a3c58362ffedc84f4faaeaa885fd096e98a68638cec5c5acb1a57ae10f6281d318d0973114df1ab6b402c9044c
7
- data.tar.gz: 341fd510146b5db28814524b39b78ca8ce5c87b0d0370e085cc028da2b08537b100bfc5d7560d1b01747b2d672bd97782dde31b726039b2c33fd83e9e92ffb68
6
+ metadata.gz: b7b14d22955ba9e12ed37eae9c21555df800201c79229d4a2a7b6630ff89a5f8855ba63bf0c8fc8f8fd774c22bf159dad5f282fd5f8ec2e9ef7f3c15135a72bc
7
+ data.tar.gz: f0ed5cad10a8c7e128d9c5424cff5665ec12aea67ce7067c66e21ee4fcd0d477ddccb91ca34fb564522cf56748db978cac9dc637c2d4cc86f4d05b3f0ce60ecc
@@ -19,7 +19,8 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "sawyer", "~> 0.6"
22
-
22
+ spec.add_dependency "activesupport", "~>4.2"
23
23
  spec.add_development_dependency "bundler", "~> 1.7"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
+
25
26
  end
@@ -1,4 +1,6 @@
1
1
  require 'sawyer'
2
+ require 'active_support'
3
+ require 'active_support/core_ext/hash'
2
4
  require 'breacan/configurable'
3
5
  require 'breacan/authentication'
4
6
  require 'breacan/client/api'
@@ -48,9 +50,42 @@ module Breacan
48
50
  end
49
51
 
50
52
  def get(url, options = {})
53
+ return get_with_auto_paginate(url, options) if auto_paginate
51
54
  request :get, url, parse_query_and_convenience_headers(options)
52
55
  end
53
56
 
57
+ def get_with_auto_paginate(url, options = {})
58
+ res = nil
59
+ if url.end_with?('.list')
60
+ nextc = nil
61
+ loop do
62
+ r = request :get, url, parse_query_and_convenience_headers(options.merge({cursor: nextc}))
63
+ if r.is_a?(Sawyer::Resource)
64
+ res ||= {}
65
+ res.to_hash.deep_merge!(r.to_hash)
66
+ elsif r.is_a?(Array)
67
+ res ||= []
68
+ res.concat(r)
69
+ else
70
+ raise "unknown response type"
71
+ end
72
+
73
+ if r.respond_to?(:response_metadata)
74
+ if r.response_metadata.next_cursor == ""
75
+ res = Sawyer::Resource.new(Sawyer::Agent.new(api_endpoint), res)
76
+ break
77
+ end
78
+ nextc = r.response_metadata.next_cursor
79
+ else
80
+ break
81
+ end
82
+ end
83
+ else
84
+ res = request :get, url, parse_query_and_convenience_headers(options)
85
+ end
86
+ res
87
+ end
88
+
54
89
  def post(url, options = {})
55
90
  request :post, url, options
56
91
  end
@@ -34,8 +34,8 @@ module Breacan
34
34
  get 'channels.leave', query: args
35
35
  end
36
36
 
37
- def channels_list
38
- get 'channels.list'
37
+ def channels_list(args = nil)
38
+ get 'channels.list', query: args
39
39
  end
40
40
  alias_method :channels, :channels_list
41
41
 
@@ -33,8 +33,9 @@ module Breacan
33
33
  get 'groups.leave', query: args
34
34
  end
35
35
 
36
- def groups_list
37
- get 'groups.list'
36
+ def groups_list(args = nil)
37
+ get 'groups.list', query: args
38
+
38
39
  end
39
40
 
40
41
  def groups_mark(args)
@@ -13,6 +13,7 @@ module Breacan
13
13
  proxy
14
14
  middleware
15
15
  serializer
16
+ auto_paginate
16
17
  )
17
18
 
18
19
  attr_accessor(*OPTIONS_KEYS)
@@ -47,6 +48,7 @@ module Breacan
47
48
  @proxy = ENV['BREACAN_PROXY']
48
49
  @middleware = default_builder
49
50
  @serializer = default_serializer
51
+ @auto_paginate = !!ENV['BREACAN_AUTO_PAGINATE']
50
52
 
51
53
  self
52
54
  end
@@ -1,3 +1,3 @@
1
1
  module Breacan
2
- VERSION = '0.8.0'
2
+ VERSION = '0.9.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.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - linyows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-27 00:00:00.000000000 Z
11
+ date: 2020-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sawyer
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -107,8 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
121
  - !ruby/object:Gem::Version
108
122
  version: '0'
109
123
  requirements: []
110
- rubyforge_project:
111
- rubygems_version: 2.6.14
124
+ rubygems_version: 3.0.3
112
125
  signing_key:
113
126
  specification_version: 4
114
127
  summary: Simple Ruby wrapper for Slack API.