test_copilot/
test_copilot.rs1use seher::{BrowserDetector, CookieReader};
2
3#[tokio::main(flavor = "current_thread")]
4async fn main() {
5 let detector = BrowserDetector::new();
6 let browsers = detector.detect_browsers();
7
8 for browser in &browsers {
9 if !browser.is_chromium_based() {
10 continue;
11 }
12 for prof in detector.list_profiles(*browser) {
13 if let Ok(cookies) = CookieReader::read_cookies(&prof, "github.com") {
14 let has_user_session = cookies
15 .iter()
16 .any(|c| c.name == "user_session" || c.name == "__Host-user_session_same_site");
17
18 if !has_user_session {
19 continue;
20 }
21
22 let dotcom_user = cookies
23 .iter()
24 .find(|c| c.name == "dotcom_user")
25 .map_or("unknown", |c| c.value.as_str());
26 println!(
27 "Using {} - {} ({} cookies, user={})",
28 browser.name(),
29 prof.name,
30 cookies.len(),
31 dotcom_user
32 );
33
34 match seher::copilot::CopilotClient::fetch_quota(&cookies).await {
35 Ok(quota) => {
36 println!("\nSuccess! Copilot quota:");
37 println!(" chat_utilization: {:.1}%", quota.chat_utilization);
38 println!(" premium_utilization: {:.1}%", quota.premium_utilization);
39 println!(" reset_time: {:?}", quota.reset_time);
40 println!(" is_limited: {}", quota.is_limited());
41 return;
42 }
43 Err(e) => {
44 println!("\nFailed to fetch Copilot quota: {e}");
45 }
46 }
47 }
48 }
49 }
50
51 println!("No github.com session with user_session cookie found");
52}