Class: GetResponse::Contact

Inherits:
Object
  • Object
show all
Defined in:
lib/get_response/contact.rb

Overview

GetResponse contact

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, connection) ⇒ Contact

Returns a new instance of Contact.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/get_response/contact.rb', line 9

def initialize(params, connection)
  @campaign = params["campaign"]
  @name = params["name"]
  @email = params["email"]
  @cycle_day = params["cycle_day"]
  @ip = params["ip"]
  @customs = parse_customs(params["customs"])
  @id = params["id"]
  @created_on = params["created_on"]
  @deleted_on = params["deleted_on"]
  @reason = params["reason"]
  @connection = connection
  @duplicated = false
end

Instance Attribute Details

#campaignObject

Returns the value of attribute campaign.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def campaign
  @campaign
end

#created_onObject

Returns the value of attribute created_on.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def created_on
  @created_on
end

#customsObject

Get list of custom attributes. It performs additional API request to fetch attributes. By default new contacts has en empty custom attributes list.

returns

Hash



117
118
119
# File 'lib/get_response/contact.rb', line 117

def customs
  @customs
end

#cycle_dayObject

Returns the value of attribute cycle_day.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def cycle_day
  @cycle_day
end

#deleted_onObject

Returns the value of attribute deleted_on.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def deleted_on
  @deleted_on
end

#duplicatedObject

Returns the value of attribute duplicated.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def duplicated
  @duplicated
end

#emailObject

Returns the value of attribute email.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def email
  @email
end

#idObject (readonly)

Returns the value of attribute id.



6
7
8
# File 'lib/get_response/contact.rb', line 6

def id
  @id
end

#ipObject

Returns the value of attribute ip.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def ip
  @ip
end

#nameObject

Returns the value of attribute name.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def name
  @name
end

#reasonObject

Returns the value of attribute reason.



5
6
7
# File 'lib/get_response/contact.rb', line 5

def reason
  @reason
end

Instance Method Details

#attributesObject

Returns setted attributes as Hash.

returns

Hash



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/get_response/contact.rb', line 39

def attributes
  attrs = {
    "campaign" => @campaign,
    "email" => @email
  }

  attrs["ip"] = @ip if @ip
  attrs["cycle_day"] = @cycle_day if @cycle_day
  attrs["customs"] = @customs if @customs
  attrs["name"] = @name if @name

  attrs
end

#destroyObject

Delete contact. If deleting contact was successfull method returns true. If contact object hasn’t id attribute GetResponseError exception is raised. Exception is raised when try to delete already deleted contact.

returns

Boolean



59
60
61
62
63
64
# File 'lib/get_response/contact.rb', line 59

def destroy
  raise GetResponse::GetResponseError.new("Can't delete contact without id") unless @id

  resp = @connection.send_request("delete_contact", { "contact" => @id })
  resp["result"]["deleted"].to_i == 1
end

#geoipObject

Get contact geo location based on IP address from which the subscription was processed.

returns

Hash



96
97
98
99
# File 'lib/get_response/contact.rb', line 96

def geoip
  param = { "contact" => @id }
  @connection.send_request("get_contact_geoip", param)["result"]
end

#move(new_campaign_id) ⇒ Object

Move contact from one campaign (current) to another. If move contact fails (for example: no campaign with passed id) GetResponseError exception is raised, otherwise method returns true.

new_campaign_id

String - identifier of new camapign

returns

Boolean



86
87
88
89
90
# File 'lib/get_response/contact.rb', line 86

def move(new_campaign_id)
  param = { "contact" => @id, "campaign" => new_campaign_id }
  result = @connection.send_request("move_contact", param)
  result["result"]["updated"].to_i == 1
end

#opensObject

List dates when the messages were opened by contact. If a contact opened the same message multiple times, only the oldest date is listed.

returns

Hash



134
135
136
137
# File 'lib/get_response/contact.rb', line 134

def opens
  param = {"contact" => @id}
  @connection.send_request("get_contact_opens", param)["result"]
end

#saveObject

Save contact object. When object can’t be saved than GetResponseError is raised, otherwise returns true.

returns

Boolean



29
30
31
32
33
# File 'lib/get_response/contact.rb', line 29

def save
  result = @connection.send_request(:add_contact, self.attributes)
  self.duplicated = true unless result["result"]["duplicated"].nil?
  result["error"].nil?
end

#set_cycle(value) ⇒ Object

Place a contact on a desired day of the follow-up cycle or deactivate a contact. Method raises a GetResponseError exception when fails otherwise returns true.

value

String || Fixnum

returns

true



107
108
109
110
# File 'lib/get_response/contact.rb', line 107

def set_cycle(value)
  param = { "contact" => @id, "cycle_day" => value }
  @connection.send_request("set_contact_cycle", param)["result"]["updated"].to_i == 1
end

#update(new_attrs) ⇒ Object

Update contact with passed attributes set. When object can’t be saved than GetResponseError is raised, otherwise returns true.

net_attrs

Hash



71
72
73
74
75
76
77
# File 'lib/get_response/contact.rb', line 71

def update(new_attrs)
  # Don't save immediately changes
  @lazy_save = true

  new_attrs.each_pair { |key, value| self.send(key + "=", value) }
  self.save
end