Sha256: 7a9dc766ee09264da8464ec5ecce0fdebfe99d748efd889f9786f94f3a059b27

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

module AffiliateWindow
  class Account
    attr_reader :user, :api_password, :api_key, :datafeed_password, :format, :compression

    VALID_FORMATS = %w{CSV} # XML not yet supported.

    # Unzipping is not supported for portability, but you can specify it to download a zipped file.
    # CSV helper methods won't work with zipped downloads.
    VALID_COMPRESSIONS = %w{none zip}

    def initialize(options)
      @user ||= options[:user] || raise(ArgumentError, ":user option is required.")
      @api_password ||= options[:api_password] || raise(ArgumentError, ":api_password option is required.")
      @api_key ||= options[:api_key] || raise(ArgumentError, ":api_key option is required.")
      @datafeed_password ||= options[:datafeed_password] || raise(ArgumentError, ":datafeed_password option is required.")
      self.format = options[:format] || VALID_FORMATS.first
      self.compression = options[:compression] || VALID_COMPRESSIONS.first
    end

    def format=(value)
      value = value.upcase.to_s
      raise ArgumentError, "Invalid format #{value} - use #{VALID_FORMATS.join(', ')}." unless VALID_FORMATS.include?(value)
      @format = value
    end

    def compression=(value)
      value = value.downcase.to_s
      raise ArgumentError, "Invalid compression #{value} - use #{VALID_COMPRESSIONS.join(', ')}." unless VALID_COMPRESSIONS.include?(value)
      @compression = value
    end

    def compression_parameter
      @compression == 'none' ? '' : @compression
    end

    def attributes
      {
        :user => user,
        :api_password => api_password,
        :api_key => api_key,
        :datafeed_password => datafeed_password,
        :format => format,
        :compression => compression
      }
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
affiliate-window-0.2.1.pre1 lib/affiliate-window/account.rb