chatwork 0.12.3 → 1.0.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
  SHA256:
3
- metadata.gz: 5bb38c6cdbe4e1ad3c0b38bc21ac36ce00581a12b1b62db584be89157dc64cd5
4
- data.tar.gz: 3bedf9754acd3114a6d5bf20a3b765e2c65d6085eaf3dec6ae45f3f829e4fbdb
3
+ metadata.gz: 6ebd6f01a2cc37a47a6257aeb737ff651136d8648fdbc789d7b04ead47871b7f
4
+ data.tar.gz: cc0dd6dad262c74a62a60935c0fd2f7eeacbbcc354e8c9537dcac32484b005ed
5
5
  SHA512:
6
- metadata.gz: 026e88dcf281567c670c133da00a5fafe5c4257efa257691042228e3da5f8d65089558123eaa2805479c3cf619968fc83f99dec73abd99a0381c7976d2c29ad3
7
- data.tar.gz: d225e6749f569d69ee535548b5d442c7a7e94063a06b1107470abe1aec3fd868fc1d7229b65bf83eb3925fd16b38abe518e4b0329c6c1fc3d8a6b112f58368f1
6
+ metadata.gz: 4adfba5cbacb2c7d013890d1e023b2b8e3edec7c0a485f3d9e73c0142c34e1f84ecf67cf9238abab519640ecbb932eb2270075829ff7268a316e0f684714f880
7
+ data.tar.gz: eee04c8ba3baf1754b1b497f265dad2be39583a24bda1ba8d6f29ae9b9f85442e2b55570c0c8d9fa45526070621d3c9e423e6ed852937cbc1c7e84240a822631
@@ -26,15 +26,13 @@ jobs:
26
26
 
27
27
  matrix:
28
28
  ruby:
29
- - ruby:2.4
30
- - ruby:2.5
31
29
  - ruby:2.6
32
30
  - ruby:2.7
33
31
  - ruby:3.0
32
+ - ruby:3.1
34
33
  - rubylang/ruby:master-nightly-bionic
35
34
  gemfile:
36
- - faraday_0
37
- - faraday_1
35
+ - faraday_2
38
36
  include:
39
37
  - ruby: rubylang/ruby:master-nightly-bionic
40
38
  allow_failures: "true"
@@ -76,7 +74,6 @@ jobs:
76
74
 
77
75
  - run: bundle exec rubocop
78
76
  continue-on-error: ${{ matrix.allow_failures == 'true' }}
79
- if: matrix.ruby < 'ruby:3.0' # FIXME: remove this after upgrade rubocop
80
77
 
81
78
  finish:
82
79
  needs: test
data/.rubocop.yml CHANGED
@@ -6,6 +6,9 @@ inherit_gem:
6
6
  require: rubocop-rspec
7
7
 
8
8
  AllCops:
9
+ NewCops: enable
10
+ SuggestExtensions: false
11
+ TargetRubyVersion: 2.6
9
12
  Exclude:
10
13
  - 'gemfiles/vendor/**/*'
11
14
 
@@ -15,9 +18,27 @@ AllCops:
15
18
  - 'vendor/**/*'
16
19
  - '.git/**/*'
17
20
 
18
- # module name is `ChatWork`, but I want to use `chatwork` as filename
19
- RSpec/FilePath:
21
+ Layout/HashAlignment:
22
+ EnforcedColonStyle: table
23
+
24
+ Lint/BinaryOperatorWithIdenticalOperands:
20
25
  Enabled: false
21
26
 
22
27
  Metrics/ParameterLists:
23
28
  Max: 6
29
+
30
+ # module name is `ChatWork`, but I want to use `chatwork` as filename
31
+ RSpec/FilePath:
32
+ Enabled: false
33
+
34
+ RSpec/MultipleExpectations:
35
+ Enabled: false
36
+
37
+ RSpec/MultipleMemoizedHelpers:
38
+ Enabled: false
39
+
40
+ RSpec/SharedExamples:
41
+ Enabled: false
42
+
43
+ Style/KeywordParametersOrder:
44
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Change Log
2
2
  ## Unreleased
