Report abuse


			
require 'soap/wsdlDriver'
require 'cgi'

class SpamCannon
  class << self
    attr_accessor :wsdl, :logging, :client

    def newsletters
      return @newsletters if @newsletters
      @newsletters = client.getNewsletters.inject({}) do |hash, letter|
        hash.merge(letter.list_id => letter)
      end
    end

    def create_user(email, vitals, subscriptions = [])
      client.createUser(email, vitals, subscriptions)
    end

    def update_user(email, vitals, subscriptions = [], unsubscriptions = [])
      client.updateUser(email, vitals, subscriptions, unsubscriptions)
    end

    def get_user(email)
      client.getUser(email)
    end

    def user_exists?(email)
      client.doesUserExist(email)
    end

    def client
      @logging ? client_with_logging : client_without_logging
    end

  private
    def client_without_logging
      @client ||= SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
    end

    def client_with_logging
      returning(client_without_logging) { |c| c.wiredump_file_base = 'soap.txt' }
    end
  end
end

SpamCannon.wsdl = 'http://soap.newsletters.website.com:9631/services/SCC?wsdl'