diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d18e31b6..22b8c6e4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - rubyversion: ['2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4'] + rubyversion: ['2.7', '3.0', '3.1', '3.2', '3.3', '3.4'] steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 690f88e7..520b2edd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # CHANGELOG -## Next Release (minor) +## Next Release - Adds Ruby 3.4 support - Fixes error parsing @@ -8,7 +8,11 @@ - Corrects available properties of an `EasyPostError` and `ApiError` (`code` and `field` removed from `EasyPostError`, `message` unfurled and explicitly added to `ApiError`) - Removes unused `Error` model - Corrects the HTTP verb for updating a brand from `GET` to `PATCH` -- Removes the deprecated `create_list` tracker endpoint function as it is no longer available via API +- Removes deprecated `create_list` tracker endpoint function as it is no longer available via API +- Removes deprecated `user.all_api_keys` and `user.api_keys`, use `api_key.all` and `api_key.retrieve_api_keys_for_user` respectively +- Removes unmaintained and undocumented `irb` +- Removes unused `Rakefile` +- Bumps all dev dependencies ## v6.4.1 (2024-08-09) diff --git a/Makefile b/Makefile index 2b0a19b2..a315b82d 100644 --- a/Makefile +++ b/Makefile @@ -13,8 +13,7 @@ clean: rm -rf coverage doc *.gem dist ## coverage - Generate a test coverage report -coverage: - make test +coverage: test ## docs - Generate documentation for the library docs: diff --git a/Rakefile b/Rakefile deleted file mode 100644 index 7398a900..00000000 --- a/Rakefile +++ /dev/null @@ -1,3 +0,0 @@ -# frozen_string_literal: true - -require 'bundler/gem_tasks' diff --git a/bin/easypost-irb b/bin/easypost-irb deleted file mode 100755 index 6793f932..00000000 --- a/bin/easypost-irb +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb' - -libs = ' -r irb/completion' -libs << " -r #{"#{File.dirname(__FILE__)}/../lib/easypost"}" -puts 'Initializing EasyPost...' -exec "#{irb} #{libs} --simple-prompt" diff --git a/easypost.gemspec b/easypost.gemspec index 8397a057..810e3d84 100644 --- a/easypost.gemspec +++ b/easypost.gemspec @@ -17,26 +17,23 @@ Gem::Specification.new do |spec| spec.files = `git ls-files -z`.split("\x0").reject do |f| f.match(%r{^(docs|examples|spec)/}) end - spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.require_paths = ['lib'] - spec.required_ruby_version = '>= 2.6' + spec.required_ruby_version = '>= 2.7' spec.add_development_dependency 'abbrev', '~> 0.1' spec.add_development_dependency 'benchmark', '~> 0.4' spec.add_development_dependency 'bigdecimal', '~> 3' - spec.add_development_dependency 'brakeman', '~> 5.4' - spec.add_development_dependency 'faraday', '~> 2.7.5' # used for integration tests + spec.add_development_dependency 'brakeman', '~> 5.4' # can't upgrade to 6.x, requires Ruby 3.0 + spec.add_development_dependency 'faraday', '~> 2.8' # can't upgrade to 2.9, requires Ruby 3.0 spec.add_development_dependency 'logger', '~> 1' spec.add_development_dependency 'ostruct', '~> 0.6' - spec.add_development_dependency 'pry', '~> 0.14' - spec.add_development_dependency 'rake', '~> 13.0' - spec.add_development_dependency 'rdoc', '~> 6.9' - spec.add_development_dependency 'rspec', '~> 3.12' - spec.add_development_dependency 'rubocop', '~> 1.49' - spec.add_development_dependency 'rubocop-rspec', '2.19' # pin to 2.19 because latest version doesn't support Ruby 2.6 + spec.add_development_dependency 'rdoc', '~> 6.12' + spec.add_development_dependency 'rspec', '~> 3.13' + spec.add_development_dependency 'rubocop', '= 1.73' + spec.add_development_dependency 'rubocop-rspec', '2.31' # can't upgrade to 3.0, requires easycop config changes spec.add_development_dependency 'simplecov', '~> 0.22' spec.add_development_dependency 'simplecov-lcov', '~> 0.8' - spec.add_development_dependency 'typhoeus', '~> 1.4.0' # used for integration tests - spec.add_development_dependency 'vcr', '~> 6.1' - spec.add_development_dependency 'webmock', '~> 3.18' + spec.add_development_dependency 'typhoeus', '~> 1.4' + spec.add_development_dependency 'vcr', '~> 6.3' + spec.add_development_dependency 'webmock', '~> 3.25' end diff --git a/examples b/examples index 7669825f..29493728 160000 --- a/examples +++ b/examples @@ -1 +1 @@ -Subproject commit 7669825fb53be074d7f585c78c4f38ad4fefe0d0 +Subproject commit 2949372817661e824d9f85903678fb14fffa7835 diff --git a/lib/easypost/services/report.rb b/lib/easypost/services/report.rb index 450ac476..4fcd0e52 100644 --- a/lib/easypost/services/report.rb +++ b/lib/easypost/services/report.rb @@ -6,7 +6,7 @@ class EasyPost::Services::Report < EasyPost::Services::Service # Create a Report def create(params = {}) unless params[:type] - raise ArgumentError, "Missing 'type' parameter in params" # TODO: replace the error in the error-handling overhaul PR + raise EasyPost::Errors::MISSING_REQUIRED_PARAMETER.new('type') end type = params.delete(:type) @@ -26,7 +26,7 @@ def retrieve(id) # Retrieve all Report objects def all(params = {}) unless params[:type] - raise ArgumentError, "Missing 'type' parameter in params" # TODO: replace the error in the error-handling overhaul PR + raise EasyPost::Errors::MISSING_REQUIRED_PARAMETER.new('type') end type = params.delete(:type) diff --git a/lib/easypost/services/user.rb b/lib/easypost/services/user.rb index 063643cc..9a850053 100644 --- a/lib/easypost/services/user.rb +++ b/lib/easypost/services/user.rb @@ -39,38 +39,6 @@ def delete(id) true end - # Retrieve a list of all ApiKey objects. - def all_api_keys - warn '[DEPRECATION] `all_api_keys` is deprecated. Please use `all` in the `api_key` service instead.' - response = @client.make_request(:get, 'api_keys') - - EasyPost::InternalUtilities::Json.convert_json_to_object(response, EasyPost::Models::ApiKey) - end - - # Retrieve a list of ApiKey objects (works for the authenticated user or a child user). - def api_keys(id) - warn '[DEPRECATION] `api_keys` is deprecated. -Please use `retrieve_api_keys_for_user` in the `api_key` service instead.' - - api_keys = all_api_keys - - if api_keys.id == id - # This function was called on the authenticated user - my_api_keys = api_keys.keys - else - # This function was called on a child user (authenticated as parent, only return this child user's details). - my_api_keys = [] - api_keys.children.each do |child| - if child.id == id - my_api_keys = child.keys - break - end - end - end - - my_api_keys - end - # Update the Brand of a User. def update_brand(id, params = {}) wrapped_params = { brand: params } diff --git a/spec/address_spec.rb b/spec/address_spec.rb index e7b81f03..c27912d4 100644 --- a/spec/address_spec.rb +++ b/spec/address_spec.rb @@ -31,8 +31,7 @@ # Delivery verification assertions expect(address.verifications.delivery.success).to be false - # TODO: details is not deserializing correctly, related to the larger "double EasyPostObject" wrapping issue - # expect(address.verifications.delivery.details).to be_empty + expect(address.verifications.delivery.details.to_hash).to be_empty expect(address.verifications.delivery.errors[0].code).to eq('E.ADDRESS.NOT_FOUND') expect(address.verifications.delivery.errors[0].field).to eq('address') expect(address.verifications.delivery.errors[0].suggestion).to be nil