zuora_connect 1.2.5 → 1.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dbcfd76feb0ad0d0f46d8e159460c5ce1660a0cb
4
- data.tar.gz: c8c36a2de376fb0898560340d0c54006755ec496
3
+ metadata.gz: ad24fe3dc010f81a0303453a4b056c06edd88a28
4
+ data.tar.gz: f4c0c821aedf29b10d282cb81dc2e09d772ceced
5
5
  SHA512:
6
- metadata.gz: 716bbb8e21dc24a1740d427b3ff51519fc900bce7176f0f9cafe1fea81aff7bc03d58ec74bb1e43147a4bc770f21da45797f2803129242edd856a05f33e3b0f2
7
- data.tar.gz: 5f8bd3b1486cfe2d906b3588df1020e1dcec4adbfeb891caa92818c1fea50053c6c51be5ee330dbb57c526e978af169ca9964c2a212654c7c395fb3c21964ad6
6
+ metadata.gz: acac89e89d90174546e7e275cfb792f99d96fc1b00676948a8ebe86196cd120142fece1b29437dbab989d35e16c0c9c5b88fc1f341aec61da9bf5f01c48b25f6
7
+ data.tar.gz: 90dd37a8c6c3f52e0a710617ce39f3f72ed3dbd3bb13ec408386e2db013ae2e7d9bd9f3c5234d5eb5d3acdce54ff11fbd66dfc5c749dffb536ffe51115fa5041
@@ -1,153 +1,5 @@
1
1
  module ZuoraConnect
