OCaml client for the LinkedIn Voyager API
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(cookeio,linkedin): accept spaces in cookie values, redact secrets in logs

- Accept spaces in cookie values to handle real-world servers like LinkedIn
that send "delete me" cookie values for session expiration (RFC 6265 is
overly strict here; browsers accept spaces)
- Redact cookie values in all log output across cookeio, cookeio_jar, and
requests to prevent leaking session tokens
- Add browser-like headers to LinkedIn API client (accept, accept-language,
x-li-track) matching other LinkedIn API libraries
- Catch Too_many_redirects in LinkedIn client with actionable error message
- Reduce max_redirects to 5 for LinkedIn API calls

+6
+6
lib/api.ml
··· 45 45 |> Requests.Headers.add_string "csrf-token" csrf_token 46 46 |> Requests.Headers.add_string "x-restli-protocol-version" "2.0.0" 47 47 |> Requests.Headers.add_string "x-li-lang" "en_US" 48 + |> Requests.Headers.add_string "accept-language" 49 + "en-AU,en-GB;q=0.9,en-US;q=0.8,en;q=0.7" 48 50 |> Requests.Headers.add_string "user-agent" user_agent 51 + |> Requests.Headers.add_string "accept" 52 + "application/vnd.linkedin.normalized+json+2.1" 53 + |> Requests.Headers.add_string "x-li-track" 54 + {|{"clientVersion":"1.13.8031","mpVersion":"1.13.8031","osName":"web","timezoneOffset":0,"timezone":"Etc/UTC","deviceFormFactor":"DESKTOP","mpName":"voyager-web"}|} 49 55 in 50 56 let session = 51 57 Requests.create ~sw ~base_url:"https://www.linkedin.com" ~default_headers