linkedin-build 1.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.autotest +14 -0
- data/.gemtest +0 -0
- data/.gitignore +49 -0
- data/.rspec +1 -0
- data/.travis.yml +6 -0
- data/.yardopts +7 -0
- data/CHANGELOG.md +99 -0
- data/EXAMPLES.md +202 -0
- data/Gemfile +11 -0
- data/LICENSE +22 -0
- data/README.md +43 -0
- data/Rakefile +15 -0
- data/lib/linked_in/api.rb +38 -0
- data/lib/linked_in/api/communications.rb +44 -0
- data/lib/linked_in/api/companies.rb +129 -0
- data/lib/linked_in/api/groups.rb +115 -0
- data/lib/linked_in/api/jobs.rb +64 -0
- data/lib/linked_in/api/people.rb +73 -0
- data/lib/linked_in/api/query_helpers.rb +86 -0
- data/lib/linked_in/api/share_and_social_stream.rb +137 -0
- data/lib/linked_in/client.rb +51 -0
- data/lib/linked_in/errors.rb +29 -0
- data/lib/linked_in/helpers.rb +6 -0
- data/lib/linked_in/helpers/authorization.rb +69 -0
- data/lib/linked_in/helpers/request.rb +85 -0
- data/lib/linked_in/mash.rb +95 -0
- data/lib/linked_in/search.rb +71 -0
- data/lib/linked_in/version.rb +11 -0
- data/lib/linkedin.rb +35 -0
- data/linkedin-build.gemspec +28 -0
- data/spec/cases/api_spec.rb +308 -0
- data/spec/cases/linkedin_spec.rb +37 -0
- data/spec/cases/mash_spec.rb +113 -0
- data/spec/cases/oauth_spec.rb +178 -0
- data/spec/cases/search_spec.rb +234 -0
- data/spec/fixtures/cassette_library/LinkedIn_Api/Company_API.yml +81 -0
- data/spec/fixtures/cassette_library/LinkedIn_Api/Company_API/should_load_correct_company_data.yml +81 -0
- data/spec/fixtures/cassette_library/LinkedIn_Client/_authorize_from_request/should_return_a_valid_access_token.yml +37 -0
- data/spec/fixtures/cassette_library/LinkedIn_Client/_request_token/with_a_callback_url/should_return_a_valid_access_token.yml +37 -0
- data/spec/fixtures/cassette_library/LinkedIn_Client/_request_token/with_default_options/should_return_a_valid_request_token.yml +37 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/by_company_name_option/should_perform_a_search.yml +92 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/by_email_address/should_perform_a_people_search.yml +57 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/by_first_name_and_last_name_options/should_perform_a_search.yml +100 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/by_first_name_and_last_name_options_with_fields/should_perform_a_search.yml +114 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/by_keywords_string_parameter/should_perform_a_search.yml +52 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/by_multiple_email_address/should_perform_a_multi-email_search.yml +59 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/by_single_keywords_option/should_perform_a_search.yml +52 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/by_single_keywords_option_with_pagination/should_perform_a_search.yml +43 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search/email_search_returns_unauthorized/should_raise_an_unauthorized_error.yml +59 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search_company/by_keywords_options_with_fields/should_perform_a_search.yml +43 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search_company/by_keywords_string_parameter/should_perform_a_company_search.yml +80 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search_company/by_single_keywords_option/should_perform_a_company_search.yml +80 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search_company/by_single_keywords_option_with_facets_to_return/should_return_a_facet.yml +80 -0
- data/spec/fixtures/cassette_library/LinkedIn_Search/_search_company/by_single_keywords_option_with_pagination/should_perform_a_search.yml +74 -0
- data/spec/helper.rb +34 -0
- metadata +282 -0
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
|
3
|
+
require 'bundler'
|
4
|
+
Bundler::GemHelper.install_tasks
|
5
|
+
|
6
|
+
require 'rspec/core/rake_task'
|
7
|
+
RSpec::Core::RakeTask.new(:spec)
|
8
|
+
|
9
|
+
task :test => :spec
|
10
|
+
task :default => :spec
|
11
|
+
load 'vcr/tasks/vcr.rake'
|
12
|
+
|
13
|
+
require File.expand_path('../lib/linked_in/version', __FILE__)
|
14
|
+
require 'yard'
|
15
|
+
YARD::Rake::YardocTask.new
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module LinkedIn
|
2
|
+
module Api
|
3
|
+
|
4
|
+
# @!macro person_path_options
|
5
|
+
# @param [Hash] options identifies the user profile you want
|
6
|
+
# @option options [String] :id a member token
|
7
|
+
# @option options [String] :url a Public Profile URL
|
8
|
+
# @option options [String] :email
|
9
|
+
|
10
|
+
# @!macro company_path_options
|
11
|
+
# @param [Hash] options identifies the user profile you want
|
12
|
+
# @option options [String] :domain company email domain
|
13
|
+
# @option options [String] :id company ID
|
14
|
+
# @option options [String] :url
|
15
|
+
# @option options [String] :name company universal name
|
16
|
+
# @option options [String] :is_admin list all companies that the
|
17
|
+
# authenticated is an administrator of
|
18
|
+
|
19
|
+
# @!macro share_input_fields
|
20
|
+
# @param [Hash] share content of the share
|
21
|
+
# @option share [String] :comment
|
22
|
+
# @option share [String] :content
|
23
|
+
# @option share [String] :title
|
24
|
+
# @option share [String] :submitted-url
|
25
|
+
# @option share [String] :submitted-image-url
|
26
|
+
# @option share [String] :description
|
27
|
+
# @option share [String] :visibility
|
28
|
+
# @option share [String] :code
|
29
|
+
|
30
|
+
autoload :QueryHelpers, "linked_in/api/query_helpers"
|
31
|
+
autoload :People, "linked_in/api/people"
|
32
|
+
autoload :Groups, "linked_in/api/groups"
|
33
|
+
autoload :Companies, "linked_in/api/companies"
|
34
|
+
autoload :Jobs, "linked_in/api/jobs"
|
35
|
+
autoload :ShareAndSocialStream, "linked_in/api/share_and_social_stream"
|
36
|
+
autoload :Communications, "linked_in/api/communications"
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module LinkedIn
|
2
|
+
module Api
|
3
|
+
|
4
|
+
# Communications APIs
|
5
|
+
#
|
6
|
+
# @see http://developer.linkedin.com/documents/communications
|
7
|
+
module Communications
|
8
|
+
|
9
|
+
# (Create) send a message from the authenticated user to a
|
10
|
+
# connection
|
11
|
+
#
|
12
|
+
# Permissions: w_messages
|
13
|
+
#
|
14
|
+
# @see http://developer.linkedin.com/documents/messaging-between-connections-api
|
15
|
+
# @see http://developer.linkedin.com/documents/invitation-api Invitation API
|
16
|
+
#
|
17
|
+
# @example
|
18
|
+
# client.send_message("subject", "body", ["person_1_id", "person_2_id"])
|
19
|
+
#
|
20
|
+
# @param [String] subject Subject of the message
|
21
|
+
# @param [String] body Body of the message, plain text only
|
22
|
+
# @param [Array<String>] recipient_paths a collection of
|
23
|
+
# profile paths that identify the users who will receive the
|
24
|
+
# message
|
25
|
+
# @return [void]
|
26
|
+
def send_message(subject, body, recipient_paths)
|
27
|
+
path = '/people/~/mailbox'
|
28
|
+
|
29
|
+
message = {
|
30
|
+
'subject' => subject,
|
31
|
+
'body' => body,
|
32
|
+
'recipients' => {
|
33
|
+
'values' => recipient_paths.map do |profile_path|
|
34
|
+
{ 'person' => { '_path' => "/people/#{profile_path}" } }
|
35
|
+
end
|
36
|
+
}
|
37
|
+
}
|
38
|
+
post(path, MultiJson.dump(message), "Content-Type" => "application/json")
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
module LinkedIn
|
2
|
+
module Api
|
3
|
+
|
4
|
+
# Companies API
|
5
|
+
#
|
6
|
+
# @see https://developer.linkedin.com/docs/company-pages Companies API
|
7
|
+
# @see https://developer.linkedin.com/docs/fields/companies Company Fields
|
8
|
+
#
|
9
|
+
# The following API actions do not have corresponding methods in
|
10
|
+
# this module
|
11
|
+
#
|
12
|
+
# * Permissions Checking Endpoints for Company Shares
|
13
|
+
# * GET Suggested Companies to Follow
|
14
|
+
# * GET Company Products
|
15
|
+
#
|
16
|
+
# [(contribute here)](https://github.com/hexgnu/linkedin)
|
17
|
+
module Companies
|
18
|
+
|
19
|
+
# Retrieve a Company Profile
|
20
|
+
#
|
21
|
+
# @see https://developer.linkedin.com/docs/fields/company-profile Company Profile field
|
22
|
+
# @see https://developer.linkedin.com/docs/company-pages#company_profile Company Profile
|
23
|
+
#
|
24
|
+
# @macro company_path_options
|
25
|
+
# @option options [String] :scope
|
26
|
+
# @option options [String] :type
|
27
|
+
# @option options [String] :count
|
28
|
+
# @option options [String] :start
|
29
|
+
# @return [LinkedIn::Mash]
|
30
|
+
def company(options = {})
|
31
|
+
path = company_path(options)
|
32
|
+
simple_query(path, options)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Retrieve a feed of event items for a Company
|
36
|
+
#
|
37
|
+
# @see https://developer.linkedin.com/docs/company-pages#get_update Get Specific Company Update
|
38
|
+
#
|
39
|
+
# @macro company_path_options
|
40
|
+
# @option options [String] :event-type
|
41
|
+
# @option options [String] :count
|
42
|
+
# @option options [String] :start
|
43
|
+
# @return [LinkedIn::Mash]
|
44
|
+
def company_updates(options={})
|
45
|
+
path = "#{company_path(options)}/updates"
|
46
|
+
simple_query(path, options)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Retrieve statistics for a particular company page
|
50
|
+
#
|
51
|
+
# Permissions: rw_company_admin
|
52
|
+
#
|
53
|
+
# @see https://developer.linkedin.com/docs/company-pages#statistics Get Company Statistics
|
54
|
+
#
|
55
|
+
# @macro company_path_options
|
56
|
+
# @return [LinkedIn::Mash]
|
57
|
+
def company_statistics(options={})
|
58
|
+
path = "#{company_path(options)}/company-statistics"
|
59
|
+
simple_query(path, options)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Retrieve comments on a particular company update:
|
63
|
+
#
|
64
|
+
# @see https://developer.linkedin.com/docs/company-pages#get_update_comments Get comments for a specific Company update
|
65
|
+
#
|
66
|
+
# @param [String] update_key a update/update-key representing a
|
67
|
+
# particular company update
|
68
|
+
# @macro company_path_options
|
69
|
+
# @return [LinkedIn::Mash]
|
70
|
+
def company_updates_comments(update_key, options={})
|
71
|
+
path = "#{company_path(options)}/updates/key=#{update_key}/update-comments"
|
72
|
+
simple_query(path, options)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Retrieve likes on a particular company update:
|
76
|
+
#
|
77
|
+
# @see https://developer.linkedin.com/docs/company-pages#get_update_likes Get likes for a specific Company update
|
78
|
+
#
|
79
|
+
# @param [String] update_key a update/update-key representing a
|
80
|
+
# particular company update
|
81
|
+
# @macro company_path_options
|
82
|
+
# @return [LinkedIn::Mash]
|
83
|
+
def company_updates_likes(update_key, options={})
|
84
|
+
path = "#{company_path(options)}/updates/key=#{update_key}/likes"
|
85
|
+
simple_query(path, options)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Create a share for a company that the authenticated user
|
89
|
+
# administers
|
90
|
+
#
|
91
|
+
# Permissions: rw_company_admin
|
92
|
+
#
|
93
|
+
# @see https://developer.linkedin.com/docs/company-pages#company_share Create a company share
|
94
|
+
# @see https://developer.linkedin.com/docs/company-pages#targetting_shares Targeting company shares
|
95
|
+
#
|
96
|
+
# @param [String] company_id Company ID
|
97
|
+
# @macro share_input_fields
|
98
|
+
# @return [void]
|
99
|
+
def add_company_share(company_id, share)
|
100
|
+
path = "/companies/#{company_id}/shares"
|
101
|
+
defaults = { visibility: { code: 'anyone' } }
|
102
|
+
post(path, MultiJson.dump(defaults.merge(share)), "Content-Type" => "application/json")
|
103
|
+
end
|
104
|
+
|
105
|
+
# (Create) authenticated user starts following a company
|
106
|
+
#
|
107
|
+
# @see http://developer.linkedin.com/documents/company-follow-and-suggestions
|
108
|
+
#
|
109
|
+
# @param [String] company_id Company ID
|
110
|
+
# @return [void]
|
111
|
+
def follow_company(company_id)
|
112
|
+
path = "/people/~/following/companies"
|
113
|
+
body = { id: company_id }
|
114
|
+
post(path, MultiJson.dump(body), "Content-Type" => "application/json")
|
115
|
+
end
|
116
|
+
|
117
|
+
# (Destroy) authenticated user stops following a company
|
118
|
+
#
|
119
|
+
# @see http://developer.linkedin.com/documents/company-follow-and-suggestions
|
120
|
+
#
|
121
|
+
# @param [String] company_id Company ID
|
122
|
+
# @return [void]
|
123
|
+
def unfollow_company(company_id)
|
124
|
+
path = "/people/~/following/companies/id=#{company_id}"
|
125
|
+
delete(path)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
module LinkedIn
|
2
|
+
module Api
|
3
|
+
|
4
|
+
# Groups API
|
5
|
+
#
|
6
|
+
# @see http://developer.linkedin.com/documents/groups-api Groups API
|
7
|
+
# @see http://developer.linkedin.com/documents/groups-fields Groups Fields
|
8
|
+
#
|
9
|
+
# The following API actions do not have corresponding methods in
|
10
|
+
# this module
|
11
|
+
#
|
12
|
+
# * PUT Change my Group Settings
|
13
|
+
# * POST Change my Group Settings
|
14
|
+
# * DELETE Leave a group
|
15
|
+
# * PUT Follow/unfollow a Group post
|
16
|
+
# * PUT Flag a Post as a Promotion or Job
|
17
|
+
# * DELETE Delete a Post
|
18
|
+
# * DELETE Flag a post as inappropriate
|
19
|
+
# * DELETE A comment or flag comment as inappropriate
|
20
|
+
# * DELETE Remove a Group Suggestion
|
21
|
+
#
|
22
|
+
# [(contribute here)](https://github.com/hexgnu/linkedin)
|
23
|
+
module Groups
|
24
|
+
|
25
|
+
# Retrieve group suggestions for the current user
|
26
|
+
#
|
27
|
+
# Permissions: r_fullprofile
|
28
|
+
#
|
29
|
+
# @see http://developer.linkedin.com/documents/job-bookmarks-and-suggestions
|
30
|
+
#
|
31
|
+
# @macro person_path_options
|
32
|
+
# @return [LinkedIn::Mash]
|
33
|
+
def group_suggestions(options = {})
|
34
|
+
path = "#{person_path(options)}/suggestions/groups"
|
35
|
+
simple_query(path, options)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Retrieve the groups a current user belongs to
|
39
|
+
#
|
40
|
+
# Permissions: rw_groups
|
41
|
+
#
|
42
|
+
# @see http://developer.linkedin.com/documents/groups-api
|
43
|
+
#
|
44
|
+
# @macro person_path_options
|
45
|
+
# @return [LinkedIn::Mash]
|
46
|
+
def group_memberships(options = {})
|
47
|
+
path = "#{person_path(options)}/group-memberships"
|
48
|
+
simple_query(path, options)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Retrieve the profile of a group
|
52
|
+
#
|
53
|
+
# Permissions: rw_groups
|
54
|
+
#
|
55
|
+
# @see http://developer.linkedin.com/documents/groups-api
|
56
|
+
#
|
57
|
+
# @param [Hash] options identifies the group or groups
|
58
|
+
# @optio options [String] :id identifier for the group
|
59
|
+
# @return [LinkedIn::Mash]
|
60
|
+
def group_profile(options)
|
61
|
+
path = group_path(options)
|
62
|
+
simple_query(path, options)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Retrieve the posts in a group
|
66
|
+
#
|
67
|
+
# Permissions: rw_groups
|
68
|
+
#
|
69
|
+
# @see http://developer.linkedin.com/documents/groups-api
|
70
|
+
#
|
71
|
+
# @param [Hash] options identifies the group or groups
|
72
|
+
# @optio options [String] :id identifier for the group
|
73
|
+
# @optio options [String] :count
|
74
|
+
# @optio options [String] :start
|
75
|
+
# @return [LinkedIn::Mash]
|
76
|
+
def group_posts(options)
|
77
|
+
path = "#{group_path(options)}/posts"
|
78
|
+
simple_query(path, options)
|
79
|
+
end
|
80
|
+
|
81
|
+
# @deprecated Use {#add_group_share} instead
|
82
|
+
def post_group_discussion(group_id, discussion)
|
83
|
+
warn 'Use add_group_share over post_group_discussion. This will be taken out in future versions'
|
84
|
+
add_group_share(group_id, discussion)
|
85
|
+
end
|
86
|
+
|
87
|
+
# Create a share for a company that the authenticated user
|
88
|
+
# administers
|
89
|
+
#
|
90
|
+
# Permissions: rw_groups
|
91
|
+
#
|
92
|
+
# @see http://developer.linkedin.com/documents/groups-api#create
|
93
|
+
#
|
94
|
+
# @param [String] group_id Group ID
|
95
|
+
# @macro share_input_fields
|
96
|
+
# @return [void]
|
97
|
+
def add_group_share(group_id, share)
|
98
|
+
path = "/groups/#{group_id}/posts"
|
99
|
+
post(path, MultiJson.dump(share), "Content-Type" => "application/json")
|
100
|
+
end
|
101
|
+
|
102
|
+
# (Update) User joins, or requests to join, a group
|
103
|
+
#
|
104
|
+
# @see http://developer.linkedin.com/documents/groups-api#membergroups
|
105
|
+
#
|
106
|
+
# @param [String] group_id Group ID
|
107
|
+
# @return [void]
|
108
|
+
def join_group(group_id)
|
109
|
+
path = "/people/~/group-memberships/#{group_id}"
|
110
|
+
body = {'membership-state' => {'code' => 'member' }}
|
111
|
+
put(path, MultiJson.dump(body), "Content-Type" => "application/json")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module LinkedIn
|
2
|
+
module Api
|
3
|
+
|
4
|
+
# Jobs API
|
5
|
+
#
|
6
|
+
# @see http://developer.linkedin.com/documents/job-lookup-api-and-fields Job Lookup API and Fields
|
7
|
+
# @see http://developer.linkedin.com/documents/job-bookmarks-and-suggestions Job Bookmarks and Suggestions
|
8
|
+
#
|
9
|
+
# The following API actions do not have corresponding methods in
|
10
|
+
# this module
|
11
|
+
#
|
12
|
+
# * DELETE a Job Bookmark
|
13
|
+
#
|
14
|
+
# [(contribute here)](https://github.com/hexgnu/linkedin)
|
15
|
+
module Jobs
|
16
|
+
|
17
|
+
# Retrieve likes on a particular company update:
|
18
|
+
#
|
19
|
+
# @see http://developer.linkedin.com/reading-company-shares
|
20
|
+
#
|
21
|
+
# @param [Hash] options identifies the job
|
22
|
+
# @option options [String] id unique identifier for a job
|
23
|
+
# @return [LinkedIn::Mash]
|
24
|
+
def job(options = {})
|
25
|
+
path = jobs_path(options)
|
26
|
+
simple_query(path, options)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Retrieve the current members' job bookmarks
|
30
|
+
#
|
31
|
+
# @see http://developer.linkedin.com/documents/job-bookmarks-and-suggestions
|
32
|
+
#
|
33
|
+
# @macro person_path_options
|
34
|
+
# @return [LinkedIn::Mash]
|
35
|
+
def job_bookmarks(options = {})
|
36
|
+
path = "#{person_path(options)}/job-bookmarks"
|
37
|
+
simple_query(path, options)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Retrieve job suggestions for the current user
|
41
|
+
#
|
42
|
+
# @see http://developer.linkedin.com/documents/job-bookmarks-and-suggestions
|
43
|
+
#
|
44
|
+
# @macro person_path_options
|
45
|
+
# @return [LinkedIn::Mash]
|
46
|
+
def job_suggestions(options = {})
|
47
|
+
path = "#{person_path(options)}/suggestions/job-suggestions"
|
48
|
+
simple_query(path, options)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Create a job bookmark for the authenticated user
|
52
|
+
#
|
53
|
+
# @see http://developer.linkedin.com/documents/job-bookmarks-and-suggestions
|
54
|
+
#
|
55
|
+
# @param [String] job_id Job ID
|
56
|
+
# @return [void]
|
57
|
+
def add_job_bookmark(job_id)
|
58
|
+
path = "/people/~/job-bookmarks"
|
59
|
+
body = {'job' => {'id' => job_id}}
|
60
|
+
post(path, MultiJson.dump(body), "Content-Type" => "application/json")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module LinkedIn
|
2
|
+
module Api
|
3
|
+
|
4
|
+
# People APIs
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# @see https://developer.linkedin.com/docs/fields/basic-profile Profile Fields
|
8
|
+
# @see http://developer.linkedin.com/documents/field-selectors Field Selectors
|
9
|
+
# @see http://developer.linkedin.com/documents/accessing-out-network-profiles Accessing Out of Network Profiles
|
10
|
+
module People
|
11
|
+
|
12
|
+
# Retrieve a member's LinkedIn profile.
|
13
|
+
#
|
14
|
+
# Permissions: r_basicprofile, r_fullprofile
|
15
|
+
#
|
16
|
+
# @see https://developer.linkedin.com/docs/signin-with-linkedin#content-par_componenttabbedlist_resource_1_resourceparagraph_6
|
17
|
+
# @macro person_path_options
|
18
|
+
# @option options [string] :secure-urls if 'true' URLs in responses will be HTTPS
|
19
|
+
# @return [LinkedIn::Mash]
|
20
|
+
def profile(options={})
|
21
|
+
path = person_path(options)
|
22
|
+
simple_query(path, options)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Retrieve a list of 1st degree connections for a user who has
|
26
|
+
# granted access to his/her account
|
27
|
+
#
|
28
|
+
# Permissions: r_network
|
29
|
+
#
|
30
|
+
# @see http://developer.linkedin.com/documents/connections-api
|
31
|
+
#
|
32
|
+
# @macro person_path_options
|
33
|
+
# @return [LinkedIn::Mash]
|
34
|
+
def connections(options={})
|
35
|
+
path = "#{person_path(options)}/connections"
|
36
|
+
simple_query(path, options)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Retrieve a list of the latest set of 1st degree connections for a
|
40
|
+
# user
|
41
|
+
#
|
42
|
+
# Permissions: r_network
|
43
|
+
#
|
44
|
+
# @see http://developer.linkedin.com/documents/connections-api
|
45
|
+
#
|
46
|
+
# @param [String] modified_since timestamp indicating since when
|
47
|
+
# you want to retrieve new connections
|
48
|
+
# @macro person_path_options
|
49
|
+
# @return [LinkedIn::Mash]
|
50
|
+
def new_connections(modified_since, options={})
|
51
|
+
options.merge!('modified' => 'new', 'modified-since' => modified_since)
|
52
|
+
path = "#{person_path(options)}/connections"
|
53
|
+
simple_query(path, options)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Retrieve the picture url
|
57
|
+
# http://api.linkedin.com/v1/people/~/picture-urls::(original)
|
58
|
+
#
|
59
|
+
# Permissions: r_network
|
60
|
+
#
|
61
|
+
# @options [String] :id, the id of the person for whom you want the profile picture
|
62
|
+
# @options [String] :picture_size, default: 'original'
|
63
|
+
# @options [String] :secure, default: 'false', options: ['false','true']
|
64
|
+
#
|
65
|
+
# example for use in code: client.picture_urls(:id => 'id_of_connection')
|
66
|
+
def picture_urls(options={})
|
67
|
+
picture_size = options.delete(:picture_size) || 'original'
|
68
|
+
path = "#{picture_urls_path(options)}::(#{picture_size})"
|
69
|
+
simple_query(path, options)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|