Class: OpenIDConnect::Client::Registrar

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Validations, AttrOptional, AttrRequired
Defined in:
lib/openid_connect/client/registrar.rb

Defined Under Namespace

Classes: RegistrationFailed

Instance Method Summary collapse

Constructor Details

#initialize(endpoint, attributes = {}) ⇒ Registrar

Returns a new instance of Registrar.



59
60
61
62
63
64
65
# File 'lib/openid_connect/client/registrar.rb', line 59

def initialize(endpoint, attributes = {})
  self.endpoint = endpoint
  self.initial_access_token = attributes[:initial_access_token]
  self.class..each do |_attr_|
    self.send "#{_attr_}=", attributes[_attr_]
  end
end

Instance Method Details

#as_json(options = {}) ⇒ Object



86
87
88
89
90
91
92
93
# File 'lib/openid_connect/client/registrar.rb', line 86

def as_json(options = {})
  validate!
  self.class..inject({}) do |hash, _attr_|
    value = self.send _attr_
    hash.merge! _attr_ => value unless value.nil?
    hash
  end
end

#readObject



101
102
103
# File 'lib/openid_connect/client/registrar.rb', line 101

def read
  # TODO: Do we want this feature even if we don't have rotate secret nor update metadata support?
end

#register!Object



95
96
97
98
99
# File 'lib/openid_connect/client/registrar.rb', line 95

def register!
  handle_response do
    http_client.post endpoint, to_json, 'Content-Type' => 'application/json'
  end
end

#sector_identifierObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/openid_connect/client/registrar.rb', line 67

def sector_identifier
  if valid_uri?(sector_identifier_uri)
    URI.parse(sector_identifier_uri).host
  else
    hosts = redirect_uris.collect do |redirect_uri|
      if valid_uri?(redirect_uri, nil)
        URI.parse(redirect_uri).host
      else
        nil
      end
    end.compact.uniq
    if hosts.size == 1
      hosts.first
    else
      nil
    end
  end
end

#validate!Object



105
106
107
# File 'lib/openid_connect/client/registrar.rb', line 105

def validate!
  valid? or raise ValidationFailed.new(self)
end