3
- [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.12.3...master)
3
+ [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v1.0.0...master)
4
+
5
+ ## v1.0.0
6
+ [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.12.3...v1.0.0)
7
+
8
+ * :bomb: **[BREAKING CHANGE]** Support faraday v2+ and drop support ruby < 2.6
9
+ * https://github.com/asonas/chatwork-ruby/pull/78
4
10
 
5
11
  ## v0.12.3
6
12
  [Full Changelog](https://github.com/asonas/chatwork-ruby/compare/v0.12.2...v0.12.3)
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in chatwork.gemspec
4
4
  gemspec
5
5
 
6
- eval_gemfile "#{__dir__}/gemfiles/common.gemfile"
6
+ # eval_gemfile "#{__dir__}/gemfiles/common.gemfile"
data/bin/console CHANGED
@@ -7,7 +7,7 @@ require "faraday_curl"
7
7
 
8
8
  Dotenv.load
9
9
 
10
- logger = Logger.new(STDOUT)
10
+ logger = Logger.new($stdout)
11
11
 
12
12
  @client = ChatWork::Client.new(api_key: ENV["CHATWORK_API_TOKEN"])
13
13
  connection = @client.instance_variable_get(:@conn)
data/chatwork.gemspec CHANGED
@@ -22,21 +22,24 @@ Gem::Specification.new do |spec|
22
22
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_dependency "faraday", ">= 0.9"
26
- spec.add_dependency "faraday_middleware"
27
- spec.add_dependency "hashie"
25
+ spec.required_ruby_version = ">= 2.6.0"
26
+
27
+ spec.add_dependency "faraday", ">= 2.0.0"
28
+ spec.add_dependency "faraday-mashify"
29
+ spec.add_dependency "faraday-multipart"
28
30
 
29
31
  spec.add_development_dependency "activesupport"
30
32
  spec.add_development_dependency "bundler", ">= 1.3"
31
33
  spec.add_development_dependency "dotenv"
32
34
  spec.add_development_dependency "faraday_curl"
33
- spec.add_development_dependency "onkcop", "0.53.0.0"
35
+ spec.add_development_dependency "onkcop", "1.0.0.0"
34
36
  spec.add_development_dependency "rake"
35
37
  spec.add_development_dependency "rspec"
36
38
  spec.add_development_dependency "rspec-its"
37
39
  spec.add_development_dependency "rspec-parameterized"
38
- spec.add_development_dependency "rubocop", "0.53.0"
39
- spec.add_development_dependency "rubocop-rspec", "1.24.0"
40
+ spec.add_development_dependency "rubocop", "1.24.1"
41
+ spec.add_development_dependency "rubocop_auto_corrector"
42
+ spec.add_development_dependency "rubocop-rspec", "2.7.0"
40
43
  spec.add_development_dependency "simplecov"
41
44
  spec.add_development_dependency "simplecov-lcov"
42
45
  spec.add_development_dependency "webmock"
@@ -3,6 +3,6 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in chatwork.gemspec
4
4
  gemspec path: "../"
5
5
 
6
- eval_gemfile "#{__dir__}/common.gemfile"
6
+ # eval_gemfile "#{__dir__}/common.gemfile"
7
7
 
8
- gem "faraday", "~> 0.9"
8
+ gem "faraday", "~> 2.0"
@@ -1,6 +1,3 @@
1
- require "faraday"
2
- require "faraday_middleware"
3
-
4
1
  module ChatWork
5
2
  class BaseClient
6
3
  include Converter
@@ -44,7 +41,7 @@ module ChatWork
44
41
  end
45
42
 
46
43
  begin
47
- response = @conn.__send__(method, @api_version + url, hash_compact(args))
44
+ response = @conn.__send__(method, @api_version + url, args.compact)
48
45
  rescue *faraday_errors => e
49
46
  raise ChatWork::APIConnectionError.faraday_error(e)
50
47
  end
@@ -21,8 +21,7 @@ module ChatWork
21
21
  APIConnectionError.new("Invalid response #{body.to_hash} (status: #{status})")
22
22
  end
23
23
 
24
- attr_reader :status
25
- attr_reader :error_response
24
+ attr_reader :status, :error_response
26
25
 
27
26
  def initialize(message, status = nil, error_response = nil)
28
27
  @status = status
@@ -69,10 +68,10 @@ module ChatWork
69
68
  end
70
69
 
71
70
  def self.from_www_authenticate(www_authenticate:, status:, error_response:)
72
- www_authenticate =~ /error="([^\"]+)"/
71
+ www_authenticate =~ /error="([^"]+)"/
73
72
  error = Regexp.last_match(1)
