warden-github 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,6 +21,68 @@ module Warden
21
21
  def company
22
22
  attribs['company']
23
23
  end
24
+
25
+ # See if the user is a public member of the named organization
26
+ #
27
+ # name - the organization name
28
+ #
29
+ # Returns: true if the user is publicized as an org member
30
+ def publicized_organization_member?(org_name)
31
+ members = github_request("orgs/#{name}/public_members")
32
+ members.map { |org| org["login"] }.include?(login)
33
+ rescue RestClient::Forbidden, RestClient::Unauthorized, RestClient::ResourceNotFound => e
34
+ false
35
+ end
36
+
37
+ # See if the user is a member of the named organization
38
+ #
39
+ # name - the organization name
40
+ #
41
+ # Returns: true if the user has access, false otherwise
42
+ def organization_member?(name)
43
+ orgs = github_request("orgs/#{name}/members")
44
+ orgs.map { |org| org["login"] }.include?(github_user.login)
45
+ rescue RestClient::Forbidden, RestClient::Unauthorized, RestClient::ResourceNotFound => e
46
+ false
47
+ end
48
+
49
+ # See if the user is a member of the team id
50
+ #
51
+ # team_id - the team's id
52
+ #
53
+ # Returns: true if the user has access, false otherwise
54
+ def team_member?(team_id)
55
+ members = github_request("teams/#{team_id}/members")
56
+ members.map { |user| user["login"] }.include?(login)
57
+ rescue RestClient::Forbidden, RestClient::Unauthorized, RestClient::ResourceNotFound => e
58
+ false
59
+ end
60
+
61
+ # Send a V3 API GET request to path and parse the response body
62
+ #
63
+ # path - the path on api.github.com to hit
64
+ #
65
+ # Returns a parsed JSON response
66
+ #
67
+ # Examples
68
+ # github_request("/user")
69
+ # # => { 'login' => 'atmos', ... }
70
+ def github_request(path)
71
+ Yajl.load(github_raw_request(path))
72
+ end
73
+
74
+ # Send a V3 API GET request to path
75
+ #
76
+ # path - the path on api.github.com to hit
77
+ #
78
+ # Returns a rest client response object
79
+ #
80
+ # Examples
81
+ # github_raw_request("/user")
82
+ # # => RestClient::Response
83
+ def github_raw_request(path)
84
+ RestClient.get("#{github_api_uri}/#{path}", :params => { :access_token => token }, :accept => :json)
85
+ end
24
86
  end
25
87
  end
26
88
  end
@@ -1,5 +1,5 @@
1
1
  module Warden
2
2
  module Github
3
- VERSION = "0.4.3"
3
+ VERSION = "0.4.4"
4
4
  end
5
5
  end
data/spec/proxy_spec.rb CHANGED
@@ -5,14 +5,15 @@ describe "Warden::Github::Oauth::Proxy" do
5
5
  sha = Digest::SHA1.hexdigest(Time.now.to_s)
6
6
  @proxy = Warden::Github::Oauth::Proxy.new(sha[0..19], sha[0..39],
7
7
  'user,public_repo,repo,gist',
8
+ 'http://example.org',
8
9
  'http://example.org/auth/github/callback')
9
10
  end
10
11
 
11
12
  it "returns an authorize url" do
12
13
  uri = Addressable::URI.parse(@proxy.authorize_url)
13
14
 
14
- uri.scheme.should eql('https')
15
- uri.host.should eql('github.com')
15
+ uri.scheme.should eql('http')
16
+ uri.host.should eql('example.org')
16
17
 
17
18
  params = uri.query_values
18
19
  params['response_type'].should eql('code')
data/spec/spec_helper.rb CHANGED
@@ -4,7 +4,7 @@ require File.join(File.dirname(__FILE__), '..', 'lib', 'warden-github')
4
4
  require File.join(File.dirname(__FILE__), 'app')
5
5
  require 'rack/test'
6
6
  require 'webrat'
7
-
7
+ require 'addressable/uri'
8
8
  require 'pp'
9
9
 
10
10
  Webrat.configure do |config|
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden-github
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 3
10
- version: 0.4.3
9
+ - 4
10
+ version: 0.4.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Corey Donohoe
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-25 00:00:00 -07:00
18
+ date: 2012-05-29 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency