Class: OpenSesame::Member
- Inherits:
-
Object
- Object
- OpenSesame::Member
- Defined in:
- lib/open_sesame/member.rb
Instance Attribute Summary collapse
-
#attributes ⇒ Object
Returns the value of attribute attributes.
Class Method Summary collapse
- .client ⇒ Object
- .find(member_login) ⇒ Object
- .find_member(member_login) ⇒ Object
- .lazy_attr_reader(*attrs) ⇒ Object
- .member?(member_login) ⇒ Boolean
- .member_logins ⇒ Object
-
.members ⇒ Object
memoized list of accepted member.
- .organization_name ⇒ Object
- .reset ⇒ Object
- .serialize_from_session(*args) ⇒ Object
- .serialize_into_session(member) ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#initialize(attributes = {}) ⇒ Member
constructor
A new instance of Member.
- #organization_name ⇒ Object
Constructor Details
#initialize(attributes = {}) ⇒ Member
Returns a new instance of Member.
85 86 87 |
# File 'lib/open_sesame/member.rb', line 85 def initialize(attributes = {}) @attributes = attributes end |
Instance Attribute Details
#attributes ⇒ Object
Returns the value of attribute attributes.
82 83 84 |
# File 'lib/open_sesame/member.rb', line 82 def attributes @attributes end |
Class Method Details
.client ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/open_sesame/member.rb', line 45 def self.client @client ||= begin require "faraday-http-cache" stack = Faraday::RackBuilder.new do |builder| builder.response :logger, OpenSesame.logger builder.use Faraday::HttpCache unless OpenSesame.debug? builder.use Octokit::Response::RaiseError builder.adapter Faraday.default_adapter end Octokit.middleware = stack Octokit::Client.new(OpenSesame.github_application) end end |
.find(member_login) ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/open_sesame/member.rb', line 11 def self.find(member_login) return nil unless member_login.present? return unless member?(member_login) member = find_member(member_login) # Sawyer::Resource return unless member # may have been an API error members << member new(member.attrs) end |
.find_member(member_login) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/open_sesame/member.rb', line 20 def self.find_member(member_login) members.detect { |m| m.login == member_login } || begin client.user(member_login) rescue Octokit::Error => ek OpenSesame.logger.info e end end |
.lazy_attr_reader(*attrs) ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/open_sesame/member.rb', line 63 def self.lazy_attr_reader(*attrs) attrs.each do |attribute| class_eval do define_method(attribute) do @attributes[attribute] || @attributes[attribute] # allow string or symbol access end end end end |
.member?(member_login) ⇒ Boolean
28 29 30 31 32 33 34 |
# File 'lib/open_sesame/member.rb', line 28 def self.member?(member_login) member_logins.include?(member_login) || begin client.organization_member?(organization_name, member_login) rescue Octokit::ServerError => e OpenSesame.logger.info e end end |
.member_logins ⇒ Object
41 42 43 |
# File 'lib/open_sesame/member.rb', line 41 def self.member_logins members.map(&:login) end |
.members ⇒ Object
memoized list of accepted member
37 38 39 |
# File 'lib/open_sesame/member.rb', line 37 def self.members @members ||= [] end |
.organization_name ⇒ Object
7 8 9 |
# File 'lib/open_sesame/member.rb', line 7 def self.organization_name OpenSesame.organization_name end |
.reset ⇒ Object
59 60 61 |
# File 'lib/open_sesame/member.rb', line 59 def self.reset @members = nil end |
.serialize_from_session(*args) ⇒ Object
77 78 79 80 |
# File 'lib/open_sesame/member.rb', line 77 def self.serialize_from_session(*args) login = args.shift find(login) end |
.serialize_into_session(member) ⇒ Object
73 74 75 |
# File 'lib/open_sesame/member.rb', line 73 def self.serialize_into_session(member) [member.login] end |
Instance Method Details
#==(other) ⇒ Object
93 94 95 |
# File 'lib/open_sesame/member.rb', line 93 def ==(other) super || (other.class == self.class && other.id == self.id) end |
#organization_name ⇒ Object
89 90 91 |
# File 'lib/open_sesame/member.rb', line 89 def organization_name self.class.organization_name end |