2
- class AppInstance < ActiveRecord::Base
3
- after_initialize :init
4
- before_create :generate_access_token
5
- attr_accessor :options, :mode, :logins, :valid, :task_data, :last_refresh, :username, :password, :s3_client
6
-
7
- def init
8
- @options = Hash.new
9
- @logins = Hash.new
10
- if ZuoraConnect.configuration.mode == "Development"
11
- @s3_client = Aws::S3::Resource.new(region: ZuoraConnect.configuration.aws_region,access_key_id: ZuoraConnect.configuration.dev_mode_access_key_id,secret_access_key: ZuoraConnect.configuration.dev_mode_secret_access_key)
12
- else
13
- @s3_client = Aws::S3::Resource.new(region: ZuoraConnect.configuration.aws_region)
14
- end
15
- @valid = false
16
- self.attr_builder("timezone", ZuoraConnect.configuration.default_time_zone)
17
- self.attr_builder("locale", ZuoraConnect.configuration.default_locale)
18
- Apartment::Tenant.switch!(self.id)
19
- if( ActiveRecord::Migration.check_pending! != nil)
20
- Apartment::Migrator.migrate(self.id)
21
- end
22
- Thread.current[:appinstance] = self
23
- end
24
-
25
- def new_session(session: {}, username: self.access_token, password: self.refresh_token)
26
- @username = username
27
- @password = password
28
- @last_refresh = session["#{self.id}::last_refresh"]
29
-
30
- ## DEV MODE TASK DATA MOCKUP
31
- if ZuoraConnect.configuration.mode != "Production"
32
- self.options = ZuoraConnect.configuration.dev_mode_options
33
- ZuoraConnect.configuration.dev_mode_logins.each do |k,v|
34
- tmp = ZuoraConnect::Login.new(v)
35
- self.logins[k] = tmp
36
- self.attr_builder(k, tmp)
37
- end
38
- self.mode = ZuoraConnect.configuration.dev_mode_mode
39
- else
40
- if session.nil? || (!session.nil? && self.id != session["appInstance"].to_i) || session["#{self.id}::task_data"].blank? || ( session["#{self.id}::last_refresh"].blank? || session["#{self.id}::last_refresh"].to_i < ZuoraConnect.configuration.timeout.ago.to_i )
41
- Rails.logger.debug("REFRESHING - Session Nil") if session.nil?
42
- Rails.logger.debug("REFRESHING - AppInstance ID does not match session id") if (!session.nil? && self.id != session["appInstance"].to_i)
43
- Rails.logger.debug("REFRESHING - Task Data Blank") if session["#{self.id}::task_data"].blank?
44
- Rails.logger.debug("REFRESHING - No Time on Cookie") if session["#{self.id}::last_refresh"].blank?
45
- Rails.logger.debug("REFRESHING - Session Old") if (session["#{self.id}::last_refresh"].blank? || session["#{self.id}::last_refresh"].to_i < ZuoraConnect.configuration.timeout.ago.to_i )
46
- self.refresh(session)
47
- else
48
- Rails.logger.debug("REBUILDING")
49
- build_task(session["#{self.id}::task_data"], session)
50
- end
51
- end
52
- I18n.locale = self.locale
53
- Time.zone = self.timezone
54
- @valid = true
55
- end
56
-
57
- def save_data(session = Hash.new)
58
- self.logins.each do |key, login|
59
- if login.tenant_type == "Zuora"
60
- if login.available_entities.size > 1 && Rails.application.config.session_store != ActionDispatch::Session::CookieStore
61
- login.available_entities.each do |entity_key|
62
- session["#{self.id}::#{key}::#{entity_key}:session"] = login.client(entity_key).current_session
63
- end
64
- else
65
- session["#{self.id}::#{key}:session"] = login.client.current_session
66
- end
67
- end
68
- end
69
- session["#{self.id}::task_data"] = self.task_data
70
- session["#{self.id}::last_refresh"] = self.last_refresh
71
- session["appInstance"] = self.id
72
- return session
73
- end
74
-
75
- def updateOption(optionId, value)
76
- if self.access_token && self.refresh_token
77
- return HTTParty.get(ZuoraConnect.configuration.url + "/api/v1/tools/application_options/#{optionId}/edit?value=#{value}",:basic_auth => auth = {:username => self.username, :password => self.password})
78
- else
79
- return false
80
- end
81
- end
82
-
83
- def refresh(session = nil)
84
- response = HTTParty.get(ZuoraConnect.configuration.url + "/api/v1/tools/tasks/#{self.id}.json",:basic_auth => auth = {:username => self.username, :password => self.password})
85
- if response.code == 200
86
- @last_refresh = Time.now.to_i
87
- build_task(JSON.parse(response.body), session)
88
- else
89
- raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Communicating with Connect", response.body, response.code)
90
- end
91
- end
92
-
93
- def build_task(task_data, session)
94
- @task_data = task_data
95
- @mode = @task_data["mode"]
96
- @task_data.each do |k,v|
97
- if k.match(/^(.*)_login$/)
98
- tmp = ZuoraConnect::Login.new(v)
99
- if !session.nil? && v["tenant_type"] == "Zuora"
100
- if tmp.entities.size > 0
101
- tmp.entities.each do |value|
102
- entity_id = value["id"]
103
- tmp.client(entity_id).current_session = session["#{self.id}::#{k}::#{entity_id}:session"] if !session.nil? && v["tenant_type"] == "Zuora" && session["#{self.id}::#{k}::#{entity_id}:session"]
104
- end
105
- else
106
- tmp.client.current_session = session["#{self.id}::#{k}:session"] if !session.nil? && v["tenant_type"] == "Zuora" && session["#{self.id}::#{k}:session"]
107
- end
108
- end
109
- @logins[k] = tmp
110
- self.attr_builder(k, @logins[k])
111
- elsif k == "options"
112
- v.each do |opt|
113
- @options[opt["config_name"]] = opt
114
- end
115
- elsif k == "user_settings"
116
- self.timezone = v["timezone"]
117
- self.locale = v["local"]
118
- end
119
- end
120
- end
121
-
122
- def send_email
123
-
124
- end
125
-
126
- def upload_to_s3(local_file,s3_path = nil)
127
- s3_path = local_file.split("/").last if s3_path.nil?
128
- obj = @s3_client.bucket(ZuoraConnect.configuration.s3_bucket_name).object("#{ZuoraConnect.configuration.s3_folder_name}/#{self.id.to_s}/#{s3_path}}")
129
- obj.upload_file(local_file)
130
- end
131
-
132
- def get_s3_file_url(key)
133
- signer = Aws::S3::Presigner.new(client: @s3_client)
134
- url = signer.presigned_url(:get_object, bucket: ZuoraConnect.configuration.s3_bucket_name, key: "#{ZuoraConnect.configuration.s3_folder_name}/#{key}")
135
- end
136
-
137
- def self.decrypt_response(resp)
138
- OpenSSL::PKey::RSA.new(ZuoraConnect.configuration.private_key).private_decrypt(resp)
139
- end
140
-
141
- def attr_builder(field,val)
142
- singleton_class.class_eval { attr_accessor "#{field}" }
143
- send("#{field}=", val)
144
- end
145
-
146
- def generate_access_token
147
- begin
148
- self.token = SecureRandom.hex
149
- end while self.class.exists?(token: token)
150
- end
2
+ class AppInstance < ZuoraConnect::AppInstanceBase
151
3
 
152
4
  end
153
5
  end
