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