Sha256: 644feeb86f06cf4d9f0a325585569be44714c7d273c42c7f631388ee019995b5

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

module ActiveMerchant
  module Fulfillment
    class Service

      include RequiresParameters
      include PostsData
      
      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

      # 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_stock_levels(options = {})
        raise NotImplementedError.new("Subclasses must implement")
      end

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

      def valid_credentials?
        raise NotImplementedError.new("Subclasses must implement")
      end

      def test_mode?
        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.0.2 lib/active_fulfillment/fulfillment/service.rb
active_fulfillment-2.0.1 lib/active_fulfillment/fulfillment/service.rb