class Warden::GitHub::User
Constants
- ATTRIBUTES
Attributes
memberships[RW]
Public Class Methods
load(access_token, browser_session_id = nil)
click to toggle source
# File lib/warden/github/user.rb, line 8 def self.load(access_token, browser_session_id = nil) api = Octokit::Client.new(access_token: access_token) data = { } api.user.to_hash.each do |k,v| data[k.to_s] = v if ATTRIBUTES.include?(k.to_s) end new(data, access_token, browser_session_id) end
Public Instance Methods
api()
click to toggle source
Access the GitHub
API from Octokit
Octokit is a robust client library for the GitHub
API github.com/octokit/octokit.rb
Returns a cached client object for easy use
# File lib/warden/github/user.rb, line 101 def api # Don't cache instance for now because of a ruby marshaling bug present # in MRI 1.9.3 (Bug #7627) that causes instance variables to be # marshaled even when explicitly specifying #marshal_dump. Octokit::Client.new(login: login, access_token: token) end
browser_session_valid?(since = 120)
click to toggle source
Identify if the browser session is still valid
Returns: true if the browser session is still active or the GitHub
API is unavailable
# File lib/warden/github/user.rb, line 77 def browser_session_valid?(since = 120) return true unless using_single_sign_out? client = api client.get("/user/sessions/active", browser_session_id: browser_session_id) client.last_response.status == 204 rescue Octokit::ServerError # GitHub API unavailable true rescue Octokit::ClientError => e # GitHub API failed false end
marshal_dump()
click to toggle source
# File lib/warden/github/user.rb, line 19 def marshal_dump Hash[members.zip(values)] end
marshal_load(hash)
click to toggle source
# File lib/warden/github/user.rb, line 23 def marshal_load(hash) hash.each { |k,v| send("#{k}=", v) } end
organization_member?(org_name)
click to toggle source
See if the user is a member of the named organization
name - the organization name
Returns: true if the user has access, false otherwise
# File lib/warden/github/user.rb, line 50 def organization_member?(org_name) membership_cache.fetch_membership(:org, org_name) do api.organization_member?(org_name, login) end end
organization_public_member?(org_name)
click to toggle source
See if the user is a public member of the named organization
name - the organization name
Returns: true if the user is publicized as an org member
# File lib/warden/github/user.rb, line 36 def organization_public_member?(org_name) membership_cache.fetch_membership(:org_pub, org_name) do api.organization_public_member?(org_name, login) end end
Also aliased as: publicized_organization_member?
publicized_organization_member?(org_name)
Backwards compatibility:
Alias for: organization_public_member?
site_admin?()
click to toggle source
team_member?(team_id)
click to toggle source
See if the user is a member of the team id
team_id - the team's id
Returns: true if the user has access, false otherwise
# File lib/warden/github/user.rb, line 61 def team_member?(team_id) membership_cache.fetch_membership(:team, team_id) do api.team_member?(team_id, login) end end
Private Instance Methods
membership_cache()
click to toggle source
# File lib/warden/github/user.rb, line 110 def membership_cache self.memberships ||= {} @membership_cache ||= MembershipCache.new(memberships) end