ezlinkedin 0.1.2 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e41a036aa39d2b62bf71ba423b45424245ce5a6f
4
- data.tar.gz: ff128a067223782872b2b02dfb330a0efdddb1ed
3
+ metadata.gz: 732cfd1e0e6434f0a3cafe87bd6e6196c4537442
4
+ data.tar.gz: af17d9ba544c77223fe0c81bf016c45a9dbbca58
5
5
  SHA512:
6
- metadata.gz: daf1f39f9e0d34c6e7ec6f435ad3cd24104874604e0e6464b3a1149ff9c981825408002a819470850e222308c8d3e56723d7783d408ae78e66cc05c0b82db163
7
- data.tar.gz: 880d0431fabace961805e1c5e08050a3a4db241f6a753edec8c6c7029f40d84e4b36d7762158ccb3db1986fe20e5972adc1f599d72255302e31cf7c4ffcfb028
6
+ metadata.gz: 358ee684769177036991aab5cb8b22dcab1f1df0267aec93b6ebf8939729d31ef79594012682e026cbf47620c26a46435bae809567de1d67d942cc8cd900c1a6
7
+ data.tar.gz: 83813e8d1f536d4e8380a12248b13e3053e43e619e4cf329991ad3e18c8e7eb786b9df133d9ebe6d2fe6417e1c861b2e78854ecc4daedecf98d38912df1ecb09
@@ -48,11 +48,23 @@ module EzLinkedin
48
48
  # options can also include a string array of fields to return. See
49
49
  # the linkedin api for available fields
50
50
  #
51
- # @return [type] [description]
51
+ # @return [Mash] Mash hash of results
52
52
  def company(options={})
53
53
  path = company_path(options)
54
- fields = options.include?(:fields)
55
- make_query(path, options, fields)
54
+ use_fields = options.include?(:fields)
55
+ make_query(path, options, use_fields)
56
+ end
57
+
58
+
59
+ #
60
+ # Returns the groups the current user is a member of
61
+ # @param options={} [Hash] can include a string array
62
+ # containing the names of fields to get from each group
63
+ #
64
+ # @return [Mash] Mash hash of results
65
+ def group_memberships(options={})
66
+ path = "#{person_path(options)}/group-memberships#{group_options(options)}"
67
+ make_query(path, options.merge({member: true}), false)
56
68
  end
57
69
 
58
70
  private
@@ -84,6 +96,7 @@ module EzLinkedin
84
96
  end
85
97
  end
86
98
 
99
+
87
100
  #
88
101
  # create a valid path to make a restful request
89
102
  # @param path [String] current path
@@ -100,6 +113,8 @@ module EzLinkedin
100
113
  path += network_options(options).to_s # if getting updates, add relevant options to the path
101
114
  elsif count = options.delete(:count)
102
115
  path += "?count=#{count}"
116
+ elsif member = options.delete(:member)
117
+ path += "?membership-state=member"
103
118
  end
104
119
 
105
120
  Mash.from_json(get(path, options))
@@ -140,6 +155,12 @@ module EzLinkedin
140
155
  options_path += "&#{option}"
141
156
  end
142
157
  end
158
+
159
+ def group_options(options)
160
+ if fields = options.delete(:fields)
161
+ path = ":(group:(#{fields.join(',')}))"
162
+ end
163
+ end
143
164
  end
144
165
 
145
166
  end
@@ -2,11 +2,10 @@ module EzLinkedin
2
2
  module Api
3
3
 
4
4
  module UpdateMethods
5
-
6
- #
5
+ #
7
6
  # post a share to Linkedin
8
7
  # @param share [Hash] a hash containing at least the required
9
- # attributes for a share.
8
+ # attributes for a share.
10
9
  # post_share({:comment => "I'm a comment",
11
10
  # :content => { :title => "A title!",
12
11
  # :description => "A description",
@@ -15,13 +14,25 @@ module EzLinkedin
15
14
  # },
16
15
  # :visibility => { :code => "anyone"}
17
16
  # })
