Skip to content

Commit 9ab98da

Browse files
Matt Kirkhundredwatt
authored andcommitted
Taking out options mangling for Search
1 parent e669cc6 commit 9ab98da

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

lib/linked_in/search.rb

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module LinkedIn
22

33
module Search
4+
REJECT_KEYS = [:fields]
45

56
# Retrieve search results of the given object type
67
#
@@ -21,23 +22,37 @@ def search(options={}, type='people')
2122
path = "#{type.to_s}-search"
2223

2324
if options.is_a?(Hash)
24-
fields = options.delete(:fields)
25-
path += field_selector(fields) if fields
25+
fields = options.fetch(:fields, [])
26+
if !fields.empty?
27+
path += field_selector(fields)
28+
else
29+
30+
end
31+
elsif options.is_a?(String)
32+
options = {:keywords => options}
33+
else
34+
2635
end
2736

28-
options = { :keywords => options } if options.is_a?(String)
2937
options = format_options_for_query(options)
3038
get(path, options)
3139
end
3240

3341
private
3442

3543
def format_options_for_query(opts)
36-
opts.inject({}) do |list, kv|
37-
key, value = kv.first.to_s.gsub("_","-"), kv.last
38-
list[key] = sanitize_value(value)
39-
list
44+
query_hash = {}
45+
46+
opts.each do |k, value|
47+
if REJECT_KEYS.include?(k)
48+
next
49+
else
50+
key = k.to_s.gsub("_", "-")
51+
query_hash[key] = sanitize_value(value)
52+
end
4053
end
54+
55+
query_hash
4156
end
4257

4358
def sanitize_value(value)

spec/cases/search_spec.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,18 @@
7777

7878
describe "by keywords options with fields", vcr: vcr_options do
7979

80+
let(:fields) { [{:companies => [:id, :name, :industries, :description, :specialties]}, :num_results] }
81+
let(:options) { {:keywords => 'apple', :fields => fields} }
82+
8083
let(:results) do
81-
fields = [{:companies => [:id, :name, :industries, :description, :specialties]}, :num_results]
82-
client.search({:keywords => 'apple', :fields => fields}, 'company')
84+
client.search(options, 'company')
85+
end
86+
87+
it "doesn't change the original options" do
88+
original_options = options.dup
89+
client.search(options, 'company')
90+
91+
options.should == original_options
8392
end
8493

8594
it "should perform a search" do

0 commit comments

Comments
 (0)