# frozen_string_literal: true

module SolidusEasypost
  module Calculator
    class BaseDimensionCalculator
      def compute(resource)
        case resource
        when ::SolidusEasypost::ReturnAuthorization
          compute_for_return_authorization(resource)
        when ::Spree::Stock::Package
          compute_for_package(resource)
        else
          raise SolidusEasypost::Errors::UnknownPartialResourceError
        end
      end

      protected

      def compute_for_return_authorization(return_authorization)
        raise NotImplementedError
      end

      def compute_for_package(package)
        raise NotImplementedError
      end
    end
  end
end