client = GameApiClient.new
turn1 = Turn.find_by(number: 1)

def get_units(gs)
  return {} unless gs.is_a?(Hash)
  gs = gs['game_state'] if gs.has_key?('game_state')
  units = {}
  if gs['powers'].is_a?(Hash)
    gs['powers'].each do |power, data|
      units[power] = data['units']
    end
  end
  units
end

if turn1
  puts "Sending process request for Turn 1..."
  res = client.api_calculate_process(turn1.game_state, turn1.orders || {})
  
  if res
    new_gs = res['game_state']
    puts "Response Phase: #{new_gs&.dig('phase')}"
    
    puts "Units in Response game_state:"
    units = get_units(new_gs)
    puts units.inspect
    
    puts "\nSending possible_orders request using this response..."
    pos = client.api_calculate_possible_orders(new_gs, by_power: true)
    puts "Possible Orders for AUSTRIA:"
    puts (pos&.dig('possible_orders', 'AUSTRIA') || "None").inspect[0..500]
  else
    puts "Process failed."
  end
end
