Class: OpenSesame::Member

Inherits:
Object
  • Object
show all
Defined in:
lib/open_sesame/member.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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

#attributesObject

Returns the value of attribute attributes.



82
83
84
# File 'lib/open_sesame/member.rb', line 82

def attributes
  @attributes
end

Class Method Details

.clientObject



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()
  return nil unless .present?
  return unless member?()
  member = find_member() # 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()
  members.detect { |m| m. ==  } || begin
    client.user()
  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

Returns:

  • (Boolean)


28
29
30
31
32
33
34
# File 'lib/open_sesame/member.rb', line 28

def self.member?()
  member_logins.include?() || begin
    client.organization_member?(organization_name, )
  rescue Octokit::ServerError => e
    OpenSesame.logger.info e
  end
end

.member_loginsObject



41
42
43
# File 'lib/open_sesame/member.rb', line 41

def self.member_logins
  members.map(&:login)
end

.membersObject

memoized list of accepted member



37
38
39
# File 'lib/open_sesame/member.rb', line 37

def self.members
  @members ||= []
end

.organization_nameObject



7
8
9
# File 'lib/open_sesame/member.rb', line 7

def self.organization_name
  OpenSesame.organization_name
end

.resetObject



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)
   = args.shift
  find()
end

.serialize_into_session(member) ⇒ Object



73
74
75
# File 'lib/open_sesame/member.rb', line 73

def self.serialize_into_session(member)
  [member.]
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_nameObject



89
90
91
# File 'lib/open_sesame/member.rb', line 89

def organization_name
  self.class.organization_name
end