landslider 0.5.7 → 0.5.9
Sign up to get free protection for your applications and to get access to all the features.
- data/{CHANGELOG.markdown → HISTORY.md} +4 -0
- data/README.md +108 -0
- data/VERSION.yml +1 -1
- data/bin/generate_api_key.rb +1 -1
- data/landslider.gemspec +41 -5
- data/lib/landslider/entities/ws_account.rb +32 -0
- data/lib/landslider/entities/ws_account_note.rb +13 -0
- data/lib/landslider/entities/ws_account_note_search.rb +23 -0
- data/lib/landslider/entities/ws_address.rb +17 -0
- data/lib/landslider/entities/ws_contact.rb +38 -0
- data/lib/landslider/entities/ws_contact_note.rb +13 -0
- data/lib/landslider/entities/ws_contact_note_search.rb +23 -0
- data/lib/landslider/entities/ws_contact_search.rb +28 -0
- data/lib/landslider/entities/ws_employee.rb +23 -0
- data/lib/landslider/entities/ws_entity.rb +15 -0
- data/lib/landslider/entities/ws_lead.rb +35 -0
- data/lib/landslider/entities/ws_lead_contact.rb +14 -0
- data/lib/landslider/entities/ws_lead_note.rb +14 -0
- data/lib/landslider/entities/ws_lead_note_search.rb +24 -0
- data/lib/landslider/entities/ws_lead_search.rb +31 -0
- data/lib/landslider/entities/ws_my_list.rb +20 -0
- data/lib/landslider/entities/ws_note.rb +21 -0
- data/lib/landslider/entities/ws_opportunity.rb +38 -0
- data/lib/landslider/entities/ws_opportunity_note.rb +13 -0
- data/lib/landslider/entities/ws_opportunity_note_search.rb +23 -0
- data/lib/landslider/entities/ws_opportunity_status.rb +17 -0
- data/lib/landslider/entities/ws_payment_term.rb +17 -0
- data/lib/landslider/entities/ws_pick_list_item.rb +14 -0
- data/lib/landslider/entities/ws_primary_entity.rb +11 -0
- data/lib/landslider/entities/ws_product.rb +35 -0
- data/lib/landslider/entities/ws_product_family.rb +17 -0
- data/lib/landslider/entities/ws_product_result.rb +12 -0
- data/lib/landslider/entities/ws_record_upsert_result.rb +13 -0
- data/lib/landslider/entities/ws_result.rb +16 -0
- data/lib/landslider/entities/ws_search.rb +55 -0
- data/lib/landslider/entities/ws_search_criterion.rb +121 -0
- data/lib/landslider/entities/ws_search_operator.rb +59 -0
- data/lib/landslider/entities/ws_selling_process.rb +17 -0
- data/lib/landslider/entities/ws_user.rb +10 -0
- data/lib/landslider/entities/ws_user_search.rb +20 -0
- data/lib/landslider/entities.rb +46 -0
- data/lib/landslider.rb +71 -116
- data/test/ws_search_test.rb +13 -0
- metadata +41 -5
- data/README.rdoc +0 -77
data/lib/landslider.rb
CHANGED
@@ -1,117 +1,20 @@
|
|
1
1
|
|
2
|
+
# Landslider is a soap client to the Landslide CRM SOAP-based API
|
3
|
+
# Example:
|
4
|
+
#
|
5
|
+
# require 'landslider'
|
6
|
+
# response = Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)
|
7
|
+
# response = Landslider.get_accounts(response[:session_id])
|
8
|
+
# response[:accounts].each do |account|
|
9
|
+
# puts "id: #{account[:account_id]} name: #{account[:account_name]}"
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
|
2
13
|
require 'handsoap'
|
3
14
|
|
4
15
|
class Landslider < Handsoap::Service
|
5
16
|
|
6
|
-
|
7
|
-
attr_writer :first_result_position, :total_results_requested, :updated_on
|
8
|
-
attr_writer :search_criteria
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
end
|
12
|
-
|
13
|
-
# @param [Handsoap::XmlMason::Node] msg
|
14
|
-
# @return [Handsoap::XmlMason::Node]
|
15
|
-
def soapify_for(msg)
|
16
|
-
msg.add 'firstResultPosition', @first_result_position || DEFAULT_FIRST_RESULT_POSITION
|
17
|
-
msg.add 'totalResultsRequested', @total_results_requested || DEFAULT_TOTAL_RESULTS_REQUESTED
|
18
|
-
msg.add 'updatedOn', @updated_on unless @updated_on.nil?
|
19
|
-
unless @search_criteria.nil?
|
20
|
-
@search_criteria.soapify_for(msg)
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
class WsSearchCriterion
|
28
|
-
attr_reader :field_id, :operator, :query_value
|
29
|
-
|
30
|
-
def initialize(field_id, operator, query_value)
|
31
|
-
@field_id = field_id
|
32
|
-
@operator = operator
|
33
|
-
@query_value = query_value
|
34
|
-
end
|
35
|
-
|
36
|
-
# @param [Handsoap::XmlMason::Node] msg
|
37
|
-
# @return [Handsoap::XmlMason::Node]
|
38
|
-
def soapify_for(msg)
|
39
|
-
msg.add('searchCriteria') { |crit|
|
40
|
-
crit.add 'fieldId', @field_id
|
41
|
-
crit.add 'operator', @operator
|
42
|
-
crit.add 'queryValue', @query_value unless @query_value.nil?
|
43
|
-
}
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
class WsAccountNoteSearch < WsSearch
|
48
|
-
attr_reader :account_id
|
49
|
-
|
50
|
-
def initialize(account_id)
|
51
|
-
@account_id = account_id
|
52
|
-
end
|
53
|
-
|
54
|
-
# @param [Handsoap::XmlMason::Node] msg
|
55
|
-
# @return [Handsoap::XmlMason::Node]
|
56
|
-
def soapify_for(msg)
|
57
|
-
msg.add('accountNoteSearch') { |crit|
|
58
|
-
crit.add 'accountId', @account_id
|
59
|
-
super(crit)
|
60
|
-
}
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
class WsContactNoteSearch < WsSearch
|
65
|
-
attr_reader :contact_id
|
66
|
-
|
67
|
-
def initialize(contact_id)
|
68
|
-
@contact_id = contact_id
|
69
|
-
end
|
70
|
-
|
71
|
-
# @param [Handsoap::XmlMason::Node] msg
|
72
|
-
# @return [Handsoap::XmlMason::Node]
|
73
|
-
def soapify_for(msg)
|
74
|
-
msg.add('contactNote') { |crit|
|
75
|
-
crit.add 'contactId', @contact_id
|
76
|
-
super(crit)
|
77
|
-
}
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
class WsLeadNoteSearch < WsSearch
|
82
|
-
attr_reader :lead_id
|
83
|
-
|
84
|
-
def initialize(lead_id)
|
85
|
-
@lead_id = lead_id
|
86
|
-
end
|
87
|
-
|
88
|
-
# @param [Handsoap::XmlMason::Node] msg
|
89
|
-
# @return [Handsoap::XmlMason::Node]
|
90
|
-
def soapify_for(msg)
|
91
|
-
msg.add('leadNote') { |crit|
|
92
|
-
crit.add 'leadId', @lead_id
|
93
|
-
super(crit)
|
94
|
-
}
|
95
|
-
end
|
96
|
-
|
97
|
-
end
|
98
|
-
|
99
|
-
class WsOpportunityNoteSearch < WsSearch
|
100
|
-
attr_reader :opportunity_id
|
101
|
-
|
102
|
-
def initialize(opportunity_id)
|
103
|
-
@opportunity_id = opportunity_id
|
104
|
-
end
|
105
|
-
|
106
|
-
# @param [Handsoap::XmlMason::Node] msg
|
107
|
-
# @return [Handsoap::XmlMason::Node]
|
108
|
-
def soapify_for(msg)
|
109
|
-
msg.add('opportunityNote') { |crit|
|
110
|
-
crit.add 'opportunityId', @opportunity_id
|
111
|
-
super(crit)
|
112
|
-
}
|
113
|
-
end
|
114
|
-
end
|
17
|
+
require 'landslider/entities'
|
115
18
|
|
116
19
|
LS_API_NAMESPACE='http://www.landslide.com/webservices/SoapService'
|
117
20
|
LS_API_ENDPOINT = {
|
@@ -119,13 +22,14 @@ class Landslider < Handsoap::Service
|
|
119
22
|
:version => 1
|
120
23
|
}
|
121
24
|
|
122
|
-
DEFAULT_FIRST_RESULT_POSITION=1
|
123
|
-
DEFAULT_TOTAL_RESULTS_REQUESTED=25
|
25
|
+
DEFAULT_FIRST_RESULT_POSITION = 1
|
26
|
+
DEFAULT_TOTAL_RESULTS_REQUESTED = 25
|
124
27
|
|
125
28
|
endpoint LS_API_ENDPOINT
|
126
29
|
|
127
30
|
attr_accessor :session_id
|
128
31
|
|
32
|
+
# @param [Handsoap::XmlMason::Document] doc
|
129
33
|
def on_create_document(doc)
|
130
34
|
doc.alias 'urn', LS_API_NAMESPACE
|
131
35
|
header = doc.find('Header')
|
@@ -134,17 +38,17 @@ class Landslider < Handsoap::Service
|
|
134
38
|
}
|
135
39
|
end
|
136
40
|
|
41
|
+
# @param [Handsoap::Http::Request] http_request
|
137
42
|
def on_after_create_http_request(http_request)
|
138
43
|
http_request.headers.merge!({'user-agent' => ['landslider-ruby-gem-version-0.4.6']})
|
139
|
-
|
140
|
-
# TODO: use cookies to maintain session state
|
141
|
-
# http_request.headers.merge!({'cookie' => ["JSESSIONID=#{self.session_id}"]})
|
142
44
|
end
|
143
45
|
|
144
46
|
def on_http_error(response)
|
145
47
|
puts response.inspect
|
146
48
|
end
|
147
49
|
|
50
|
+
# @param [String] session_id
|
51
|
+
# @return [Hash]
|
148
52
|
def login(session_id)
|
149
53
|
self.session_id = session_id
|
150
54
|
response = invoke('login', :soap_action => :none) do |message|
|
@@ -158,6 +62,9 @@ class Landslider < Handsoap::Service
|
|
158
62
|
parse_login_result(node)
|
159
63
|
end
|
160
64
|
|
65
|
+
# @param [WsAccountSearch] search
|
66
|
+
# @param [String] session_id
|
67
|
+
# @return [Hash]
|
161
68
|
def get_accounts(session_id, search=WsSearch.new)
|
162
69
|
self.session_id = session_id
|
163
70
|
response = invoke('getAccounts', :soap_action => :none) do |message|
|
@@ -170,6 +77,8 @@ class Landslider < Handsoap::Service
|
|
170
77
|
parse_get_accounts_result(node)
|
171
78
|
end
|
172
79
|
|
80
|
+
# @param [String] session_id
|
81
|
+
# @return [Hash]
|
173
82
|
def get_account_by_id(session_id, account_id)
|
174
83
|
self.session_id = session_id
|
175
84
|
|
@@ -181,6 +90,10 @@ class Landslider < Handsoap::Service
|
|
181
90
|
parse_get_account_by_id_result(node)
|
182
91
|
end
|
183
92
|
|
93
|
+
# @param [String] session_id
|
94
|
+
# @param [String] account_id
|
95
|
+
# @param [Boolean] is_primary
|
96
|
+
# @return [Hash]
|
184
97
|
def get_account_contacts(session_id, account_id, is_primary=false)
|
185
98
|
self.session_id = session_id
|
186
99
|
response = invoke('getAccountContacts', :soap_action => :none) do |message|
|
@@ -192,12 +105,17 @@ class Landslider < Handsoap::Service
|
|
192
105
|
parse_get_account_contacts_result(node)
|
193
106
|
end
|
194
107
|
|
108
|
+
# @param [String] session_id
|
109
|
+
# @return [Hash]
|
195
110
|
def get_account_custom_fields(session_id)
|
196
111
|
response = invoke('getAccountCustomFields')
|
197
112
|
node = response.document.xpath('//ns:getAccountCustomFieldsResponse', ns)
|
198
113
|
parse_get_entity_custom_fields_result(node)
|
199
114
|
end
|
200
|
-
|
115
|
+
|
116
|
+
# @param [String] session_id
|
117
|
+
# @param [WsSearch] search
|
118
|
+
# @return [Hash]
|
201
119
|
def get_account_notes(session_id, search)
|
202
120
|
self.session_id = session_id
|
203
121
|
|
@@ -207,7 +125,9 @@ class Landslider < Handsoap::Service
|
|
207
125
|
node = response.document.xpath('//ns:getAccountNotesResponse', ns)
|
208
126
|
parse_get_account_notes_result(node)
|
209
127
|
end
|
210
|
-
|
128
|
+
|
129
|
+
# @param [String] session_id
|
130
|
+
# @return [Hash]
|
211
131
|
def get_account_opportunities(session_id, account_id)
|
212
132
|
self.session_id = session_id
|
213
133
|
response = invoke('getAccountOpportunities', :soap_action => :none) do |message|
|
@@ -218,6 +138,8 @@ class Landslider < Handsoap::Service
|
|
218
138
|
parse_get_account_opportunities_result(node)
|
219
139
|
end
|
220
140
|
|
141
|
+
# @param [String] session_id
|
142
|
+
# @return [Hash]
|
221
143
|
def get_api_version(session_id)
|
222
144
|
self.session_id = session_id
|
223
145
|
|
@@ -227,9 +149,14 @@ class Landslider < Handsoap::Service
|
|
227
149
|
parse_api_version_result(node)
|
228
150
|
end
|
229
151
|
|
152
|
+
|
153
|
+
# @param [String] session_id
|
154
|
+
# @param [WsContactSearch] search
|
155
|
+
# @return [Hash]
|
230
156
|
def get_contacts(session_id, search=WsSearch.new)
|
231
157
|
self.session_id = session_id
|
232
158
|
|
159
|
+
# public WsContactResultSet getContacts(WsContactSearch request)
|
233
160
|
response = invoke('getContacts', :soap_action => :none) do |message|
|
234
161
|
message.add('contactsRequest') { |req|
|
235
162
|
search.soapify_for(req)
|
@@ -239,6 +166,8 @@ class Landslider < Handsoap::Service
|
|
239
166
|
parse_get_contacts_result(node)
|
240
167
|
end
|
241
168
|
|
169
|
+
# @param [String] session_id
|
170
|
+
# @return [Hash]
|
242
171
|
def get_contact_custom_fields(session_id)
|
243
172
|
self.session_id = session_id
|
244
173
|
|
@@ -247,6 +176,9 @@ class Landslider < Handsoap::Service
|
|
247
176
|
parse_get_entity_custom_fields_result(node)
|
248
177
|
end
|
249
178
|
|
179
|
+
# @param [String] session_id
|
180
|
+
# @param [WsSearch] search
|
181
|
+
# @return [Hash]
|
250
182
|
def get_contact_notes(session_id, search)
|
251
183
|
self.session_id = session_id
|
252
184
|
|
@@ -258,6 +190,9 @@ class Landslider < Handsoap::Service
|
|
258
190
|
|
259
191
|
end
|
260
192
|
|
193
|
+
# @param [String] user_id
|
194
|
+
# @param [String] session_id
|
195
|
+
# @return [Hash]
|
261
196
|
def get_instance_information(session_id, user_id)
|
262
197
|
self.session_id = session_id
|
263
198
|
|
@@ -268,6 +203,9 @@ class Landslider < Handsoap::Service
|
|
268
203
|
parse_get_instance_information_result(node)
|
269
204
|
end
|
270
205
|
|
206
|
+
# @param [String] session_id
|
207
|
+
# @param [WsLeadSearch] search
|
208
|
+
# @return [Hash]
|
271
209
|
def get_leads(session_id, search=WsSearch.new)
|
272
210
|
self.session_id = session_id
|
273
211
|
|
@@ -281,12 +219,17 @@ class Landslider < Handsoap::Service
|
|
281
219
|
parse_get_leads_result(node)
|
282
220
|
end
|
283
221
|
|
222
|
+
# @param [String] session_id
|
223
|
+
# @return [Hash]
|
284
224
|
def get_lead_custom_fields(session_id)
|
285
225
|
response = invoke('getLeadCustomFields')
|
286
226
|
node = response.document.xpath('//ns:getLeadCustomFieldsResponse', ns)
|
287
227
|
parse_get_entity_custom_fields_result(node)
|
288
228
|
end
|
289
229
|
|
230
|
+
# @param [String] session_id
|
231
|
+
# @param [WsSearch] search
|
232
|
+
# @return [Hash]
|
290
233
|
def get_lead_notes(session_id, search)
|
291
234
|
self.session_id = session_id
|
292
235
|
|
@@ -297,6 +240,9 @@ class Landslider < Handsoap::Service
|
|
297
240
|
parse_get_lead_notes_result(node)
|
298
241
|
end
|
299
242
|
|
243
|
+
# @param [WsOpportunitySearch] search
|
244
|
+
# @param [String] session_id
|
245
|
+
# @return [Hash]
|
300
246
|
def get_opportunities(session_id, search=WsSearch.new)
|
301
247
|
self.session_id = session_id
|
302
248
|
|
@@ -309,6 +255,8 @@ class Landslider < Handsoap::Service
|
|
309
255
|
parse_get_opportunities_result(node)
|
310
256
|
end
|
311
257
|
|
258
|
+
# @param [String] session_id
|
259
|
+
# @return [Hash]
|
312
260
|
def get_opportunity_custom_fields(session_id)
|
313
261
|
self.session_id = session_id
|
314
262
|
|
@@ -317,6 +265,9 @@ class Landslider < Handsoap::Service
|
|
317
265
|
parse_get_entity_custom_fields_result(node)
|
318
266
|
end
|
319
267
|
|
268
|
+
# @param [String] session_id
|
269
|
+
# @param [WsSearch] search
|
270
|
+
# @return [Hash]
|
320
271
|
def get_opportunity_notes(session_id, search)
|
321
272
|
self.session_id = session_id
|
322
273
|
|
@@ -327,6 +278,8 @@ class Landslider < Handsoap::Service
|
|
327
278
|
parse_get_opportunity_notes_result(node)
|
328
279
|
end
|
329
280
|
|
281
|
+
# @param [String] session_id
|
282
|
+
# @return [Hash]
|
330
283
|
def get_user_information(session_id, user_id)
|
331
284
|
|
332
285
|
self.session_id = session_id
|
@@ -337,6 +290,8 @@ class Landslider < Handsoap::Service
|
|
337
290
|
parse_get_user_information_by_id_result(node)
|
338
291
|
end
|
339
292
|
|
293
|
+
# @param [String] session_id
|
294
|
+
# @return [Hash]
|
340
295
|
def get_user_information_by_id(session_id, user_id)
|
341
296
|
self.session_id = session_id
|
342
297
|
|
data/test/ws_search_test.rb
CHANGED
@@ -51,5 +51,18 @@ class WsSearchTest < Test::Unit::TestCase
|
|
51
51
|
assert_equal target_phase_name, result[:opportunities][2][:current_phase_name]
|
52
52
|
end
|
53
53
|
|
54
|
+
def test_ws_search_initialized_with_attrs
|
55
|
+
search = Landslider::WsSearch.new
|
56
|
+
search.first_result_position = 2
|
57
|
+
search.total_results_requested = 4
|
58
|
+
assert_equal 2, search.instance_variable_get(:@first_result_position)
|
59
|
+
assert_equal 4, search.instance_variable_get(:@total_results_requested)
|
60
|
+
end
|
54
61
|
|
62
|
+
def test_ws_search_initialized_with_params
|
63
|
+
search = Landslider::WsSearch.new({:first_result_position => 25, :total_results_requested => 50})
|
64
|
+
assert_equal 25, search.instance_variable_get(:@first_result_position)
|
65
|
+
assert_equal 50, search.instance_variable_get(:@total_results_requested)
|
66
|
+
end
|
67
|
+
|
55
68
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: landslider
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.5.
|
5
|
+
version: 0.5.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jay Prall
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-11 00:00:00 -04:00
|
14
14
|
default_executable: generate_api_key.rb
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -65,18 +65,54 @@ extensions: []
|
|
65
65
|
|
66
66
|
extra_rdoc_files:
|
67
67
|
- LICENSE
|
68
|
-
- README.
|
68
|
+
- README.md
|
69
69
|
files:
|
70
|
-
- CHANGELOG.markdown
|
71
70
|
- Gemfile
|
71
|
+
- HISTORY.md
|
72
72
|
- LICENSE
|
73
|
-
- README.
|
73
|
+
- README.md
|
74
74
|
- Rakefile
|
75
75
|
- VERSION.yml
|
76
76
|
- bin/generate_api_key.rb
|
77
77
|
- init.rb
|
78
78
|
- landslider.gemspec
|
79
79
|
- lib/landslider.rb
|
80
|
+
- lib/landslider/entities.rb
|
81
|
+
- lib/landslider/entities/ws_account.rb
|
82
|
+
- lib/landslider/entities/ws_account_note.rb
|
83
|
+
- lib/landslider/entities/ws_account_note_search.rb
|
84
|
+
- lib/landslider/entities/ws_address.rb
|
85
|
+
- lib/landslider/entities/ws_contact.rb
|
86
|
+
- lib/landslider/entities/ws_contact_note.rb
|
87
|
+
- lib/landslider/entities/ws_contact_note_search.rb
|
88
|
+
- lib/landslider/entities/ws_contact_search.rb
|
89
|
+
- lib/landslider/entities/ws_employee.rb
|
90
|
+
- lib/landslider/entities/ws_entity.rb
|
91
|
+
- lib/landslider/entities/ws_lead.rb
|
92
|
+
- lib/landslider/entities/ws_lead_contact.rb
|
93
|
+
- lib/landslider/entities/ws_lead_note.rb
|
94
|
+
- lib/landslider/entities/ws_lead_note_search.rb
|
95
|
+
- lib/landslider/entities/ws_lead_search.rb
|
96
|
+
- lib/landslider/entities/ws_my_list.rb
|
97
|
+
- lib/landslider/entities/ws_note.rb
|
98
|
+
- lib/landslider/entities/ws_opportunity.rb
|
99
|
+
- lib/landslider/entities/ws_opportunity_note.rb
|
100
|
+
- lib/landslider/entities/ws_opportunity_note_search.rb
|
101
|
+
- lib/landslider/entities/ws_opportunity_status.rb
|
102
|
+
- lib/landslider/entities/ws_payment_term.rb
|
103
|
+
- lib/landslider/entities/ws_pick_list_item.rb
|
104
|
+
- lib/landslider/entities/ws_primary_entity.rb
|
105
|
+
- lib/landslider/entities/ws_product.rb
|
106
|
+
- lib/landslider/entities/ws_product_family.rb
|
107
|
+
- lib/landslider/entities/ws_product_result.rb
|
108
|
+
- lib/landslider/entities/ws_record_upsert_result.rb
|
109
|
+
- lib/landslider/entities/ws_result.rb
|
110
|
+
- lib/landslider/entities/ws_search.rb
|
111
|
+
- lib/landslider/entities/ws_search_criterion.rb
|
112
|
+
- lib/landslider/entities/ws_search_operator.rb
|
113
|
+
- lib/landslider/entities/ws_selling_process.rb
|
114
|
+
- lib/landslider/entities/ws_user.rb
|
115
|
+
- lib/landslider/entities/ws_user_search.rb
|
80
116
|
- test/landslider_test.rb
|
81
117
|
- test/test_helper.rb
|
82
118
|
- test/ws_account_note_search_test.rb
|
data/README.rdoc
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
= Landslider
|
2
|
-
|
3
|
-
Ruby interface to Landslide's SOAP based API
|
4
|
-
|
5
|
-
== Pre-requisites
|
6
|
-
|
7
|
-
== Dependencies
|
8
|
-
|
9
|
-
=== Landslide account
|
10
|
-
|
11
|
-
An account with Landslide that has the API enabled. (www.landslide.com) Contact support@landslide.com to have the API enabled.
|
12
|
-
|
13
|
-
=== Ruby gem dependencies
|
14
|
-
|
15
|
-
gem install jeweler curb handsoap
|
16
|
-
|
17
|
-
== Installation
|
18
|
-
|
19
|
-
gem install landslider
|
20
|
-
|
21
|
-
== Usage
|
22
|
-
|
23
|
-
|
24
|
-
Configuration:
|
25
|
-
|
26
|
-
# constants to be set by rails environment config files
|
27
|
-
|
28
|
-
LS_INSTANCE_NAME = 'jaytest'
|
29
|
-
LS_API_USERNAME = 'jayp@landslide.com'
|
30
|
-
|
31
|
-
# see bin/generate_api_key.rb for details on how to generate this key
|
32
|
-
LS_API_KEY = '53308ccbdcb7f23fbd81a0b2ebcf12a4'
|
33
|
-
|
34
|
-
require 'landslider'
|
35
|
-
response = Landslider.login('LOGINTOKEN=' + LS_INSTANCE_NAME)
|
36
|
-
response = Landslider.get_accounts(response[:session_id])
|
37
|
-
response[:accounts].each do |account|
|
38
|
-
puts "id: #{account[:account_id]} name: #{account[:account_name]}"
|
39
|
-
end
|
40
|
-
|
41
|
-
== Testing
|
42
|
-
|
43
|
-
The default rake task is set to run the tests.
|
44
|
-
|
45
|
-
$ rake
|
46
|
-
|
47
|
-
Tests are needed here because the API uses a specific XML structure for requests and responses.
|
48
|
-
|
49
|
-
== Contributing
|
50
|
-
|
51
|
-
Read the github doc on forking:
|
52
|
-
http://help.github.com/forking/
|
53
|
-
|
54
|
-
== API methods
|
55
|
-
|
56
|
-
These are the api methods that can be called. There are plenty of others to map out.
|
57
|
-
|
58
|
-
* login
|
59
|
-
* getApiVersion
|
60
|
-
* getAccounts
|
61
|
-
* getAccountById
|
62
|
-
* getAccountCustomFields
|
63
|
-
* getAccountContacts
|
64
|
-
* getAccountNotes
|
65
|
-
* getAccountOpportunities
|
66
|
-
* getContacts
|
67
|
-
* getContactCustomFields
|
68
|
-
* getContactNotes
|
69
|
-
* getInstanceInformation
|
70
|
-
* getLeads
|
71
|
-
* getLeadCustomFields
|
72
|
-
* getLeadNotes
|
73
|
-
* getOpportunities
|
74
|
-
* getOpportunityCustomFields
|
75
|
-
* getOpportunityNotes
|
76
|
-
* getUserInformation
|
77
|
-
* getUserInformationById
|