Class: Zm::Client::DistributionList

Inherits:
Base::AdminObject show all
Defined in:
lib/zm/client/distributionlist/distributionlist.rb

Overview

objectClass: zimbraDistributionList

Instance Attribute Summary collapse

Attributes inherited from Base::Object

#grantee_type, #id, #name, #parent, #token

Instance Method Summary collapse

Methods inherited from Base::AdminObject

#soap_account_connector, #soap_admin_connector

Methods inherited from Base::Object

#arrow_name, #clone, #concat, #convert_json_string_value, #instance_variables_array, #instance_variables_hash, #recorded?, #save!, #to_s

Constructor Details

#initialize(parent) ⇒ DistributionList

Returns a new instance of DistributionList.



11
12
13
14
15
16
17
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 11

def initialize(parent)
  extend(DistributionListCommon)
  super(parent)
  @members = []
  @owners = []
  @grantee_type = 'grp'.freeze
end

Instance Attribute Details

#membersObject

Returns the value of attribute members.



8
9
10
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 8

def members
  @members
end

#ownersObject (readonly)

Returns the value of attribute owners.



9
10
11
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 9

def owners
  @owners
end

Instance Method Details

#add_alias!(email) ⇒ Object



73
74
75
76
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 73

def add_alias!(email)
  sac.add_distribution_list_alias(@id, email)
  aliases.push(email)
end

#add_members!(*emails) ⇒ Object



92
93
94
95
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 92

def add_members!(*emails)
  sac.add_distribution_list_members(@id, emails)
  @members += emails
end

#aliasesObject



69
70
71
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 69

def aliases
  @aliases ||= []
end

#all_instance_variable_keysObject



25
26
27
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 25

def all_instance_variable_keys
  DistributionListCommon::ALL_ATTRS
end

#create!Object



40
41
42
43
44
45
46
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 40

def create!
  rep = sac.create_distribution_list(
    @name,
    instance_variables_array(attrs_write)
  )
  @id = rep[:Body][:CreateDistributionListResponse][:dl].first[:id]
end

#delete!Object



88
89
90
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 88

def delete!
  sac.delete_distribution_list(@id)
end

#init_from_json(json) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 29

def init_from_json(json)
  # puts json
  # @members = json[:a].select { |a| a[:n] == 'zimbraMailForwardingAddress' }.map { |a| a[:_content] }.compact
  @members = json[:dlm].map { |a| a[:_content] }.compact if json[:dlm].is_a?(Array)
  @owners = json[:owners].first[:owner].map { |a| a[:name] }.compact if json[:owners].is_a?(Array)
  super(json)
  @zimbraMailAlias = [@zimbraMailAlias].compact unless @zimbraMailAlias.is_a?(Array)
  @zimbraMailAlias.delete(@name)
  @aliases = @zimbraMailAlias
end

#is_external_transport?Boolean

Returns:

  • (Boolean)


118
119
120
121
122
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 118

def is_external_transport?
  return nil unless zimbraMailTransport

  zimbraMailTransport.start_with?('smtp')
end

#is_local_transport?Boolean

Returns:

  • (Boolean)


112
113
114
115
116
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 112

def is_local_transport?
  return nil unless zimbraMailTransport

  zimbraMailTransport.start_with?('lmtp')
end

#local_transportObject



102
103
104
105
106
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 102

def local_transport
  raise Zm::Client::SoapError, 'zimbraMailHost is null' if zimbraMailHost.nil?

  "lmtp:#{zimbraMailHost}:7025"
end

#local_transport!Object



108
109
110
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 108

def local_transport!
  update!(zimbraMailTransport: local_transport)
end

#modify!Object



48
49
50
51
52
53
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 48

def modify!
  attrs_to_modify = instance_variables_array(attrs_write)
  return if attrs_to_modify.empty?

  sac.modify_distribution_list(@id, attrs_to_modify)
end

#remove_alias!(email) ⇒ Object



78
79
80
81
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 78

def remove_alias!(email)
  sac.remove_distribution_list_alias(@id, email)
  aliases.delete(email)
end

#remove_members!(*emails) ⇒ Object



97
98
99
100
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 97

def remove_members!(*emails)
  sac.remove_distribution_list_members(@id, emails)
  @members -= emails
end

#rename!(email) ⇒ Object



83
84
85
86
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 83

def rename!(email)
  sac.rename_distribution_list(@id, email)
  @name = email
end

#to_hObject



19
20
21
22
23
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 19

def to_h
  hashmap = Hash[all_instance_variable_keys.map { |key| [key, instance_variable_get(arrow_name(key))] }]
  hashmap.delete_if { |_, v| v.nil? }
  hashmap
end

#update!(hash) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/zm/client/distributionlist/distributionlist.rb', line 55

def update!(hash)
  sac.modify_distribution_list(@id, hash)

  hash.each do |k, v|
    arrow_attr_sym = "@#{k}".to_sym

    if v.respond_to?(:empty?) && v.empty?
      self.remove_instance_variable(arrow_attr_sym) if self.instance_variable_get(arrow_attr_sym)
    else
      self.instance_variable_set(arrow_attr_sym, v)
    end
  end
end