landslider 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/lib/landslider.rb +48 -37
- data/test/landslider_test.rb +8 -7
- metadata +1 -1
data/VERSION.yml
CHANGED
data/lib/landslider.rb
CHANGED
@@ -98,6 +98,13 @@ class Landslider < Handsoap::Service
|
|
98
98
|
ans.add 'accountId', account_id
|
99
99
|
ans.add 'firstResultPosition', 1
|
100
100
|
ans.add 'totalResultsRequested', 10
|
101
|
+
|
102
|
+
ans.add('searchCriteria') { |sc|
|
103
|
+
# just find accounts with an empty main city
|
104
|
+
|
105
|
+
sc.add 'fieldId', 'MainAddressCity'
|
106
|
+
sc.add 'operator', 'Empty'
|
107
|
+
}
|
101
108
|
}
|
102
109
|
end
|
103
110
|
node = response.document.xpath('//ns:getAccountNotesResponse', ns)
|
@@ -143,43 +150,18 @@ class Landslider < Handsoap::Service
|
|
143
150
|
parse_get_opportunity_notes_result(node)
|
144
151
|
end
|
145
152
|
|
146
|
-
def get_leads(session_id)
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
# <!--Optional:-->
|
152
|
-
# <entityName>?</entityName>
|
153
|
-
# <!--Optional:-->
|
154
|
-
# <entityType>?</entityType>
|
155
|
-
# <allowDuplicateCriterion>?</allowDuplicateCriterion>
|
156
|
-
# <firstResultPosition>?</firstResultPosition>
|
157
|
-
# <returnDeletedRecords>?</returnDeletedRecords>
|
158
|
-
# <!--Zero or more repetitions:-->
|
159
|
-
# <searchCriteria>
|
160
|
-
# <!--Optional:-->
|
161
|
-
# <fieldId>?</fieldId>
|
162
|
-
# <!--Optional:-->
|
163
|
-
# <operator>?</operator>
|
164
|
-
# <!--Optional:-->
|
165
|
-
# <queryValue>?</queryValue>
|
166
|
-
# </searchCriteria>
|
167
|
-
# <!--Optional:-->
|
168
|
-
# <sourceSystemId>?</sourceSystemId>
|
169
|
-
# <totalResultsRequested>?</totalResultsRequested>
|
170
|
-
# <!--Optional:-->
|
171
|
-
# <updatedOn>?</updatedOn>
|
172
|
-
# <accountId>?</accountId>
|
173
|
-
# <hot>?</hot>
|
174
|
-
# <hotSpecified>?</hotSpecified>
|
175
|
-
# <!--Optional:-->
|
176
|
-
# <name>?</name>
|
177
|
-
# <primaryOwnerId>?</primaryOwnerId>
|
178
|
-
# <statusId>?</statusId>
|
179
|
-
# <targetId>?</targetId>
|
180
|
-
# </leadRequest>
|
181
|
-
# </soap:getLeads>
|
153
|
+
def get_leads(session_id, account_id)
|
154
|
+
self.session_id = session_id
|
155
|
+
|
156
|
+
response = invoke("getLeads", :soap_action => :none) do |message|
|
157
|
+
message.add('leadRequest') { |lr|
|
182
158
|
|
159
|
+
lr.add 'firstResultPosition', 1
|
160
|
+
lr.add 'totalResultsRequested', 10
|
161
|
+
}
|
162
|
+
end
|
163
|
+
node = response.document.xpath('//ns:getLeadsResponse', ns)
|
164
|
+
parse_get_leads_result(node)
|
183
165
|
end
|
184
166
|
|
185
167
|
def get_lead_notes(session_id, lead_id)
|
@@ -291,6 +273,18 @@ class Landslider < Handsoap::Service
|
|
291
273
|
|
292
274
|
}
|
293
275
|
end
|
276
|
+
def parse_get_leads_result(node)
|
277
|
+
{
|
278
|
+
:leads => parse_leads(node),
|
279
|
+
|
280
|
+
:error => xml_to_bool(node, './*/error/text()'),
|
281
|
+
:error_code => xml_to_int(node, './*/errorCode/text()'),
|
282
|
+
:result_msg => xml_to_str(node, './*/resultMsg/text()'),
|
283
|
+
:status_code => xml_to_int(node, './*/statusCode/text()'),
|
284
|
+
:results_returned => xml_to_int(node, './*/resultsReturned/text()'),
|
285
|
+
:total_results_available => xml_to_int(node, './*/totalResultsAvailable/text()')
|
286
|
+
}
|
287
|
+
end
|
294
288
|
|
295
289
|
def parse_get_lead_notes_result(node)
|
296
290
|
{
|
@@ -400,7 +394,24 @@ class Landslider < Handsoap::Service
|
|
400
394
|
|
401
395
|
}
|
402
396
|
end
|
403
|
-
|
397
|
+
|
398
|
+
def parse_leads(node)
|
399
|
+
{
|
400
|
+
:leads => node.xpath('./*/leadList', ns).map { |child| parse_lead(child) }
|
401
|
+
}
|
402
|
+
end
|
403
|
+
|
404
|
+
# WsLead
|
405
|
+
def parse_lead(node)
|
406
|
+
{
|
407
|
+
:name => xml_to_str(node, './name/text()'),
|
408
|
+
:ok_to_call => xml_to_bool(node, './okToCall/text()'),
|
409
|
+
:ok_to_email => xml_to_bool(node, './okToEmail/text()'),
|
410
|
+
:hot => xml_to_bool(node, './hot/text()')
|
411
|
+
}
|
412
|
+
|
413
|
+
end
|
414
|
+
|
404
415
|
# WsOpportunity
|
405
416
|
def parse_opportunity(node)
|
406
417
|
{
|
data/test/landslider_test.rb
CHANGED
@@ -64,7 +64,7 @@ class LandsliderTest < Test::Unit::TestCase
|
|
64
64
|
validate_standard_api_result result
|
65
65
|
validate_at_least_one_note_returned result
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
def test_landslider_get_account_opportunities
|
69
69
|
# exists on jaytest
|
70
70
|
result = Landslider.get_account_opportunities($sid, 51858821)
|
@@ -77,7 +77,7 @@ class LandsliderTest < Test::Unit::TestCase
|
|
77
77
|
!opp[:selling_process].nil?
|
78
78
|
}, "opportunities require a name, account, deal value and selling process"
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
def test_landslider_get_contact_notes
|
82
82
|
# exists on jaytest
|
83
83
|
result = Landslider.get_contact_notes($sid, 62813411)
|
@@ -87,9 +87,10 @@ class LandsliderTest < Test::Unit::TestCase
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def test_landslider_get_leads
|
90
|
-
result = Landslider.get_leads($sid)
|
91
|
-
|
92
|
-
|
90
|
+
result = Landslider.get_leads($sid, 51857822)
|
91
|
+
|
92
|
+
validate_standard_api_result result
|
93
|
+
assert_not_nil result[:leads]
|
93
94
|
end
|
94
95
|
|
95
96
|
|
@@ -109,9 +110,9 @@ class LandsliderTest < Test::Unit::TestCase
|
|
109
110
|
validate_standard_api_result result
|
110
111
|
validate_at_least_one_note_returned result
|
111
112
|
end
|
112
|
-
|
113
|
+
|
113
114
|
private
|
114
|
-
|
115
|
+
|
115
116
|
def validate_standard_api_result(result)
|
116
117
|
assert_equal Hash, result.class, "api method should return a hash"
|
117
118
|
assert_not_nil result[:results_returned], ":results_returned missing"
|