Sha256: 60601bf48485571e466f843337219933836cfa8c8faf995db3fac0bc21f675b8

Contents?: true

Size: 1.34 KB

Versions: 116

Compression:

Stored size: 1.34 KB

Contents

module ZuoraConnect
  class Login

    def initialize (fields)
      @clients = {}
      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"
        @clients["Default"] = "::ZuoraAPI::#{login_type}".constantize.new(login_fields)
        @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"]}.merge(login_fields)
            @clients[entity["id"]] =  "::ZuoraAPI::#{login_type}".constantize.new(params)
          end
        end
        self.attr_builder("available_entities", @clients.keys) 
      end
      fields.each do |k,v|
        self.attr_builder(k,v)
      end
      @default_entity ||= "Default"
    end

    def attr_builder(field,val)
      singleton_class.class_eval { attr_accessor "#{field}" }
      send("#{field}=", val)
    end

    def client(id = @default_entity)
      return id.blank? ? @clients[@default_entity] : @clients[id]
    end

  end
end

Version data entries

116 entries across 116 versions & 1 rubygems

Version Path
zuora_connect-3.0.1.pre.b app/models/zuora_connect/login.rb
zuora_connect-3.0.1.pre.a app/models/zuora_connect/login.rb
zuora_connect-3.0.0 app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.y app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.x app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.w app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.v app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.u app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.t app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.s app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.r app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.q app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.p app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.o app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.n app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.m app/models/zuora_connect/login.rb
zuora_connect-3.0.0l app/models/zuora_connect/login.rb
zuora_connect-3.0.0k app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.j app/models/zuora_connect/login.rb
zuora_connect-3.0.0.pre.i app/models/zuora_connect/login.rb