agent-twitter-summary
Version:
A twitter client for agents
33 lines (31 loc) • 1.13 kB
text/typescript
import { Cookie, CookieJar } from 'tough-cookie';
import setCookie from 'set-cookie-parser';
import type { Headers as HeadersPolyfill } from 'headers-polyfill';
/**
* Updates a cookie jar with the Set-Cookie headers from the provided Headers instance.
* @param cookieJar The cookie jar to update.
* @param headers The response headers to populate the cookie jar with.
*/
export async function updateCookieJar(
cookieJar: CookieJar,
headers: Headers | HeadersPolyfill,
) {
const setCookieHeader = headers.get('set-cookie');
if (setCookieHeader) {
const cookies = setCookie.splitCookiesString(setCookieHeader);
for (const cookie of cookies.map((c) => Cookie.parse(c))) {
if (!cookie) continue;
await cookieJar.setCookie(
cookie,
`${cookie.secure ? 'https' : 'http'}://${cookie.domain}${cookie.path}`,
);
}
} else if (typeof document !== 'undefined') {
for (const cookie of document.cookie.split(';')) {
const hardCookie = Cookie.parse(cookie);
if (hardCookie) {
await cookieJar.setCookie(hardCookie, document.location.toString());
}
}
}
}