We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I am using the following code : require 'oauth' require 'net/http' require 'uri' require 'json' require 'securerandom' require 'openssl'
class SchemeDataImporter attr_reader :script_id, :deploy_id, :realm, :consumer, :token
def initialize(script_id, deploy_id, realm, consumer_key, consumer_secret, token, token_secret) @script_id = script_id @deploy_id = deploy_id @realm = realm @token_secret = token_secret @callback_url = "https://#{realm}.xyz.netsuite.com/app/site/hosting/xyz.nz?script=#{script_id}&deploy=#{deploy_id}" @consumer = OAuth::Consumer.new(consumer_key, consumer_secret, { site: "https://#{realm}.xyz.netsuite.com", signature_method: 'HMAC-SHA256', oauth_version: '1.0' })
@token = OAuth::AccessToken.new(@consumer)
end
def import_data url = "/app/site/hosting/xyz.nz?script=#{script_id}&deploy=#{deploy_id}"
# Generate OAuth header auth_header = generate_auth_header(url) response = @token.request(:get, "/app/site/hosting/xyz.nz?script=#{OAuth::Helper.escape(script_id)}&deploy=#{OAuth::Helper.escape(deploy_id)}") # response = @token.get(url, { # 'Authorization' => auth_header, # 'Content-Type' => 'application/json', # 'Accept' => 'application/json' # }) puts "-------------------------------------" puts "-------------------------------------" puts auth_header puts realm puts script_id puts deploy_id puts "-------------------------------------" puts "-------------------------------------" puts "Response Code: #{response.code}" puts "Response Message: #{response.message}" puts "Response Body: #{response.body}" if response.code.to_i == 200 # Handle successful response puts "Import process complete" else raise "Failed to fetch data: #{response.code} #{response.message} - #{response.body}" end
private
def generate_auth_header(url) oauth_params = { oauth_consumer_key: @consumer.key, oauth_token: @token.token, oauth_signature_method: @consumer.options[:signature_method], oauth_timestamp: (Time.now.to_i + 120).to_s, oauth_nonce: generate_nonce, oauth_version: '1.0', realm: @realm }
base_string = generate_base_string(url, oauth_params) puts "Base String: #{base_string}" # Log base string for debugging oauth_signature = generate_signature(base_string) puts "OAuth Signature: #{oauth_signature}" # Log the generated signature oauth_params[:oauth_signature] = oauth_signature auth_header = "OAuth " + oauth_params.map { |key, value| "#{key}=\"#{URI.encode(value.to_s)}\"" }.join(", ") puts "Authorization Header: #{auth_header}" # Log the final auth header auth_header
def generate_nonce # Generate a random number between 0 and 99999999999 (11 digits) rand(10**11).to_s.rjust(11, '0') end
def generate_base_string(url, oauth_params) sorted_params = oauth_params.sort.to_h param_string = sorted_params.map { |k, v| "#{k}=#{URI.encode(v.to_s)}" }.join("&")
http_method = "GET" base_string = "#{http_method}&#{URI.encode(url)}&#{URI.encode(param_string)}" base_string
def generate_base_string(url, oauth_params) sorted_params = oauth_params.sort.map { |k, v| "#{k}=#{URI.encode(v.to_s)}" }.join("&") http_method = "GET" base_string = "#{http_method}&#{URI.encode(url)}&#{URI.encode(sorted_params)}" base_string end
def generate_signature(base_string) key = "#{@consumer.secret}&#{@token.secret}" hmac = OpenSSL::HMAC.digest('sha256', key, base_string) Base64.strict_encode64(hmac) end
importer = SchemeDataImporter.new( "8xx", "x", "7xxxxxxx", "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "2xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "7xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "5xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" )
begin importer.import_data rescue => e puts e.message end
#i am using ruby '2.4.6' & rails '5.2.3'
The text was updated successfully, but these errors were encountered:
i am using the same creds in postman and its working there.
Sorry, something went wrong.
There is a lot of information missing. What version of the gem are you using?
No branches or pull requests
I am using the following code :
require 'oauth'
require 'net/http'
require 'uri'
require 'json'
require 'securerandom'
require 'openssl'
class SchemeDataImporter
attr_reader :script_id, :deploy_id, :realm, :consumer, :token
def initialize(script_id, deploy_id, realm, consumer_key, consumer_secret, token, token_secret)
@script_id = script_id
@deploy_id = deploy_id
@realm = realm
@token_secret = token_secret
@callback_url = "https://#{realm}.xyz.netsuite.com/app/site/hosting/xyz.nz?script=#{script_id}&deploy=#{deploy_id}"
@consumer = OAuth::Consumer.new(consumer_key, consumer_secret, {
site: "https://#{realm}.xyz.netsuite.com",
signature_method: 'HMAC-SHA256',
oauth_version: '1.0'
})
end
def import_data
url = "/app/site/hosting/xyz.nz?script=#{script_id}&deploy=#{deploy_id}"
end
private
def generate_auth_header(url)
oauth_params = {
oauth_consumer_key: @consumer.key,
oauth_token: @token.token,
oauth_signature_method: @consumer.options[:signature_method],
oauth_timestamp: (Time.now.to_i + 120).to_s,
oauth_nonce: generate_nonce,
oauth_version: '1.0',
realm: @realm
}
end
def generate_nonce
# Generate a random number between 0 and 99999999999 (11 digits)
rand(10**11).to_s.rjust(11, '0')
end
def generate_base_string(url, oauth_params)
sorted_params = oauth_params.sort.to_h
param_string = sorted_params.map { |k, v| "#{k}=#{URI.encode(v.to_s)}" }.join("&")
end
def generate_base_string(url, oauth_params)
sorted_params = oauth_params.sort.map { |k, v| "#{k}=#{URI.encode(v.to_s)}" }.join("&")
http_method = "GET"
base_string = "#{http_method}&#{URI.encode(url)}&#{URI.encode(sorted_params)}"
base_string
end
def generate_signature(base_string)
key = "#{@consumer.secret}&#{@token.secret}"
hmac = OpenSSL::HMAC.digest('sha256', key, base_string)
Base64.strict_encode64(hmac)
end
Example usage
importer = SchemeDataImporter.new(
"8xx",
"x",
"7xxxxxxx",
"4xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"2xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"7xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"5xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
)
begin
importer.import_data
rescue => e
puts e.message
end
#i am using ruby '2.4.6' & rails '5.2.3'
The text was updated successfully, but these errors were encountered: