Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 21 additions & 6 deletions lib/killbill_client/api/net_http_adapter.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
require 'cgi'
require 'net/https'
require 'json'
require 'base64'

module KillBillClient
class API
Expand Down Expand Up @@ -236,14 +237,28 @@ def request(method, relative_uri, options = {})
end

# Add auditing headers, if needed
if options[:user]
request['X-Killbill-CreatedBy'] = options[:user]
encode_header = lambda do |value|
return nil if value.nil?
utf8_value = value.to_s.dup.encode('UTF-8', invalid: :replace, undef: :replace, replace: '?')
Base64.strict_encode64(utf8_value)
end
if options[:reason]
request['X-Killbill-Reason'] = options[:reason]

encoded_user = encode_header.call(options[:user])
encoded_reason = encode_header.call(options[:reason])
encoded_comment = encode_header.call(options[:comment])

if encoded_user
request['X-Killbill-CreatedBy'] = encoded_user
end
if encoded_reason
request['X-Killbill-Reason'] = encoded_reason
end
if encoded_comment
request['X-Killbill-Comment'] = encoded_comment
end
if options[:comment]
request['X-Killbill-Comment'] = options[:comment]
# Add encoding header to indicate Base64 encoding
if encoded_user || encoded_reason || encoded_comment
request['X-Killbill-Encoding'] = 'base64'
end

#
Expand Down