Class: Hubspot::Contact
Constant Summary
collapse
- ALL_PATH =
'/contacts/v1/lists/all/contacts/all'
- CREATE_PATH =
'/contacts/v1/contact'
- CREATE_OR_UPDATE_PATH =
'/contacts/v1/contact/createOrUpdate/email/:email'
- DELETE_PATH =
'/contacts/v1/contact/vid/:id'
- FIND_PATH =
'/contacts/v1/contact/vid/:id/profile'
- FIND_BY_EMAIL_PATH =
'/contacts/v1/contact/email/:email/profile'
- FIND_BY_USER_TOKEN_PATH =
'/contacts/v1/contact/utk/:token/profile'
- MERGE_PATH =
'/contacts/v1/contact/merge-vids/:id/'
- SEARCH_PATH =
'/contacts/v1/search/query'
- UPDATE_PATH =
'/contacts/v1/contact/vid/:id/profile'
- BATCH_UPDATE_PATH =
'/contacts/v1/contact/batch'
Instance Attribute Summary
Attributes inherited from Resource
#changes, #id, #metadata, #properties
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Resource
#[], #changed?, #delete, #deleted?, find, from_result, #initialize, #persisted?, #reload, #save, #to_i, update, #update, update!
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class Hubspot::Resource
Class Method Details
.all(opts = {}) ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/hubspot/contact.rb', line 18
def all(opts = {})
Hubspot::PagedCollection.new(opts) do |options, offset, limit|
response = Hubspot::Connection.get_json(
ALL_PATH,
options.merge("count" => limit, "vidOffset" => offset)
)
contacts = response["contacts"].map { |result| from_result(result) }
[contacts, response["vid-offset"], response["has-more"]]
end
end
|
.batch_update(contacts, opts = {}) ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/hubspot/contact.rb', line 80
def batch_update(contacts, opts = {})
request = contacts.map do |contact|
changes = opts.empty? ? contact.changes : opts
unless changes.empty?
{
"vid" => contact.id,
"properties" => changes.map { |k, v| { "property" => k, "value" => v } }
}
end
end
request.compact!
return true if request.empty?
Hubspot::Connection.post_json(
BATCH_UPDATE_PATH,
params: {},
body: request
)
true
end
|
.create(email, properties = {}) ⇒ Object
46
47
48
|
# File 'lib/hubspot/contact.rb', line 46
def create(email, properties = {})
super(properties.merge("email" => email))
end
|
.create_or_update(email, properties = {}) ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/hubspot/contact.rb', line 50
def create_or_update(email, properties = {})
request = {
properties: Hubspot::Utils.hash_to_properties(properties.stringify_keys, key_name: "property")
}
response = Hubspot::Connection.post_json(CREATE_OR_UPDATE_PATH, params: {email: email}, body: request)
from_result(response)
end
|
.find_by_email(email) ⇒ Object
35
36
37
38
|
# File 'lib/hubspot/contact.rb', line 35
def find_by_email(email)
response = Hubspot::Connection.get_json(FIND_BY_EMAIL_PATH, email: email)
from_result(response)
end
|
.find_by_user_token(token) ⇒ Object
Also known as:
find_by_utk
40
41
42
43
|
# File 'lib/hubspot/contact.rb', line 40
def find_by_user_token(token)
response = Hubspot::Connection.get_json(FIND_BY_USER_TOKEN_PATH, token: token)
from_result(response)
end
|
.find_by_vid(vid) ⇒ Object
30
31
32
33
|
# File 'lib/hubspot/contact.rb', line 30
def find_by_vid(vid)
response = Hubspot::Connection.get_json(FIND_PATH, id: vid)
from_result(response)
end
|
.merge(primary, secondary) ⇒ Object
70
71
72
73
74
75
76
77
78
|
# File 'lib/hubspot/contact.rb', line 70
def merge(primary, secondary)
Hubspot::Connection.post_json(
MERGE_PATH,
params: { id: primary.to_i, no_parse: true },
body: { "vidToMerge" => secondary.to_i }
)
true
end
|
.search(query, opts = {}) ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/hubspot/contact.rb', line 58
def search(query, opts = {})
Hubspot::PagedCollection.new(opts) do |options, offset, limit|
response = Hubspot::Connection.get_json(
SEARCH_PATH,
options.merge(q: query, offset: offset, count: limit)
)
contacts = response["contacts"].map { |result| from_result(result) }
[contacts, response["offset"], response["has-more"]]
end
end
|
Instance Method Details
#merge(contact) ⇒ Object
111
112
113
|
# File 'lib/hubspot/contact.rb', line 111
def merge(contact)
self.class.merge(@id, contact.to_i)
end
|
#name ⇒ Object
107
108
109
|
# File 'lib/hubspot/contact.rb', line 107
def name
[firstname, lastname].compact.join(' ')
end
|