Sha256: 447bdaf6161b46ee683102cdeb40c862c499172f39c58f8dae9cd8201da2c160

Contents?: true

Size: 1.3 KB

Versions: 3

Compression:

Stored size: 1.3 KB

Contents

require 'openssl'

module Replyr
  class BounceAddress
    include AddressBuilder
    
    attr_accessor :model
    
    # Create a new reply address from a given user and model
    #
    def initialize(model)
      @model = model
    end
    
    # Create a reply address from a given address string
    # Checks for validity of address and raises an ArgumentError
    # if it's invalid.
    #
    def self.new_from_address(address)
      parts = AddressBuilder.get_parsed_address(address)

      model_class = AddressBuilder.class_from_normalized_model_name(parts[:model_name])
      model = model_class.find(parts[:model_id])

      address = new(model)
      address.ensure_valid_token!(parts[:token])
      address
    rescue
      Replyr.logger.warn "Bounce email address invalid."
      nil
    end
    
    # Returs the token from this address
    #
    def token
      create_token(@model)
    end

    # Returns the address string
    # (e.g bounce-newsletter-12-01ce26dc69094af9246ea7e7ce9970aff2b81cc9@bounce.example.com)
    #
    def address
      model_id = id_from_model(@model)
      model_name = normalized_model_name(@model)

      local_part = [Replyr.config.bounce_prefix, model_name, model_id, token].join("-")
      "#{local_part}@#{Replyr.config.bounce_host}"
    end
    alias_method :to_s, :address

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
replyr-0.1.0 lib/replyr/bounce_address.rb
replyr-0.0.9 lib/replyr/bounce_address.rb
replyr-0.0.8 lib/replyr/bounce_address.rb