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