breacan 0.8.0 → 0.9.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
- 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.