zuora_connect 1.2.5 → 1.2.6

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
  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.