lastfm_edit/
headers.rs

1use http_client::Request;
2
3/// Common Chrome user agent string for all requests
4const USER_AGENT: &str = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
5
6/// Common Chrome headers for security info
7const SEC_CH_UA: &str =
8    "\"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"138\", \"Google Chrome\";v=\"138\"";
9const SEC_CH_UA_MOBILE: &str = "?0";
10const SEC_CH_UA_PLATFORM: &str = "\"Linux\"";
11
12/// Add common browser headers to a request
13pub fn add_common_headers(request: &mut Request) {
14    let _ = request.insert_header("User-Agent", USER_AGENT);
15    let _ = request.insert_header("Accept-Language", "en-US,en;q=0.9");
16    let _ = request.insert_header("Accept-Encoding", "gzip, deflate, br");
17    let _ = request.insert_header("DNT", "1");
18    let _ = request.insert_header("Connection", "keep-alive");
19    let _ = request.insert_header("sec-ch-ua", SEC_CH_UA);
20    let _ = request.insert_header("sec-ch-ua-mobile", SEC_CH_UA_MOBILE);
21    let _ = request.insert_header("sec-ch-ua-platform", SEC_CH_UA_PLATFORM);
22}
23
24/// Add headers for AJAX form edit requests
25pub fn add_edit_headers(request: &mut Request, referer_url: &str) {
26    add_common_headers(request);
27    let _ = request.insert_header("Accept", "*/*");
28    let _ = request.insert_header(
29        "Content-Type",
30        "application/x-www-form-urlencoded;charset=UTF-8",
31    );
32    let _ = request.insert_header("Priority", "u=1, i");
33    let _ = request.insert_header("X-Requested-With", "XMLHttpRequest");
34    let _ = request.insert_header("Sec-Fetch-Dest", "empty");
35    let _ = request.insert_header("Sec-Fetch-Mode", "cors");
36    let _ = request.insert_header("Sec-Fetch-Site", "same-origin");
37    let _ = request.insert_header("Referer", referer_url);
38}
39
40/// Add headers for GET requests (regular pages or AJAX)
41pub fn add_get_headers(request: &mut Request, is_ajax: bool, referer_url: Option<&str>) {
42    add_common_headers(request);
43
44    if is_ajax {
45        let _ = request.insert_header("Accept", "*/*");
46        let _ = request.insert_header("X-Requested-With", "XMLHttpRequest");
47    } else {
48        let _ = request.insert_header(
49            "Accept",
50            "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
51        );
52        let _ = request.insert_header("Upgrade-Insecure-Requests", "1");
53    }
54
55    if let Some(referer) = referer_url {
56        let _ = request.insert_header("Referer", referer);
57    }
58}
59
60/// Add cookies to a request if they exist
61pub fn add_cookies(request: &mut Request, cookies: &[String]) {
62    if !cookies.is_empty() {
63        let cookie_header = cookies.join("; ");
64        let _ = request.insert_header("Cookie", &cookie_header);
65    }
66}