Module: LinkedIn::Api::PeopleSearchMethods
- Included in:
- Client
- Defined in:
- lib/linked_in/api/people_search_methods.rb
Instance Method Summary collapse
-
#people_search(options = {}) ⇒ Object
Public: Search the LinkedIn service for people.
Instance Method Details
#people_search(options = {}) ⇒ Object
Public: Search the LinkedIn service for people
options - The Hash options used to refine the selection:
:people - The people fields to be returned
(default: public-profile-url,id,first-name,
last-name,headline,location).
:count - The number of people records to return
(default: 25).
:start - The people record to start the return from.
Used for page wrapping when the total number
of records matching the search exceeds count
(default: 0).
:companies - A comma separated list of company codes to
to match against the current-company field
of people (optional).
:locations - A comma separated list of location codes to
match agains the location field of people
(optional).
:get_all - Boolean variable telling us to get all of
the people that match our search. LinkedIn
will only return the first 25 by default
(optional).
Examples
> y client.people_search(:locations => 'us:91',
:company => 1035,
:count => 1)
---
people:
_count: 1
_start: 0
total: 110
all:
- first_name: Ben
headline: Designer at SkB Architects
id: EHp0p-X67f
last_name: Humphrey
location:
country:
code: us
name: Greater Seattle Area
public_profile_url: http://www.linkedin.com/in/benhumphrey
=> nil
Returns a Hashie::Mash of the matched people.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 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 105 106 107 108 109 |
# File 'lib/linked_in/api/people_search_methods.rb', line 51 def people_search(={}) # revere merge defaults into options has so that we don't # overwrite what the user has given us. .reverse_merge!({ :people => "public-profile-url,id,first-name,last-name" + ",headline,location", :count => 25, :start => 0 }) # initialize path string for a people-search path = "/people-search:(people:(#{[:people]}))" + "?count=#{[:count]}" + "&start=#{[:start]}" # add a facet so that we find everyone in the given companys # if the :company option is defined. path += "&facet=current-company,#{[:companies]}" if [:companies] # add a facet so that we find everyone in the given locations # if the :location option is defined. path += "&facet=location,#{CGI.escape([:locations])}" if [:locations] # hit the linkedin service with the search. we store the payload # as an array so that we can manipulate it below. payload = MultiJson.decode(get(path)) Rails.logger.debug path # if the :get_all option is set, we check to make sure that # the count of items returned from the linkedin service is # not less than the total number of items that match our # search in the linkedin service. while ((payload['people']['_start'] + payload['people']['_count']) < payload['people']['_total']) # update the path string so that we start from where we # left off from the last search. path.sub!(/start=\d+/, "start=#{payload['people']['_start'] + payload['people']['_count']}") Rails.logger.debug path # update the count in our payload payload['people']['_count'] += [:count] # hit the linkedin service again and merge teh new # results into our payload. payload['people']['values'] += MultiJson.decode(get(path))['people']['values'] end if [:get_all] Mash.from_json(MultiJson.encode(payload)) end |