zuora_connect 3.0.2.pre.f → 3.0.2.pre.j

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 31c1a3b38114cb85dc6f1b9f5fffdd1d57dde786e642f3531885a54eca98a1a3
4
- data.tar.gz: 3e04d13019bdcdf7b223a71bc2b32ff076f49f4f885cb5fe9b0baf63ce359973
3
+ metadata.gz: 6076d2cb4ef722656e4d859dc07cf9c6d83686de560a7dad15b469a0bf9a1927
4
+ data.tar.gz: 3b887a62765842aff5f68d6974b885555431331eb63f2b8355d7dfa312bbc307
5
5
  SHA512:
6
- metadata.gz: 850e2451907b60c25bc37186385711abd6b8ecab6d21e0603d5e02f168fad878f0753309cfbbc5164fb828ca3049f2a7d0260b4ada7ffa58ac2d23ded82b3770
7
- data.tar.gz: c58b317c291c246bb30f030ba37edd4f225064b7d1b00f27f4ced7650c802d88253b0350ea966ea6e30886c514a05383c332a2cdb95c2e327b88a75065d81f59
6
+ metadata.gz: 51576691c2fc86fbfb2b2e790b6b21723aaac21daba261a66f91229a1ba2c31b4fa58be7a7180a1c86f3efaabcd214adee863ad29a8dc4134eaedf02eef04864
7
+ data.tar.gz: d6ca9183643151b4a196e3feb4c38422862225b6e02446c75ea08a31fdcab2bfc18a8b6d7795ad63764c88a9834c4b7ed02b43856c6c683c8e3c9f487cfdab13
@@ -266,7 +266,8 @@ module ZuoraConnect
266
266
 
267
267
  params = {
268
268
  name: self.task_data.dig('name'),
269
- zuora_entity_ids: (self.task_data.dig(LOGIN_TENANT_DESTINATION,'entities') || []).map{|e| e['id']}.uniq,
269
+ zuora_entity_ids: (self.task_data.dig(LOGIN_TENANT_DESTINATION,'entities') || []).select {|entity| !entity['skip'].to_bool}.map{|e| e['id']}.uniq,
270
+ zuora_global_tenant_id: task_data.dig(LOGIN_TENANT_DESTINATION, 'entities', 0, 'globalEntityId').to_i, # tenant id of the global/parent entity, 0 if nil
270
271
  zuora_tenant_ids: tenants.map(&:to_s).uniq,
271
272
  organizations: organizations
272
273
  }
@@ -277,6 +278,9 @@ module ZuoraConnect
277
278
  params.merge!({zuora_domain: client.rest_domain, environment: client.environment })
278
279
  end
279
280
  end
281
+
282
+ # makes it safe to add elements to params which don't correspond to existing columns in an app's schema
283
+ # rejects those elements which do not correspond to model attributes for your app
280
284
  params = params.reject{|k,v| !self.attributes.keys.member?(k.to_s) || self[k] == v}
281
285
  self.update_columns(params) if params.present?
282
286
  end
@@ -397,7 +401,8 @@ module ZuoraConnect
397
401
  end
398
402
  end
399
403
  rescue => ex
400
- if self['zuora_logins'].present?
404
+ refresh_count += 1
405
+ if self['zuora_logins'].present? && refresh_count < 3
401
406
  ZuoraConnect.logger.warn("REFRESH TASK - Fallback to local encrypted store", ex, self.default_ougai_items)
402
407
  skip_connect = true
403
408
  retry
@@ -812,7 +817,7 @@ module ZuoraConnect
812
817
  def strip_cache_data(object: {}, keys: ['applications', 'tokens','tenant_ids', 'organizations','user_settings'] )
813
818
  keys.each {|key| object.delete(key) }
814
819
  object.select {|k,v| k.include?('login') && v['tenant_type'] == 'Zuora'}.each do |login_key, login_data|
815
- object[login_key]['entities'] = login_data.fetch('entities',[]).map {|entity| entity.slice('id', 'tenantId', 'entityId', 'displayName')}
820
+ object[login_key]['entities'] = login_data.fetch('entities',[]).map {|entity| entity.slice('id', 'tenantId', 'entityId', 'displayName', 'identifier')}
816
821
  end
817
822
  return object
818
823
  end
@@ -1,27 +1,29 @@
1
1
  module ZuoraConnect
2
2
  class Login
3
-
3
+ attr_accessor :clients, :identifier_to_ids, :default_entity
4
4
  def initialize (fields)
5
- @clients = {}
5
+ self.clients = {}
6
+ self.identifier_to_ids = {}
6
7
  if fields["tenant_type"] == "Zuora"
7
8
  login_fields = fields.map{|k,v| [k.to_sym, v]}.to_h
8
9
  login_type = fields.dig("authentication_type").blank? ? 'Basic' : fields.dig("authentication_type").capitalize
9
10
 
10
11
  raise ZuoraConnect::Exceptions::InvalidCredentialSet.new("Cannot setup application with ZSession Login.") if login_type == "Session"
11
- @clients["Default"] = "::ZuoraAPI::#{login_type}".constantize.new(**login_fields)
12
- @default_entity = fields["entities"][0]["id"] if (fields.dig("entities") || []).size == 1
12
+ self.clients["Default"] = "::ZuoraAPI::#{login_type}".constantize.new(**login_fields)
13
+ self.default_entity = fields["entities"][0]["id"] if (fields.dig("entities") || []).size == 1
13
14
  if fields["entities"] && fields["entities"].size > 0
14
15
  fields["entities"].each do |entity|
15
- params = {:entity_id => entity["id"]}.merge(login_fields)
16
- @clients[entity["id"]] = "::ZuoraAPI::#{login_type}".constantize.new(**params)
16
+ params = {:entity_id => entity["id"], :entity_identifier => entity["identifier"]}.merge(login_fields)
17
+ self.clients[entity["id"]] = "::ZuoraAPI::#{login_type}".constantize.new(**params)
18
+ self.identifier_to_ids[entity["identifier"]] = entity["id"]
17
19
  end
18
20
  end
19
- self.attr_builder("available_entities", @clients.keys)
21
+ self.attr_builder("available_entities", self.clients.keys)
20
22
  end
21
23
  fields.each do |k,v|
22
24
  self.attr_builder(k,v)
23
25
  end
24
- @default_entity ||= "Default"
26
+ self.default_entity ||= "Default"
25
27
  end
26
28
 
27
29
  def attr_builder(field,val)
@@ -29,9 +31,19 @@ module ZuoraConnect
29
31
  send("#{field}=", val)
30
32
  end
31
33
 
32
- def client(id = @default_entity)
33
- return id.blank? ? @clients[@default_entity] : @clients[id]
34
- end
34
+ def client(id = self.default_entity)
35
+ use_entity_name = self.identifier_to_ids.keys.include?(id)
36
+
37
+ # Translate entity name to entity id
38
+ id = self.identifier_to_ids[id] if use_entity_name
39
+
40
+ client = id.blank? ? self.clients[self.default_entity] : self.clients[id]
35
41
 
42
+ if client
43
+ client.entity_header_type = use_entity_name ? :entity_name : :entity_id
44
+ end
45
+
46
+ client
47
+ end
36
48
  end
37
49
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ZuoraConnect
4
- VERSION = "3.0.2-f"
4
+ VERSION = "3.0.2-j"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuora_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2.pre.f
4
+ version: 3.0.2.pre.j
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connect Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-23 00:00:00.000000000 Z
11
+ date: 2021-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment