solve360 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -57,6 +57,12 @@ and then used:
57
57
 
58
58
  ### Finding
59
59
 
60
+ You can pull all records with:
61
+
62
+ contacts = Solve360::Contact.find(:all)
63
+
64
+ **Please Note:** It's not yet possible to pass filter conditions to find(:all).
65
+
60
66
  You can find by the ID of a record on the CRM:
61
67
 
62
68
  contact = Solve360::Contact.find(12345)
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ begin
15
15
  gem.add_dependency("httparty", ">=0.4.5")
16
16
  end
17
17
  rescue LoadError
18
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
18
+ puts "Jeweler not available. Install it with: gem install jeweler"
19
19
  end
20
20
 
21
21
  Spec::Rake::SpecTask.new(:spec) do |spec|
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.7
@@ -10,7 +10,8 @@ module Solve360
10
10
  "Company Phone" => "phone",
11
11
  "Related To" => "relatedto",
12
12
  "Shipping Address" => "shippingaddress",
13
- "Website" => "website"}
13
+ "Website" => "website",
14
+ "Background" => "background"}
14
15
  end
15
16
  end
16
17
  end
@@ -17,7 +17,11 @@ module Solve360
17
17
  "Last Name" => "lastname",
18
18
  "Personal Email" => "personalemail",
19
19
  "Related To" => "relatedto",
20
- "Website" => "website"}
20
+ "Website" => "website",
21
+ "Background" => "background"
22
+ }
21
23
  end
24
+
25
+
22
26
  end
23
27
  end
@@ -138,13 +138,29 @@ module Solve360
138
138
  new_record
139
139
  end
140
140
 
141
- # Find a record
141
+ # Find records
142
142
  #
143
- # @param [Integer] id of the record on the CRM
143
+ # @param [Integer, Symbol] id of the record on the CRM or :all
144
144
  def find(id)
145
+ if id == :all
146
+ find_all
147
+ else
148
+ find_one(id)
149
+ end
150
+ end
151
+
152
+ # Find a single record
153
+ #
154
+ # @param [Integer] id of the record on the CRM
155
+ def find_one(id)
145
156
  response = request(:get, "/#{resource_name}/#{id}")
146
-
147
- construct_record_from_response(response)
157
+ construct_record_from_singular(response)
158
+ end
159
+
160
+ # Find all records
161
+ def find_all
162
+ response = request(:get, "/#{resource_name}/", "<request><layout>1</layout></request>")
163
+ construct_record_from_collection(response)
148
164
  end
149
165
 
150
166
  # Send an HTTP request
@@ -159,7 +175,7 @@ module Solve360
159
175
  :basic_auth => {:username => Solve360::Config.config.username, :password => Solve360::Config.config.token})
160
176
  end
161
177
 
162
- def construct_record_from_response(response)
178
+ def construct_record_from_singular(response)
163
179
  item = response["response"]["item"]
164
180
  item.symbolize_keys!
165
181
 
@@ -180,6 +196,20 @@ module Solve360
180
196
  record
181
197
  end
182
198
 
199
+ def construct_record_from_collection(response)
200
+ response["response"].collect do |item|
201
+ item = item[1]
202
+ if item.respond_to?(:keys)
203
+ attributes = {}
204
+ attributes[:id] = item["id"]
205
+
206
+ attributes[:fields] = map_api_fields(item)
207
+
208
+ record = new(attributes)
209
+ end
210
+ end.compact
211
+ end
212
+
183
213
  def resource_name
184
214
  self.name.to_s.demodulize.underscore.pluralize
185
215
  end
@@ -0,0 +1,2 @@
1
+ {"response":{"id31507":{"company":"\n Exactratems Consulting, Inconactron Technology, Systectro\n ","businessphonemain":"(580) 648-9094","name":"Aaron Baileys","businessphonedirect":"(382) 853-8544","assignedto":"53936","businessaddress":"1710, 840 7th Ave. SW\n Calgary, Alberta","cellularphone":"(333) 828-4633","background":"\n Referred by David, hes built three other homes in the valley.\n ","homephone":"(333) 934-9392","lastname":"Baileys","id":"31507","viewed":"2009-06-23T00:50:35+00:00","businessemail":"support@workcompedge.com","flagged":"1","website":"www.clientsite.com","firstname":"Aaron","updated":"2009-06-18T21:53:24+00:00","jobtitle":"Maintenance Mechanic","businessfax":"(111) 222-3333","created":"2008-08-04T00:00:10+00:00"},"count":"21","id34943":{"company":"Acle","businessphonemain":"(407) 713-0145","name":"Aaron Grant","businessaddress":"4437, Grand Avenue\n Winter Park FL 32789\n US","lastname":"Grant","id":"34943","viewed":"2009-01-19T15:49:29+00:00","businessemail":"Aaron.E.Grant@spambob.com","flagged":null,"firstname":"Aaron","updated":"2008-08-31T18:41:42+00:00","jobtitle":"Design Drafter Cad/Cam","created":"2008-08-04T00:03:05+00:00"},"status":"success"}}
2
+
@@ -195,4 +195,20 @@ describe "Adding a releated item" do
195
195
  it "should become set after save" do
196
196
  @contact.related_items.first["name"].should == "A New Company"
197
197
  end
198
+ end
199
+
200
+ describe "Finding all records" do
201
+ before do
202
+ stub_http_response_with("contacts/find-all.json")
203
+ @contacts = Solve360::Contact.find(:all)
204
+ end
205
+
206
+ it "should contain all contacts" do
207
+ puts @contacts.inspect
208
+ @contacts.size.should == 2
209
+ first = @contacts.first
210
+ first.class.should == Solve360::Contact
211
+ first.fields["First Name"].should == "Aaron"
212
+ first.fields["Last Name"].should == "Baileys"
213
+ end
198
214
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solve360
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Bartholomew
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-12 00:00:00 +00:00
12
+ date: 2010-02-04 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -63,6 +63,7 @@ files:
63
63
  - spec/api_settings.yml
64
64
  - spec/api_settings.yml.sample
65
65
  - spec/fixtures/contacts/create-success.json
66
+ - spec/fixtures/contacts/find-all.json
66
67
  - spec/fixtures/contacts/find-company-success.json
67
68
  - spec/fixtures/contacts/find-success.json
68
69
  - spec/fixtures/contacts/index.json