18
- #
19
- # @return [HTTP::Response?] response of post call
17
+ #
18
+ # @return [HTTP::Response] response of post call
20
19
  def post_share(share)
21
20
  path = "/people/~/shares"
22
21
  defaults = { visibility: { code: 'anyone' } }
23
22
  post(path, defaults.merge(share).to_json, "Content-Type" => "application/json")
24
23
  end
24
+
25
+
26
+ #
27
+ # Join a group
28
+ # @param id [Fixnum] number representing group id
29
+ #
30
+ # @return [HTTP:Response] response of put call
31
+ def join_group(id)
32
+ path = "/people/~/group-memberships/#{id}"
33
+ body = {'membership-state' => {'code' => 'member'}}
34
+ put(path, body.to_json, "Content-Type" => "application/json")
35
+ end
25
36
  end
26
37
  end
27
38
  end
@@ -21,6 +21,12 @@ module EzLinkedin
21
21
  response
22
22
  end
23
23
 
24
+ def put(path, body='', options={})
25
+ response = access_token.put("#{API_PATH}#{path}", body, DEFAULT_HEADERS.merge(options))
26
+ raise_errors(response)
27
+ response
28
+ end
29
+
24
30
  private
25
31
 
26
32
  def raise_errors(response)
@@ -1,3 +1,3 @@
1
1
  module Ezlinkedin
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.2"
3
3
  end
data/lib/ezlinkedin.rb CHANGED
@@ -5,6 +5,7 @@ require 'ezlinkedin/mash'
5
5
  require 'ezlinkedin/client'
6
6
  require 'ezlinkedin/errors'
7
7
  require 'oauth'
8
+ require 'json'
8
9
  require 'open-uri'
9
10
 
10
11
  module EzLinkedin
data/spec/api_spec.rb CHANGED
@@ -130,22 +130,27 @@ describe EzLinkedin::Api do
130
130
  # end
131
131
  end
132
132
 
133
- # context "Group API" do
134
- #
135
- # it "should be able to list group memberships for a profile" do
136
- # stub_request(:get, "https://api.linkedin.com/v1/people/~/group-memberships").to_return(:body => "{}")
137
- # client.group_memberships.should be_an_instance_of(EzLinkedin::Mash)
138
- # end
139
- #
140
- # it "should be able to join a group" do
141
- # stub_request(:put, "https://api.linkedin.com/v1/people/~/group-memberships/123").to_return(:body => "", :status => 201)
142
- #
143
- # response = client.join_group(123)
144
- # response.body.should == nil
145
- # response.code.should == "201"
146
- # end
147
- #
148
- # end
133
+ context "Group API" do
134
+
135
+ it "should be able to list group memberships for a profile" do
136
+ stub_request(:get, "https://api.linkedin.com/v1/people/~/group-memberships?membership-state=member").to_return(:body => "{}")
137
+ client.group_memberships.should be_an_instance_of(EzLinkedin::Mash)
138
+ end
139
+
140
+ it "should be able to get group memberships given an option of fields" do
141
+ stub_request(:get, "https://api.linkedin.com/v1/people/~/group-memberships:(group:(id,name))?membership-state=member").to_return(:body => "{}")
142
+ client.group_memberships(fields: ['id', 'name']).should be_an_instance_of(EzLinkedin::Mash)
143
+ end
144
+
145
+ it "should be able to join a group" do
146
+ stub_request(:put, "https://api.linkedin.com/v1/people/~/group-memberships/123").to_return(:body => "", :status => 201)
147
+
148
+ response = client.join_group(123)
149
+ response.body.should == nil
150
+ response.code.should == "201"
151
+ end
152
+
153
+ end
149
154
 
150
155
  context "Errors" do
151
156
  it "should raise AccessDeniedError when EzLinkedin returns 403 status code" do
@@ -34,4 +34,4 @@ describe EzLinkedin do
34
34
  EzLinkedin.default_profile_fields.should == ['education', 'positions']
35
35
  end
36
36
 
37
- end
37
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ezlinkedin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - akonwi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-28 00:00:00.000000000 Z
11
+ date: 2013-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth