Sha256: 7a2eec987bb076dd5307160eb373801ae9b3ab5c74ece7c48c8ac911e86cfb88

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

module Dashamail
  # Mailing list representation class
  class List < Model
    attr_reader :raw

    FIELDS = [
      :id,
      :state,
      :count_active,
      :count_all,
      :name,
      :description,
      :company,
      :abuse_name,
      :phone,
      :address,
      :city,
      :url
    ]

    FIELDS.each do |f|
      attr_reader f
    end

    # Initialize new list instance
    #
    # @param connection [Pachkin::Connection] Active connection
    # @param doc [Hash] API object data
    def initialize(connection, doc)
      super(connection, doc)
      FIELDS.each do |field|
        instance_variable_set :"@#{field}", doc[field.to_s]
      end
    end

    # Invokes 'lists.get_members' API method to retreive list members
    #
    # @param params [Hash] Params to be passed
    # @return [Array] Array of Dashamail::Members instances
    def get_members(params = {})
      connection.call_method('lists.get_members', params.merge(id_params)).map {|member| Dashamail::Member.new(connection, member)}
    end

    # Alias to get_members
    #
    alias_method :members, :get_members

    # Invokes 'lists.add_memner' method
    #
    # @param params [Hash] Params to be passed
    # @return [Dashamail::Member] New member instance
    def add_member(params)
      added = connection.call_method('lists.add_member', params.merge(id_params))
      get_members(added).first
    end

    # Invokes 'lists.unsubscribe_member' API method
    #
    # @param params [Hash] Params to be passed
    # @return [Fixnum] Count of unsubscribed members
    def unsubscribe_member(params)
      connection.call_method('lists.unsubscribe_member', params.merge(id_params))['unsubscribed']
    end

    private

    def id_params
      {list_id: id}
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
DashaMailRb-0.1.0 lib/dashamailrb/list.rb