class ZuoraConnect::Login
def initialize (fields)
def initialize (fields) self.clients = {} self.identifier_to_ids = {} if fields["tenant_type"] == "Zuora" login_fields = fields.map{|k,v| [k.to_sym, v]}.to_h login_type = fields.dig("authentication_type").blank? ? 'Basic' : fields.dig("authentication_type").capitalize raise ZuoraConnect::Exceptions::InvalidCredentialSet.new("Cannot setup application with ZSession Login.") if login_type == "Session" self.clients["Default"] = "::ZuoraAPI::#{login_type}".constantize.new(**login_fields) self.default_entity = fields["entities"][0]["id"] if (fields.dig("entities") || []).size == 1 if fields["entities"] && fields["entities"].size > 0 fields["entities"].each do |entity| params = {:entity_id => entity["id"], :entity_identifier => entity["identifier"]}.merge(login_fields) self.clients[entity["id"]] = "::ZuoraAPI::#{login_type}".constantize.new(**params) self.identifier_to_ids[entity["identifier"]] = entity["id"] end end self.attr_builder("available_entities", self.clients.keys) end fields.each do |k,v| self.attr_builder(k,v) end self.default_entity ||= "Default" end