74
73
 
75
- www_authenticate =~ /error_description="([^\"]+)"/
74
+ www_authenticate =~ /error_description="([^"]+)"/
76
75
  error_description = Regexp.last_match(1)
77
76
 
78
77
  AuthenticateError.new(
@@ -65,8 +65,8 @@ module ChatWork::Client::TaskMethods
65
65
  # }
66
66
  def create_task(room_id:, body:, to_ids:, limit: nil, limit_type: nil, &block)
67
67
  params = {
68
- body: body,
69
- to_ids: Array(to_ids).join(","),
68
+ body: body,
69
+ to_ids: Array(to_ids).join(","),
70
70
  limit_type: limit_type,
71
71
  }
72
72
  params[:limit] = limit.to_i if limit
@@ -1,9 +1,5 @@
1
1
  module ChatWork
2
2
  module Converter
3
- def hash_compact(hash)
4
- hash.reject {|_k, v| v.nil? }
5
- end
6
-
7
3
  def boolean_to_integer(value)
8
4
  case value
9
5
  when true
@@ -1,5 +1,5 @@
1
1
  module ChatWork
2
- class Multipart < ::Faraday::Request::Multipart
2
+ class Multipart < ::Faraday::Multipart::Middleware
3
3
  self.mime_type = "multipart/form-data".freeze
4
4
 
5
5
  def create_multipart(env, params)
@@ -17,7 +17,7 @@ module ChatWork
17
17
  end
18
18
 
19
19
  class EpiloguePart < ::Faraday::Parts::EpiloguePart
20
- def initialize(boundary)
20
+ def initialize(boundary) # rubocop:disable Lint/MissingSuper
21
21
  # NOTE: ChatWork doesn't accepts ending "\r\n\r\n" of payload...
22
22
  # @part = "--#{boundary}--\r\n\r\n"
23
23
  @part = "--#{boundary}--\r\n"
@@ -1,3 +1,3 @@
1
1
  module ChatWork
2
- VERSION = "0.12.3".freeze
2
+ VERSION = "1.0.0".freeze
3
3
  end
data/lib/chatwork.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require "chatwork/version"
2
2
  require "hashie"
3
3
  require "faraday"
4
+ require "faraday/mashify"
5
+ require "faraday/multipart"
4
6
 
5
7
  module ChatWork
6
8
  autoload :BaseClient, "chatwork/base_client"
@@ -34,7 +36,7 @@ module ChatWork
34
36
  @client_secret = nil
35
37
 
36
38
  Faraday::Request.register_middleware(
37
- chatwork_multipart: -> { ChatWork::Multipart },
39
+ chatwork_multipart: ChatWork::Multipart,
38
40
  )
39
41
 
40
42
  class << self
@@ -13,7 +13,7 @@ describe ChatWork::OAuthClient::TokenMethods do
13
13
  context "when successful" do
14
14
  before do
15
15
  stub_request(:post, "https://oauth.chatwork.com/token").
16
- with(body: { "grant_type" => "refresh_token", "refresh_token" => refresh_token },
16
+ with(body: { "grant_type" => "refresh_token", "refresh_token" => refresh_token },
17
17
  headers: { "Authorization" => "Basic #{signature}", "Content-Type" => "application/x-www-form-urlencoded" }).
18
18
  to_return(status: 200, body: token.to_json, headers: { "Content-Type" => "application/json" })
19
19
  end
@@ -38,7 +38,7 @@ describe ChatWork::OAuthClient::TokenMethods do
38
38
  context "when failure" do
39
39
  before do
40
40
  stub_request(:post, "https://oauth.chatwork.com/token").
41
- with(body: { "grant_type" => "refresh_token", "refresh_token" => refresh_token },
41
+ with(body: { "grant_type" => "refresh_token", "refresh_token" => refresh_token },
42
42
  headers: { "Authorization" => "Basic #{signature}", "Content-Type" => "application/x-www-form-urlencoded" }).
43
43
  to_return(status: 401, body: body.to_json, headers: { "Content-Type" => "application/json" })
44
44
  end
@@ -14,6 +14,7 @@ describe ChatWork do
14
14
 
15
15
  it { should eq("https://api.chatwork.com/") }
16
16
  end
17
+
17
18
  describe "#api_base=" do
18
19
  before { ChatWork.api_base = "https://test.example.com/" }
19
20
 
@@ -22,12 +23,6 @@ describe ChatWork do
22
23
 
23
24
  it { should eq("https://test.example.com/") }
24
25
  end
25
-
26
- describe "#api_base" do
27
- subject { super().api_base }
28
-
29
- it { should eq("https://test.example.com/") }
30
- end
31
26
  end
32
27
 
33
28
  describe "#api_key" do
@@ -42,6 +37,7 @@ describe ChatWork do
42
37
 
43
38
  let(:test_token) { "chatwork_test_token" }
44
39
  before { ENV["CHATWORK_API_TOKEN"] = test_token }
40
+
45
41
  it { is_expected.to eq test_token }
46
42
  end
47
43
  end
@@ -58,6 +54,7 @@ describe ChatWork do
58
54
 
59
55
  let(:test_token) { "chatwork_test_token" }
60
56
  before { ENV["CHATWORK_ACCESS_TOKEN"] = test_token }
57
+
61
58
  it { is_expected.to eq test_token }
62
59
  end
63
60
  end
data/spec/spec_helper.rb CHANGED
@@ -26,10 +26,10 @@ require "active_support/all"
26
26
 
27
27
  begin
28
28
  require "backport_dig"
29
- rescue LoadError # rubocop:disable Lint/HandleExceptions
29
+ rescue LoadError # rubocop:disable Lint/SuppressedException
30
30
  end
31
31
 
32
- Dir["#{__dir__}/support/**/*.rb"].each {|f| require f }
32
+ Dir["#{__dir__}/support/**/*.rb"].sort.each {|f| require f }
33
33
 
34
34
  def spec_dir
35
35
  Pathname(__dir__)
@@ -4,10 +4,10 @@ RSpec.shared_context :api_context, type: :api do
4
4
 
5
5
  let(:response_headers) do
6
6
  {
7
- "Content-Type" => "application/json",
8
- "X-RateLimit-Limit" => ratelimit_limit,
7
+ "Content-Type" => "application/json",
8
+ "X-RateLimit-Limit" => ratelimit_limit,
9
9
  "X-RateLimit-Remaining" => ratelimit_remaining,
10
- "X-RateLimit-Reset" => ratelimit_reset,
10
+ "X-RateLimit-Reset" => ratelimit_reset,
11
11
  }
12
12
  end
13
13
 
@@ -30,7 +30,7 @@ RSpec.shared_context :api_context, type: :api do
30
30
  unless query_example.empty?
31
31
  case expected_verb
32
32
  when :get, :delete
33
- query_string = "?" + query_example.to_query
33
+ query_string = "?#{query_example.to_query}"
34
34
  when :post, :put
35
35
  request_options[:headers]["Content-Type"] = "application/x-www-form-urlencoded"
36
36
  request_options[:body] = query_example.transform_values(&:to_s)
@@ -33,7 +33,7 @@ module RamlParser
33
33
  nil
34
34
  end
35
35
 
36
- def self.find_query_parameter_example(verb, path)
36
+ def self.find_query_parameter_example(verb, path) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
37
37
  resource = find_resource(verb, path)
38
38
  return {} unless resource
39
39
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chatwork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - asonas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-11-19 00:00:00.000000000 Z
12
+ date: 2022-01-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -17,16 +17,16 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '0.9'
20
+ version: 2.0.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '0.9'
27
+ version: 2.0.0
28
28
  - !ruby/object:Gem::Dependency
29
- name: faraday_middleware
29
+ name: faraday-mashify
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
@@ -40,7 +40,7 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: hashie
43
+ name: faraday-multipart
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
@@ -115,14 +115,14 @@ dependencies:
115
115
  requirements:
116
116
  - - '='
117
117
  - !ruby/object:Gem::Version
118
- version: 0.53.0.0
118
+ version: 1.0.0.0
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
123
  - - '='
124
124
  - !ruby/object:Gem::Version
125
- version: 0.53.0.0
125
+ version: 1.0.0.0
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rake
128
128
  requirement: !ruby/object:Gem::Requirement
@@ -185,28 +185,42 @@ dependencies:
185
185
  requirements:
186
186
  - - '='
187
187
  - !ruby/object:Gem::Version
188
- version: 0.53.0
188
+ version: 1.24.1
189
189
  type: :development
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
193
  - - '='
194
194
  - !ruby/object:Gem::Version
195
- version: 0.53.0
195
+ version: 1.24.1
196
+ - !ruby/object:Gem::Dependency
197
+ name: rubocop_auto_corrector
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
196
210
  - !ruby/object:Gem::Dependency
197
211
  name: rubocop-rspec
198
212
  requirement: !ruby/object:Gem::Requirement
199
213
  requirements:
200
214
  - - '='
201
215
  - !ruby/object:Gem::Version
202
- version: 1.24.0
216
+ version: 2.7.0
203
217
  type: :development
204
218
  prerelease: false
205
219
  version_requirements: !ruby/object:Gem::Requirement
206
220
  requirements:
207
221
  - - '='
208
222
  - !ruby/object:Gem::Version
209
- version: 1.24.0
223
+ version: 2.7.0
210
224
  - !ruby/object:Gem::Dependency
211
225
  name: simplecov
212
226
  requirement: !ruby/object:Gem::Requirement
@@ -285,9 +299,7 @@ files:
285
299
  - Rakefile
286
300
  - bin/console
287
301
  - chatwork.gemspec
288
- - gemfiles/common.gemfile
289
- - gemfiles/faraday_0.gemfile
290
- - gemfiles/faraday_1.gemfile
302
+ - gemfiles/faraday_2.gemfile
291
303
  - lib/chatwork.rb
292
304
  - lib/chatwork/base_client.rb
293
305
  - lib/chatwork/chatwork_error.rb
@@ -371,14 +383,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
371
383
  requirements:
372
384
  - - ">="
373
385
  - !ruby/object:Gem::Version
374
- version: '0'
386
+ version: 2.6.0
375
387
  required_rubygems_version: !ruby/object:Gem::Requirement
376
388
  requirements:
377
389
  - - ">="
378
390
  - !ruby/object:Gem::Version
379
391
  version: '0'
380
392
  requirements: []
381
- rubygems_version: 3.2.22
393
+ rubygems_version: 3.3.3
382
394
  signing_key:
383
395
  specification_version: 4
384
396
  summary: Ruby bindings of ChatWork API
@@ -1,18 +0,0 @@
1
- if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.3.0")
2
- group :test do
3
- gem "backport_dig", group: :development
4
- end
5
- end
6
-
7
- if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.2.2")
8
- group :test do
9
- gem "activesupport", "< 5.0.0", group: :development
10
- end
11
- end
12
-
13
- if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.5.0")
14
- group :test do
15
- # NOTE: unparser v0.3.0+ requires Ruby 2.5+
16
- gem "unparser", "< 0.3.0"
17
- end
18
- end
@@ -1,8 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in chatwork.gemspec
4
- gemspec path: "../"
5
-
6
- eval_gemfile "#{__dir__}/common.gemfile"
7
-
8
- gem "faraday", "~> 1.0"