Sha256: 71b5fcf5bab7f414a18012ded5a5fd688da76b9d2320446445118887c9c19976

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

module MailgunListManager
  class Member
    include ActiveModel::Model
    require "base64"

    attr_accessor :address,
                  :name,
                  :subscribed,
                  :vars,
                  :list

    validates :address, presence: true
    validates_format_of :address, :with => /@/
    validates :subscribed, inclusion: { in: [true, false], messages: "must be true or false" }, allow_blank: true

    def initialize(attributes = {}, list)
      super(attributes)
      raise errors.messages.to_s if self.invalid?
      @list = list
    end

    def id
      Base64.urlsafe_encode64(address)
    end

    # CRUD operations

    def self.add(list_id, address)
      list_address = Base64.urlsafe_decode64(list_id)
      Mailgun().list_members(list_address).add(address)
    end

    def self.delete(list_id, id)
      list_address = Base64.urlsafe_decode64(list_id)
      address = Base64.urlsafe_decode64(id)
      Mailgun().list_members(list_address).remove(address)
    end

    private

    def self.parse(hash, list)
      hash.map { |member| Member.new(member, list)  }
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mailgun_list_manager-0.0.3 app/models/mailgun_list_manager/Member.rb
mailgun_list_manager-0.0.2 app/models/mailgun_list_manager/Member.rb
mailgun_list_manager-0.0.1 app/models/mailgun_list_manager/Member.rb