zuora_connect 1.2.7 → 1.3.0a
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/zuora_connect/app_instance_base.rb +43 -12
- data/db/migrate/20170411200303_add_expiration_to_app_instance.rb +5 -0
- data/lib/zuora_connect/configuration.rb +6 -1
- data/lib/zuora_connect/controllers/helpers.rb +2 -2
- data/lib/zuora_connect/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f25a399af6352d06552aba98817240a79e1b5c49
|
4
|
+
data.tar.gz: 1a115d1dd8140490cc6de864f4202892d98c48c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cc8e57eda57052393bfb4a29c2d180f394ebde390208d90e2456b6aa29fb735e77ce6cff54033754974d669b8ba4ebc3c951d71680c5f9571d2963446b9f127
|
7
|
+
data.tar.gz: 4badfd2eb9cd1414c143f63f7defcecfbda360a30fc7eeb7dccc60bac284289b1f06cc9880f145a65f4cbbc58313afe9115b4cf3b725fd24e1765da3c3f1c65e
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module ZuoraConnect
|
2
2
|
class AppInstanceBase < ActiveRecord::Base
|
3
3
|
after_initialize :init
|
4
|
-
|
5
|
-
|
6
|
-
attr_accessor :options, :mode, :logins, :valid, :task_data, :last_refresh, :username, :password, :s3_client
|
4
|
+
self.table_name = "zuora_connect_app_instances"
|
5
|
+
attr_accessor :options, :mode, :logins, :valid, :task_data, :last_refresh, :username, :password, :s3_client, :api_version
|
7
6
|
|
8
7
|
def init
|
8
|
+
@api_version = self.access_token.include? ("@") ? "v1" : "v2"
|
9
9
|
@options = Hash.new
|
10
10
|
@logins = Hash.new
|
11
11
|
if ZuoraConnect.configuration.use_s3
|
@@ -77,20 +77,33 @@ module ZuoraConnect
|
|
77
77
|
|
78
78
|
def updateOption(optionId, value)
|
79
79
|
if self.access_token && self.refresh_token
|
80
|
-
|
80
|
+
if self.api_version == "v1"
|
81
|
+
return HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/application_options/#{optionId}/edit?value=#{value}",:basic_auth => auth = {:username => self.username, :password => self.password})
|
82
|
+
else
|
83
|
+
return HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/application_options/#{optionId}/edit?value=#{value}",:body => {:access_token => self.username})
|
84
|
+
end
|
81
85
|
else
|
82
86
|
return false
|
83
87
|
end
|
84
88
|
end
|
85
89
|
|
86
90
|
def refresh(session = nil)
|
87
|
-
|
91
|
+
count ||= 0
|
92
|
+
if self.api_version == "v1"
|
93
|
+
response = HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/tasks/#{self.id}.json",:basic_auth => auth = {:username => self.username, :password => self.password})
|
94
|
+
else
|
95
|
+
response = HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/tasks/#{self.id}.json",:body => {:access_token => self.username})
|
96
|
+
end
|
88
97
|
if response.code == 200
|
89
98
|
@last_refresh = Time.now.to_i
|
90
99
|
build_task(JSON.parse(response.body), session)
|
91
100
|
else
|
92
101
|
raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Communicating with Connect", response.body, response.code)
|
93
102
|
end
|
103
|
+
rescue
|
104
|
+
self.refresh_oauth
|
105
|
+
count = count + 1
|
106
|
+
retry if count < 2
|
94
107
|
end
|
95
108
|
|
96
109
|
def build_task(task_data, session)
|
@@ -141,16 +154,34 @@ module ZuoraConnect
|
|
141
154
|
OpenSSL::PKey::RSA.new(ZuoraConnect.configuration.private_key).private_decrypt(resp)
|
142
155
|
end
|
143
156
|
|
144
|
-
def
|
145
|
-
|
146
|
-
|
157
|
+
def refresh_oauth
|
158
|
+
Rails.logger.debug("REFRESHING - OAuth")
|
159
|
+
params = {
|
160
|
+
:grant_type => "refresh_token",
|
161
|
+
:client_id => ZuoraConnect.configuration.oauth_client_id,
|
162
|
+
:client_secret => ZuoraConnect.configuration.oauth_client_secret,
|
163
|
+
:redirect_uri => ZuoraConnect.configuration.oauth_client_redirect_uri,
|
164
|
+
:refresh_token => self.refresh_token
|
165
|
+
}
|
166
|
+
response = HTTParty.post("#{ZuoraConnect.configuration.url}/oauth/token",:body => params)
|
167
|
+
response_body = JSON.parse(response.body)
|
168
|
+
if response.code == 200
|
169
|
+
self.refresh_token = response_body["refresh_token"]
|
170
|
+
self.access_token = response_body["access_token"]
|
171
|
+
self.expires_at = Time.at(response_body["created_at"].to_i) + response_body["expires_in"].seconds.from_now
|
172
|
+
self.save
|
173
|
+
else
|
174
|
+
raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Refreshing Access Token", response.body, response.code)
|
175
|
+
end
|
147
176
|
end
|
148
177
|
|
149
|
-
def
|
150
|
-
|
151
|
-
self.token = SecureRandom.hex
|
152
|
-
end while self.class.exists?(token: token)
|
178
|
+
def oauth_expired?
|
179
|
+
(expires_at < Time.now)
|
153
180
|
end
|
154
181
|
|
182
|
+
def attr_builder(field,val)
|
183
|
+
singleton_class.class_eval { attr_accessor "#{field}" }
|
184
|
+
send("#{field}=", val)
|
185
|
+
end
|
155
186
|
end
|
156
187
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module ZuoraConnect
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :use_s3, :default_locale,:dev_mode_appinstance ,:dev_mode_admin, :dev_mode_user, :dev_mode_pass, :default_time_zone,:delayed_job,:url, :private_key, :dev_mode_logins,:dev_mode_mode, :dev_mode_options, :mode, :timeout,:dev_mode_secret_access_key,:dev_mode_access_key_id,:aws_region, :s3_bucket_name, :s3_folder_name
|
3
|
+
attr_accessor :oauth_client_id, :oauth_client_secret, :oauth_client_redirect_uri,:use_s3, :default_locale,:dev_mode_appinstance ,:dev_mode_admin, :dev_mode_user, :dev_mode_pass, :default_time_zone,:delayed_job,:url, :private_key, :dev_mode_logins,:dev_mode_mode, :dev_mode_options, :mode, :timeout,:dev_mode_secret_access_key,:dev_mode_access_key_id,:aws_region, :s3_bucket_name, :s3_folder_name
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
@timeout = 5.minutes
|
@@ -12,6 +12,11 @@ module ZuoraConnect
|
|
12
12
|
@use_s3 = false
|
13
13
|
@private_key = "-----BEGIN RSA PRIVATE KEY-----\nMIIEpgIBAAKCAQEA3PlAZWUbyvBSVU9GZxQM+brbwDfecsrFXJIbEvV76LVfFuTO\nDbyMPyuM0SBEAskb79wqNsn5JD0edCwmvZ+/Kn83b8SFkFW3f1tUxA0zFdVuqKP2\nJk1vms97yvOUveDjv22gYVMJYcSAFEzg9D9fUvTRocuBWQdbTq1cyJL+LYs9bUpl\nMB4oIUZuQ5nYz66y2gLlF0yUFNAfLpaCyaJvAmN93bPWTPfaKf+PMtkWCMQJQ3w+\nGvsudynLyE0ZgLx5mfM18h08iTMl61sUawyUEYNPm71Q6er9TB7oiOt3RT7ncw9P\nN+jzdklEphPp+1RaK35joPLQZjZl3Nh/XZg5eQIDAQABAoIBAQCJB+SgPDgk/C0C\njDurdmqpfvABXmQLKaWER3KUqjjh0X+bUd5Z9F/AWMBley3R0GcLsqtW+J8QkvpM\nroiDtQm2T9fP7r2pCQ7W4otJXKoeUxHhcHQXwpOAHES3UaAes9RoBJKdaAH8Z//J\nFve1X4s8hWdufyXCUOaVfrp4A3euQ3BYkb1n6yCnaEclG/evX6VM5jYMuHSDH0AS\nRUAMotuNvoLEIweNjWIolrKBEe+ZA6Rz6UaSoOxoNl8qWWOMsQvKzWfzHOA/YMnn\n9TN3AR10XYhWVjzNWL2dN1Jh4aD3d0byzImuhnCdIsIkTmS5aogl3/iFDce+9+kF\nLnkH5PuRAoGBAPiXQZdXHu7HwuQvZdb+2kII4kVLyLRM6v81rmXZr7pBUWrdpezy\nnFDj8OumSml4cKOLDUTAj/2/Hjs1o3JVGZqD0EbVrfIF0LZ3LzHb0rAae0uoyG7S\ny+2Y8wjLP53RogdZMA+6uoozEPM7yAp04d+rVPQY8i6JwGQmRYh7xSSlAoGBAOOP\nRssUBabZX13gQQ3BsO28g4HTEiFuqgAvGG/44Xbf74IRQiOT6ZaNYELvgaZT+RW2\nbp5E+T15Qe+SHHdxJhv3wtsnAw7yno1BmHpkAs1mEjjGFbNMF84YcRWSRU09g9Pm\nORhAc4lCFxHh7LnGsI1bgcPOYuFDRSHjYEy6y6VFAoGBAOiE8kEQqEpIZy7wdp1m\nu9fQX3TZsd2TpKsaFwoFV60rs2/16mF7fGLdElgYrrmAgjs2sS6Bvy1lOm2/eiZT\nGyO/72ySKaWbcuF5EZfdOXCnFHRsZy3h1gVjbs/m7JY9owSkk6Pi0OC7aztXy4Cc\nWznPFCNNwhltl5sVgSxsOLZRAoGBAJcPOI581xegevdFc8nfB0V5+86FwCZjYQTI\nPq+uBnW0SDkOndoiSVEAvqMQfP9eBR7NwPbdkJqnUQbo9m6vtP2h5j820YfttSTO\nI5szosyY8oWvsR4Z6D+O6BrKw6h3qnhS/xnDRy8ZqVjcohnc9LyRvz2tVuR0lILf\nfsDQy3kFAoGBAOm3N39RR7BwOMWIbe0Pk/ohJJdKwzsd1t1WyuXjAHJGdhMXkjl5\n9T1UsrouUr6qr545FNwEXktjmJ0IuqwypBC7B9kezKJlNTsZxmtcl7HfIFFOade7\nvrPHAAHPHSvCRcUPcFG1PDnFno66dXFOZwMo7W2lN+xTXuO0EvBAlW9P\n-----END RSA PRIVATE KEY-----\n"
|
14
14
|
|
15
|
+
# OAuth Settings
|
16
|
+
@oauth_client_id = ""
|
17
|
+
@oauth_client_secret = ""
|
18
|
+
@oauth_client_redirect_uri = "https://connect.zuora.com/"
|
19
|
+
|
15
20
|
# DEV MODE OPTIONS
|
16
21
|
@dev_mode_logins = { "target_login" => {"tenant_type" => "Zuora", "username" => "user", "password" => "pass", "url" => "url"} }
|
17
22
|
@dev_mode_options = {"name" => {"config_name" => "name", "datatype" => "type", "value" => "value"}}
|
@@ -76,10 +76,10 @@ module ZuoraConnect
|
|
76
76
|
if @appinstance.blank?
|
77
77
|
Apartment::Tenant.switch!("public")
|
78
78
|
Apartment::Tenant.create(values["appInstance"].to_s)
|
79
|
-
@appinstance = ZuoraConnect::AppInstance.create!(:id => values["appInstance"].to_i, :access_token => values["
|
79
|
+
@appinstance = ZuoraConnect::AppInstance.create!(:id => values["appInstance"].to_i, :access_token => values["access_token"], :refresh_token => values["refresh_token"], :oauth_expires_at => values["expires"])
|
80
80
|
end
|
81
81
|
if @appinstance.access_token.blank? || @appinstance.refresh_token.blank?
|
82
|
-
@appinstance.update_attributes(:access_token => values["
|
82
|
+
@appinstance.update_attributes(:access_token => values["access_token"], :refresh_token => values["refresh_token"])
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
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.
|
4
|
+
version: 1.3.0a
|
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-04-
|
11
|
+
date: 2017-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord-session_store
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.2.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.2.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: httparty
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -159,6 +159,7 @@ files:
|
|
159
159
|
- db/migrate/20161024162319_add_tokens_to_app_instance.rb
|
160
160
|
- db/migrate/20161024220705_add_token_to_app_instance.rb
|
161
161
|
- db/migrate/20170131211919_add_sessions_table.rb
|
162
|
+
- db/migrate/20170411200303_add_expiration_to_app_instance.rb
|
162
163
|
- lib/tasks/zuora_connect_tasks.rake
|
163
164
|
- lib/zuora_connect.rb
|
164
165
|
- lib/zuora_connect/configuration.rb
|
@@ -222,9 +223,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
223
|
version: '0'
|
223
224
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
224
225
|
requirements:
|
225
|
-
- - "
|
226
|
+
- - ">"
|
226
227
|
- !ruby/object:Gem::Version
|
227
|
-
version:
|
228
|
+
version: 1.3.1
|
228
229
|
requirements: []
|
229
230
|
rubyforge_project:
|
230
231
|
rubygems_version: 2.5.1
|