zuora_api 1.6.26 → 1.6.28
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 +4 -4
- data/CHANGELOG.md +5 -17
- data/lib/zuora_api/login.rb +19 -13
- data/lib/zuora_api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa6e502f281056139b4e18a986bb6d129837df06
|
4
|
+
data.tar.gz: 7893fb708b15af2e2931097108fa5cebc56200fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 807901369ca7d585cf77f08004f13b708567ea5fc39ad0117f58d1d8ca2c498cd5666b1efbe596d6abd51dfd4b22c2d10fbf92dacadcbef32d3a7346b8db838d
|
7
|
+
data.tar.gz: 279127003d4cf2a0786e7d519853efe5ddb06b23f33a945ce93482bba35ce600f6b061b3c4f2634cb38a4b6bc10e5a0b112030627301b1a3faae6d65a60e7870
|
data/CHANGELOG.md
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
# Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
-
## [1.6.
|
4
|
+
## [1.6.28] - 2018-3-12
|
5
5
|
### Added
|
6
|
-
-
|
6
|
+
- Way to avoid force encoding for filedownload
|
7
7
|
|
8
|
+
## [1.6.22] - 2019-01-03
|
8
9
|
### Changed
|
9
|
-
-
|
10
|
-
|
11
|
-
### Removed
|
12
|
-
- Example
|
10
|
+
- get_identity method - supports ZSession auth now
|
11
|
+
- updated rspecs accordingly
|
13
12
|
|
14
13
|
## [1.6.18] - 2018-12-06
|
15
14
|
### Added
|
@@ -24,15 +23,4 @@ All notable changes to this project will be documented in this file.
|
|
24
23
|
### Changed
|
25
24
|
- The way environment and region are set
|
26
25
|
|
27
|
-
## [1.6.22] - 2019-01-03
|
28
26
|
|
29
|
-
### Changed
|
30
|
-
- get_identity method - supports ZSession auth now
|
31
|
-
- updated rspecs accordingly
|
32
|
-
|
33
|
-
## [1.6.26] - 2019-03-04
|
34
|
-
|
35
|
-
### Changed
|
36
|
-
- fixed get_oauth_client for non-staging environments
|
37
|
-
- fixed to use correct rest endpoint without version for oauth creation api
|
38
|
-
- changed get_oauth_client to no longer accept client id and secret as parameters
|
data/lib/zuora_api/login.rb
CHANGED
@@ -156,11 +156,13 @@ module ZuoraAPI
|
|
156
156
|
end
|
157
157
|
|
158
158
|
# There are two ways to call this method. The first way is best.
|
159
|
-
# 1. Pass in cookies, name, and description
|
160
|
-
# 2. Pass in user_id, entity_ids,
|
159
|
+
# 1. Pass in cookies and optionally custom_authorities, name, and description
|
160
|
+
# 2. Pass in user_id, entity_ids, client_id, client_secret, and optionally custom_authorities, name, and description
|
161
161
|
# https://intranet.zuora.com/confluence/display/Sunburst/Create+an+OAuth+Client+through+API+Gateway#CreateanOAuthClientthroughAPIGateway-ZSession
|
162
|
-
def get_oauth_client (info_name: "No Name", info_desc: "This client was created without a description.", user_id: nil, entity_ids: nil, client_id: nil, client_secret: nil, cookies: nil)
|
162
|
+
def get_oauth_client (custom_authorities = [], info_name: "No Name", info_desc: "This client was created without a description.", user_id: nil, entity_ids: nil, client_id: nil, client_secret: nil, new_client_id: nil, new_client_secret: nil, cookies: nil)
|
163
163
|
authorization = ""
|
164
|
+
new_client_id = SecureRandom.uuid if new_client_id.blank?
|
165
|
+
new_client_secret = SecureRandom.hex(10) if new_client_secret.blank?
|
164
166
|
|
165
167
|
if !cookies.nil?
|
166
168
|
authorization = cookies["ZSession"]
|
@@ -176,18 +178,18 @@ module ZuoraAPI
|
|
176
178
|
raise ZuoraAPI::Exceptions::ZuoraAPIError.new("Zuora User ID not provided", {}, 400)
|
177
179
|
end
|
178
180
|
elsif !client_id.nil? && !client_secret.nil?
|
179
|
-
|
180
|
-
bearer_response = HTTParty.post(endpoint, :headers => {'Content-Type' => 'application/x-www-form-urlencoded', 'Accept' => 'application/json'}, :body => {'client_id' => client_id, 'client_secret' => URI::encode(client_secret), 'grant_type' => 'client_credentials'})
|
181
|
+
bearer_response = HTTParty.post("https://#{self.hostname}/oauth/token", :headers => {'Content-Type' => 'application/x-www-form-urlencoded', 'Accept' => 'application/json'}, :body => {'client_id' => client_id, 'client_secret' => URI::encode(client_secret), 'grant_type' => 'client_credentials'})
|
181
182
|
bearer_hash = JSON.parse(bearer_response.body)
|
182
183
|
bearer_token = bearer_hash["access_token"]
|
183
184
|
authorization = "Bearer #{bearer_token}"
|
184
185
|
end
|
185
186
|
|
186
187
|
if !authorization.blank? && !user_id.blank? && !entity_ids.blank?
|
187
|
-
endpoint = self.rest_endpoint("genesis/clients")
|
188
|
-
oauth_response = HTTParty.post(endpoint, :headers => {'authorization' => authorization, 'Content-Type' => 'application/json'}, :body => {'userId' => user_id, 'entityIds' => entity_ids, 'additionalInformation' => {'description' => info_desc, 'name' => info_name}}.to_json)
|
188
|
+
endpoint = self.rest_endpoint("genesis/clients")
|
189
|
+
oauth_response = HTTParty.post(endpoint, :headers => {'authorization' => authorization, 'Content-Type' => 'application/json'}, :body => {'clientId' => new_client_id, 'clientSecret' => new_client_secret, 'userId' => user_id, 'entityIds' => entity_ids, 'customAuthorities' => custom_authorities, 'additionalInformation' => {'description' => info_desc, 'name' => info_name}}.to_json)
|
189
190
|
output_json = JSON.parse(oauth_response.body)
|
190
191
|
if oauth_response.code == 201
|
192
|
+
output_json["clientSecret"] = new_client_secret
|
191
193
|
return output_json
|
192
194
|
elsif oauth_response.code == 401 && !oauth_response.message.blank?
|
193
195
|
raise ZuoraAPI::Exceptions::ZuoraAPIError.new(output_json["message"], {}, oauth_response.code)
|
@@ -843,7 +845,7 @@ module ZuoraAPI
|
|
843
845
|
return products, catalog_map
|
844
846
|
end
|
845
847
|
|
846
|
-
def get_file(url: nil, headers: {}, count: 3, z_session: true, tempfile: true, output_file_name: nil, add_timestamp: true, file_path: defined?(Rails.root.join('tmp')) ? Rails.root.join('tmp') : Pathname.new(Dir.pwd), timeout_retries: 2, timeout: 120, session_type: :basic, **execute_params)
|
848
|
+
def get_file(url: nil, headers: {}, count: 3, z_session: true, tempfile: true, output_file_name: nil, add_timestamp: true, file_path: defined?(Rails.root.join('tmp')) ? Rails.root.join('tmp') : Pathname.new(Dir.pwd), timeout_retries: 2, timeout: 120, session_type: :basic, force_encoding: true, **execute_params)
|
847
849
|
raise "file_path must be of class Pathname" if file_path.class != Pathname
|
848
850
|
|
849
851
|
#Make sure directory exists
|
@@ -882,7 +884,7 @@ module ZuoraAPI
|
|
882
884
|
end
|
883
885
|
Rails.logger.fatal("Unauthorized: Retry")
|
884
886
|
self.new_session if z_session
|
885
|
-
return get_file(:url => url, :headers => headers, :count => count - 1, :z_session => z_session, :tempfile => tempfile, :file_path => file_path, :timeout_retries => timeout_retries, :timeout => timeout)
|
887
|
+
return get_file(:url => url, :headers => headers, :count => count - 1, :z_session => z_session, :tempfile => tempfile, :file_path => file_path, :timeout_retries => timeout_retries, :timeout => timeout, :force_encoding => force_encoding)
|
886
888
|
|
887
889
|
when Net::HTTPClientError
|
888
890
|
raise
|
@@ -893,7 +895,6 @@ module ZuoraAPI
|
|
893
895
|
headers[k] = v
|
894
896
|
end
|
895
897
|
Rails.logger.debug("Headers: #{headers.to_s}")
|
896
|
-
|
897
898
|
if output_file_name.present?
|
898
899
|
file_ending ||= output_file_name.end_with?(".csv.zip") ? ".csv.zip" : File.extname(output_file_name)
|
899
900
|
filename ||= File.basename(output_file_name, file_ending)
|
@@ -929,7 +930,6 @@ module ZuoraAPI
|
|
929
930
|
encoding ||= 'UTF-8'
|
930
931
|
end
|
931
932
|
end
|
932
|
-
Rails.logger.info("File: #{filename}#{file_ending} #{encoding} #{type}")
|
933
933
|
|
934
934
|
if response.header["Content-Length"].present?
|
935
935
|
export_size = response.header["Content-Length"].to_i
|
@@ -937,6 +937,8 @@ module ZuoraAPI
|
|
937
937
|
export_size = response.header["ContentLength"].to_i
|
938
938
|
end
|
939
939
|
|
940
|
+
Rails.logger.info("File: #{filename}#{file_ending} #{encoding} #{type} #{export_size}")
|
941
|
+
|
940
942
|
file_prefix = add_timestamp ? "#{filename}_#{Time.now.to_i}" : filename
|
941
943
|
if tempfile
|
942
944
|
require 'tempfile'
|
@@ -947,7 +949,11 @@ module ZuoraAPI
|
|
947
949
|
file_handle.binmode
|
948
950
|
|
949
951
|
response.read_body do |chunk|
|
950
|
-
|
952
|
+
if force_encoding
|
953
|
+
file_handle << chunk.force_encoding(encoding)
|
954
|
+
else
|
955
|
+
file_handle << chunk
|
956
|
+
end
|
951
957
|
|
952
958
|
if defined?(export_size) && export_size != 0 && export_size.class == Integer
|
953
959
|
size += chunk.size
|
@@ -965,7 +971,7 @@ module ZuoraAPI
|
|
965
971
|
return file_handle
|
966
972
|
end
|
967
973
|
end
|
968
|
-
rescue *(CONNECTION_EXCEPTIONS).concat(CONNECTION_READ_EXCEPTIONS) => e
|
974
|
+
rescue *(CONNECTION_EXCEPTIONS).concat(CONNECTION_READ_EXCEPTIONS).concat([Net::HTTPBadResponse]) => e
|
969
975
|
sleep(5)
|
970
976
|
if (timeout_retries -= 1) >= 0
|
971
977
|
Rails.logger.warn("Download Failed: #{e.class} : #{e.message}")
|
data/lib/zuora_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zuora_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zuora Strategic Solutions Group
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|