Sha256: 15b73478f37fc470120b77095fa1741ae9a99e2455fed85160a227ce3c123518

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

module ActiveMerchant
  module Fulfillment
    class Service

      include RequiresParameters
      include PostsData

      cattr_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

2 entries across 2 versions & 1 rubygems

Version Path
active_fulfillment-2.1.9 lib/active_fulfillment/fulfillment/service.rb
active_fulfillment-2.1.8 lib/active_fulfillment/fulfillment/service.rb