62 lines
2.5 KiB
Ruby
62 lines
2.5 KiB
Ruby
namespace :init_order do
|
|
desc 'initalizing orders for testing'
|
|
task :fire, %i[order_count member_count] => [:environment] do |_t, args|
|
|
include ::Bench::Helpers
|
|
raise 'please set config' if args[:order_count].blank? || args[:member_count].blank?
|
|
|
|
my_config = { injector: 'dummy', number: args[:order_count].to_i, step: 100, markets: 'btcusd',
|
|
currencies: 'btc,usd', min_volume: 0.001, max_volume: 0.005 }
|
|
|
|
memberes = ::Bench::Factories.create_list(:member, args[:member_count].to_i)
|
|
@currencies = ::Currency.where(id: my_config[:currencies].split(',').map(&:squish).reject(&:blank?))
|
|
raise 'check currencies' unless @currencies.present?
|
|
raise 'check members' unless memberes.present?
|
|
|
|
memberes.map(&method(:become_billionaire))
|
|
|
|
buy_config = my_config.merge({ min_price: 19_000, max_price: 20_000 })
|
|
buy_injector = ::Bench::Injectors.initialize_injector(buy_config)
|
|
(1..my_config[:number]).each do |_i|
|
|
my_create_order(buy_injector.construct_order(memberes, 'OrderBid'))
|
|
end
|
|
|
|
sell_config = my_config.merge({ min_price: 50_000, max_price: 51_000 })
|
|
sell_injector = ::Bench::Injectors.initialize_injector(sell_config)
|
|
(1..my_config[:number]).each do |_i|
|
|
my_create_order(sell_injector.construct_order(memberes, 'OrderAsk'))
|
|
end
|
|
end
|
|
|
|
task :fire_token => [:environment] do
|
|
raise 'secretFile is not existed' unless File.exist?("#{Rails.root}/config/secrets/rsa-key")
|
|
|
|
secret_file = File.read("#{Rails.root}/config/secrets/rsa-key")
|
|
puts secret_file
|
|
raise 'secretFile is not existed' unless File.exist?("#{Rails.root}/config/secrets/rsa-key.pub")
|
|
|
|
public_file = File.read("#{Rails.root}/config/secrets/rsa-key.pub")
|
|
puts public_file
|
|
|
|
token_file = "#{Rails.root}/public/member_jwt_token.csv"
|
|
JWT_ALGORITHM = 'RS256'
|
|
ENCODED_PRIVATE_KEY = Base64.urlsafe_encode64(secret_file)
|
|
ENCODED_PUBLIC_KEY = Base64.urlsafe_encode64(public_file)
|
|
result = []
|
|
Member.all.each do |member|
|
|
payload = { uid: member.uid, email: member.email, level: member.level,
|
|
role: member.role, state: "active", aud: "peatio", sub: "session",
|
|
jti: SecureRandom.uuid }
|
|
token = JWT.encode(payload, OpenSSL::PKey.read(Base64.urlsafe_decode64(ENCODED_PRIVATE_KEY)), JWT_ALGORITHM)
|
|
puts [member.uid, member.email, token]
|
|
result << [member.uid.to_s, member.email.to_s, token.to_s]
|
|
end
|
|
|
|
CSV.open(token_file, 'w', write_headers: true) do |csv|
|
|
result.each do |res|
|
|
csv << res
|
|
end
|
|
puts 'FINISHED'
|
|
end
|
|
end
|
|
end
|