zuora_connect 1.2.7 → 1.3.0a

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: b60076f8557db8763947a9be6ec98d7af4300e1c
4
- data.tar.gz: cea2ea57e8a89521b16fbe3879427f1f5cfb63b6
3
+ metadata.gz: f25a399af6352d06552aba98817240a79e1b5c49
4
+ data.tar.gz: 1a115d1dd8140490cc6de864f4202892d98c48c5
5
5
  SHA512:
6
- metadata.gz: 36a85e6b8dae507e6f7e457873769d46fdfcdbda6c1a616c755cb6a2724fb268159b78132b24a19126842f08acc82fad0566d78176773485e88d7ed5e54d8d94
7
- data.tar.gz: f2f909e1b20bcbe74c6d2044f3732ecb6e95ed9a590d6c725fb17c1d75febd092ff028201cb2f518a91ad8393419515df7853eca32717bdc9fe10f938165bbbe
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
- 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
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
- return HTTParty.get(ZuoraConnect.configuration.url + "/api/v1/tools/application_options/#{optionId}/edit?value=#{value}",:basic_auth => auth = {:username => self.username, :password => self.password})
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
- response = HTTParty.get(ZuoraConnect.configuration.url + "/api/v1/tools/tasks/#{self.id}.json",:basic_auth => auth = {:username => self.username, :password => self.password})
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 attr_builder(field,val)
145
- singleton_class.class_eval { attr_accessor "#{field}" }
146
- send("#{field}=", val)
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 generate_access_token
150
- begin
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
@@ -0,0 +1,5 @@
1
+ class AddExpirationToAppInstance < ActiveRecord::Migration[5.0]
2
+ def change
3
+ add_column :zuora_connect_app_instances, :oauth_expires_at, :datetime unless column_exists? :zuora_connect_app_instances, :oauth_expires_at
4
+ end
5
+ 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["user"], :refresh_token => values["key"])
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["user"], :refresh_token => values["key"])
82
+ @appinstance.update_attributes(:access_token => values["access_token"], :refresh_token => values["refresh_token"])
83
83
  end
84
84
  end
85
85
 
@@ -1,3 +1,3 @@
1
1
  module ZuoraConnect
2
- VERSION = "1.2.7"
2
+ VERSION = "1.3.0a"
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.7
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-10 00:00:00.000000000 Z
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.1.0
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.1.0
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: '0'
228
+ version: 1.3.1
228
229
  requirements: []
229
230
  rubyforge_project:
230
231
  rubygems_version: 2.5.1