Ripple Client Ruby Gem
Add this line to your application's Gemfile:
gem 'ripple_lib_rpc_ruby', :git => '[email protected]:kevinejohn/ripple-lib-rpc-ruby.git'
And then execute:
$ bundle
# WARNING!
# The client does not do local signing of transactions at this point. You must use a trusted endpoint!
# WARNING!
require 'ripple'
ripple = Ripple.client(
endpoint: "http://s1.ripple.com:51234/",
client_account: "r4LADqzmqQUMhgSyBLTtPMG4pAzrMDx7Yj",
client_secret: "ssm5HPoeEZYJWvkJvQW9ro6e6hW9m"
)
# Send XRP
tx_hash = ripple.send_basic_transaction({destination: "rfGKu3tSxwMFZ5mQ6bUcxWrxahACxABqKc",currency: "XRP",amount: "1"})
# Send IOU
tx_hash = ripple.send_basic_transaction({destination: "rfGKu3tSxwMFZ5mQ6bUcxWrxahACxABqKc",currency: "USD",amount: "0.00001"})
# XRP Balance
balance = ripple.xrp_balance
# Verify tx_hash
begin
if ripple.transaction_suceeded?("84062717735DD0E6255F3A64750F543020D7DA05AA344012EFF1FEFB8213F735")
puts "Transaction complete"
else
puts "Transaction Pending"
end
rescue Ripple::InvalidTxHash
puts "Invalid transaction"
end
# Send and confirm with error checking
success = false
failed = false
begin
puts "Sending transaction"
tx_hash = ripple.send_basic_transaction({destination: "rfGKu3tSxwMFZ5mQ6bUcxWrxahACxABqKc",currency: "USD",amount: "0.00001"})
success = true
rescue Ripple::SubmitFailed => e
puts "Transaction failed: " + e.message
failed = true
rescue Ripple::ServerUnavailable
puts "Server Unavailable"
rescue Ripple::Timedout
puts "Request timed out"
end while not success and not failed
if success
# Verify transaction
complete = false
begin
puts "Checking transaction status"
complete = ripple.transaction_suceeded?(tx_hash)
if not complete
# Sleep for small amount of time before checking again
sleep 1
end
rescue Ripple::InvalidTxHash
puts "Invalid Tx Hash"
rescue Ripple::ServerUnavailable
puts "Server Unavailable"
rescue Ripple::Timedout
puts "Request timed out"
end while not complete
puts "Transaction complete"
end
# Send and confirm complex send with error checking
# 1. Find path
success = false
begin
puts "Finding Path"
path = ripple.new_path(
source_currency: 'USD',
destination_account: "r44SfjdwtQMpzyAML3vJkssHBiQspdMBw9",
destination_amount: ripple.new_amount(
value: '1',
currency: 'XRP',
#issuer: 'r44SfjdwtQMpzyAML3vJkssHBiQspdMBw9'
)
)
transaction = ripple.find_transaction_path(path)
success = true
rescue Ripple::ServerUnavailable
puts "Server Unavailable"
rescue Ripple::Timedout
puts "Request timed out"
end while not success
# 2. Sign transaction
if success
success = false
failed = false
begin
puts "Signing transaction"
#transaction.print_path_info
transaction = ripple.sign_transaction(transaction)
success = true
rescue Ripple::SubmitFailed => e
puts "Signing failed: " + e.message
failed = true
rescue Ripple::ServerUnavailable
puts "Server Unavailable"
rescue Ripple::Timedout
puts "Request timed out"
end while not success and not failed
end
# 3. Submit transaction
if success
success = false
failed = false
begin
puts "Submitting transaction"
transaction.print_path_info
tx_hash = ripple.submit_transaction(transaction)
success = true
rescue Ripple::SubmitFailed => e
puts "Transaction failed: " + e.message
failed = true
rescue Ripple::ServerUnavailable
puts "Server Unavailable"
rescue Ripple::Timedout
puts "Request timed out"
end while not success and not failed
end
# 4. Verify transaction
if success
complete = false
begin
puts "Checking transaction status"
complete = ripple.transaction_suceeded?(tx_hash)
if not complete
# Sleep for small amount of time before checking again
sleep 1
end
rescue Ripple::InvalidTxHash
puts "Invalid Tx Hash"
rescue Ripple::ServerUnavailable
puts "Server Unavailable"
rescue Ripple::Timedout
puts "Request timed out"
end while not complete
puts "Transaction complete"
end
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request