Sha256: 4dbd526cf8141f21430c14d13fa1719c0f1c54921105606b47d7d30bd483f795

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

module ActiveMerchant
  module Fulfillment
    class Service

      include RequiresParameters
      include PostsData

      attr_accessor :logger

      def initialize(options = {})
        check_test_mode(options)

        @options = {}
        @options.update(options)
      end

      def test_mode?
        false
      end

      def test?
        @options[:test] || Base.mode == :test
      end

      def valid_credentials?
        true
      end

      # API Requirements for Implementors
      def fulfill(order_id, shipping_address, line_items, options = {})
        raise NotImplementedError.new("Subclasses must implement")
      end

      def fetch_stock_levels(options = {})
        raise NotImplementedError.new("Subclasses must implement")
      end

      def fetch_tracking_numbers(order_ids, options = {})
        response = fetch_tracking_data(order_ids, options)
        response.params.delete('tracking_companies')
        response.params.delete('tracking_urls')
        response
      end

      def fetch_tracking_data(order_ids, options = {})
        raise NotImplementedError.new("Subclasses must implement")
      end

      private

      def check_test_mode(options)
        if options[:test] and not test_mode?
          raise ArgumentError, 'Test mode is not supported by this gateway'
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_fulfillment-2.1.7 lib/active_fulfillment/fulfillment/service.rb