Sha256: 29e652ce0702887d6dc86257fda55c18bd919b15333fc92fcdd301111dbd24e4

Contents?: true

Size: 1.63 KB

Versions: 3

Compression:

Stored size: 1.63 KB

Contents

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

    ACCESS_LEVELS = ["readonly", "members", "everyone"]

    attr_accessor :address,
                  :name,
                  :description,
                  :access_level,
                  :created_at,
                  :members_count

    validates :address, presence: true
    validates_format_of :address, :with => /@/
    validates :access_level,  inclusion: { in: ACCESS_LEVELS, messages: "unknown access level type" }
    validates :members_count, :numericality => { :greater_than_or_equal_to => 0 }, allow_blank: true

    def id
      Base64.urlsafe_encode64(address)
    end

    def members
      json = Mailgun().list_members(address).list
      Member.parse(json, self)
    end

    # CRUD operations

    def self.all
      json = Mailgun().lists.list
      @lists = parse(json)
    end

    def self.add(address, params)
      p '######'
      p params
      List.new(params)
      Mailgun().lists.create(address, params)
    end

    def self.find(id)
      address = Base64.urlsafe_decode64(id)
      hash = Mailgun().lists.find(address)["list"]
      List.new(hash)
    end

    def self.destroy(id)
      address = Base64.urlsafe_decode64(id)
      Mailgun().lists.delete(address)
    end

    def update(list_params)
      hash = Mailgun().lists.update(address, list_params["address"], list_params)["list"]
      List.new(hash)
    end

    def initialize(params = {})
      super(params)
      raise self.errors.messages.to_s if self.invalid?
    end

    private

    def self.parse(hash)
      hash.map { |list| List.new(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/List.rb
mailgun_list_manager-0.0.2 app/models/mailgun_list_manager/List.rb
mailgun_list_manager-0.0.1 app/models/mailgun_list_manager/List.rb