@@ -0,0 +1,154 @@
1
+ module ZuoraConnect
2
+ class AppInstanceBase < ActiveRecord::Base
3
+ after_initialize :init
4
+ self.table_name = "zuora_connect_app_instances"
5
+ before_create :generate_access_token
6
+ attr_accessor :options, :mode, :logins, :valid, :task_data, :last_refresh, :username, :password, :s3_client
7
+
8
+ def init
9
+ @options = Hash.new
10
+ @logins = Hash.new
11
+ if ZuoraConnect.configuration.mode == "Development"
12
+ @s3_client = Aws::S3::Resource.new(region: ZuoraConnect.configuration.aws_region,access_key_id: ZuoraConnect.configuration.dev_mode_access_key_id,secret_access_key: ZuoraConnect.configuration.dev_mode_secret_access_key)
13
+ else
14
+ @s3_client = Aws::S3::Resource.new(region: ZuoraConnect.configuration.aws_region)
15
+ end
16
+ @valid = false
17
+ self.attr_builder("timezone", ZuoraConnect.configuration.default_time_zone)
18
+ self.attr_builder("locale", ZuoraConnect.configuration.default_locale)
19
+ Apartment::Tenant.switch!(self.id)
20
+ if( ActiveRecord::Migration.check_pending! != nil)
21
+ Apartment::Migrator.migrate(self.id)
22
+ end
23
+ Thread.current[:appinstance] = self
24
+ end
25
+
26
+ def new_session(session: {}, username: self.access_token, password: self.refresh_token)
27
+ @username = username
28
+ @password = password
29
+ @last_refresh = session["#{self.id}::last_refresh"]
30
+
31
+ ## DEV MODE TASK DATA MOCKUP
32
+ if ZuoraConnect.configuration.mode != "Production"
33
+ self.options = ZuoraConnect.configuration.dev_mode_options
34
+ ZuoraConnect.configuration.dev_mode_logins.each do |k,v|
35
+ tmp = ZuoraConnect::Login.new(v)
36
+ self.logins[k] = tmp
37
+ self.attr_builder(k, tmp)
38
+ end
39
+ self.mode = ZuoraConnect.configuration.dev_mode_mode
40
+ else
41
+ if session.nil? || (!session.nil? && self.id != session["appInstance"].to_i) || session["#{self.id}::task_data"].blank? || ( session["#{self.id}::last_refresh"].blank? || session["#{self.id}::last_refresh"].to_i < ZuoraConnect.configuration.timeout.ago.to_i )
42
+ Rails.logger.debug("REFRESHING - Session Nil") if session.nil?
43
+ Rails.logger.debug("REFRESHING - AppInstance ID does not match session id") if (!session.nil? && self.id != session["appInstance"].to_i)
44
+ Rails.logger.debug("REFRESHING - Task Data Blank") if session["#{self.id}::task_data"].blank?
45
+ Rails.logger.debug("REFRESHING - No Time on Cookie") if session["#{self.id}::last_refresh"].blank?
46
+ Rails.logger.debug("REFRESHING - Session Old") if (session["#{self.id}::last_refresh"].blank? || session["#{self.id}::last_refresh"].to_i < ZuoraConnect.configuration.timeout.ago.to_i )
47
+ self.refresh(session)
48
+ else
49
+ Rails.logger.debug("REBUILDING")
50
+ build_task(session["#{self.id}::task_data"], session)
51
+ end
52
+ end
53
+ I18n.locale = self.locale
54
+ Time.zone = self.timezone
55
+ @valid = true
56
+ end
57
+
58
+ def save_data(session = Hash.new)
59
+ self.logins.each do |key, login|
60
+ if login.tenant_type == "Zuora"
61
+ if login.available_entities.size > 1 && Rails.application.config.session_store != ActionDispatch::Session::CookieStore
62
+ login.available_entities.each do |entity_key|
63
+ session["#{self.id}::#{key}::#{entity_key}:session"] = login.client(entity_key).current_session
64
+ end
65
+ else
66
+ session["#{self.id}::#{key}:session"] = login.client.current_session
67
+ end
68
+ end
69
+ end
70
+ session["#{self.id}::task_data"] = self.task_data
71
+ session["#{self.id}::last_refresh"] = self.last_refresh
72
+ session["appInstance"] = self.id
73
+ return session
74
+ end
75
+
76
+ def updateOption(optionId, value)
77
+ if self.access_token && self.refresh_token
78
+ return HTTParty.get(ZuoraConnect.configuration.url + "/api/v1/tools/application_options/#{optionId}/edit?value=#{value}",:basic_auth => auth = {:username => self.username, :password => self.password})
79
+ else
80
+ return false
81
+ end
82
+ end
83
+
84
+ def refresh(session = nil)
85
+ response = HTTParty.get(ZuoraConnect.configuration.url + "/api/v1/tools/tasks/#{self.id}.json",:basic_auth => auth = {:username => self.username, :password => self.password})
86
+ if response.code == 200
87
+ @last_refresh = Time.now.to_i
88
+ build_task(JSON.parse(response.body), session)
89
+ else
90
+ raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Communicating with Connect", response.body, response.code)
91
+ end
92
+ end
93
+
94
+ def build_task(task_data, session)
95
+ @task_data = task_data
96
+ @mode = @task_data["mode"]
97
+ @task_data.each do |k,v|
98
+ if k.match(/^(.*)_login$/)
99
+ tmp = ZuoraConnect::Login.new(v)
100
+ if !session.nil? && v["tenant_type"] == "Zuora"
101
+ if tmp.entities.size > 0
102
+ tmp.entities.each do |value|
103
+ entity_id = value["id"]
104
+ tmp.client(entity_id).current_session = session["#{self.id}::#{k}::#{entity_id}:session"] if !session.nil? && v["tenant_type"] == "Zuora" && session["#{self.id}::#{k}::#{entity_id}:session"]
105
+ end
106
+ else
107
+ tmp.client.current_session = session["#{self.id}::#{k}:session"] if !session.nil? && v["tenant_type"] == "Zuora" && session["#{self.id}::#{k}:session"]
108
+ end
109
+ end
110
+ @logins[k] = tmp
111
+ self.attr_builder(k, @logins[k])
112
+ elsif k == "options"
113
+ v.each do |opt|
114
+ @options[opt["config_name"]] = opt
115
+ end
116
+ elsif k == "user_settings"
117
+ self.timezone = v["timezone"]
118
+ self.locale = v["local"]
119
+ end
120
+ end
121
+ end
122
+
123
+ def send_email
124
+
125
+ end
126
+
127
+ def upload_to_s3(local_file,s3_path = nil)
128
+ s3_path = local_file.split("/").last if s3_path.nil?
129
+ obj = @s3_client.bucket(ZuoraConnect.configuration.s3_bucket_name).object("#{ZuoraConnect.configuration.s3_folder_name}/#{self.id.to_s}/#{s3_path}}")
130
+ obj.upload_file(local_file)
131
+ end
132
+
133
+ def get_s3_file_url(key)
134
+ signer = Aws::S3::Presigner.new(client: @s3_client)
135
+ url = signer.presigned_url(:get_object, bucket: ZuoraConnect.configuration.s3_bucket_name, key: "#{ZuoraConnect.configuration.s3_folder_name}/#{key}")
136
+ end
137
+
138
+ def self.decrypt_response(resp)
139
+ OpenSSL::PKey::RSA.new(ZuoraConnect.configuration.private_key).private_decrypt(resp)
140
+ end
141
+
142
+ def attr_builder(field,val)
143
+ singleton_class.class_eval { attr_accessor "#{field}" }
144
+ send("#{field}=", val)
145
+ end
146
+
147
+ def generate_access_token
148
+ begin
149
+ self.token = SecureRandom.hex
150
+ end while self.class.exists?(token: token)
151
+ end
152
+
153
+ end
154
+ end
@@ -1,3 +1,3 @@
1
1
  module ZuoraConnect
2
- VERSION = "1.2.5"
2
+ VERSION = "1.2.6"
3
3
  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: 1.2.5
4
+ version: 1.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connect Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-21 00:00:00.000000000 Z
11
+ date: 2017-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-session_store
@@ -148,6 +148,7 @@ files:
148
148
  - app/helpers/zuora_connect/api/v1/app_instance_helper.rb
149
149
  - app/helpers/zuora_connect/application_helper.rb
150
150
  - app/models/zuora_connect/app_instance.rb
151
+ - app/models/zuora_connect/app_instance_base.rb
151
152
  - app/models/zuora_connect/login.rb
152
153
  - app/views/layouts/zuora_connect/application.html.erb
153
154
  - app/views/zuora_connect/static/invalid_app_instance_error.html.erb
@@ -226,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
227
  version: '0'
227
228
  requirements: []
228
229
  rubyforge_project:
229
- rubygems_version: 2.6.8
230
+ rubygems_version: 2.5.1
230
231
  signing_key:
231
232
  specification_version: 4
232
233
  summary: Summary of Connect.