mirror of
https://github.com/Lissy93/web-check.git
synced 2025-06-18 19:06:42 +02:00
Move cookie logic into cookie component
This commit is contained in:
parent
d3fa33b104
commit
9430fc7913
@ -1,13 +1,31 @@
|
|||||||
import { Card } from 'components/Form/Card';
|
import { Card } from 'components/Form/Card';
|
||||||
import { ExpandableRow } from 'components/Form/Row';
|
import { ExpandableRow } from 'components/Form/Row';
|
||||||
|
import { Cookie } from 'utils/result-processor';
|
||||||
|
|
||||||
|
export const parseHeaderCookies = (cookiesHeader: string[]): Cookie[] => {
|
||||||
|
if (!cookiesHeader || !cookiesHeader.length) return [];
|
||||||
|
const cookies = cookiesHeader.flatMap(cookieHeader => {
|
||||||
|
return cookieHeader.split(/,(?=\s[A-Za-z0-9]+=)/).map(cookieString => {
|
||||||
|
const [nameValuePair, ...attributePairs] = cookieString.split('; ').map(part => part.trim());
|
||||||
|
const [name, value] = nameValuePair.split('=');
|
||||||
|
const attributes: Record<string, string> = {};
|
||||||
|
attributePairs.forEach(pair => {
|
||||||
|
const [attributeName, attributeValue = ''] = pair.split('=');
|
||||||
|
attributes[attributeName] = attributeValue;
|
||||||
|
});
|
||||||
|
return { name, value, attributes };
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return cookies;
|
||||||
|
};
|
||||||
|
|
||||||
const CookiesCard = (props: { data: any, title: string, actionButtons: any}): JSX.Element => {
|
const CookiesCard = (props: { data: any, title: string, actionButtons: any}): JSX.Element => {
|
||||||
const cookies = props.data.cookies;
|
const headerCookies = parseHeaderCookies(props.data.headerCookies) || [];
|
||||||
|
const clientCookies = props.data.clientCookies || [];
|
||||||
return (
|
return (
|
||||||
<Card heading={props.title} actionButtons={props.actionButtons}>
|
<Card heading={props.title} actionButtons={props.actionButtons}>
|
||||||
{ cookies.length === 0 && <p>No cookies found.</p> }
|
|
||||||
{
|
{
|
||||||
cookies.map((cookie: any, index: number) => {
|
headerCookies.map((cookie: any, index: number) => {
|
||||||
const attributes = Object.keys(cookie.attributes).map((key: string) => {
|
const attributes = Object.keys(cookie.attributes).map((key: string) => {
|
||||||
return { lbl: key, val: cookie.attributes[key] }
|
return { lbl: key, val: cookie.attributes[key] }
|
||||||
});
|
});
|
||||||
@ -16,6 +34,14 @@ const CookiesCard = (props: { data: any, title: string, actionButtons: any}): JS
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
clientCookies.map((cookie: any) => {
|
||||||
|
const nameValPairs = Object.keys(cookie).map((key: string) => { return { lbl: key, val: cookie[key] }});
|
||||||
|
return (
|
||||||
|
<ExpandableRow key={`cookie-${cookie.name}`} lbl={cookie.name} val="" rowList={nameValPairs} />
|
||||||
|
);
|
||||||
|
})
|
||||||
|
}
|
||||||
</Card>
|
</Card>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -140,25 +140,6 @@ export type Cookie = {
|
|||||||
attributes: Record<string, string>;
|
attributes: Record<string, string>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const parseCookies = (cookiesHeader: string[]): {cookies: Cookie[]} => {
|
|
||||||
if (!cookiesHeader || !cookiesHeader.length) return {cookies: []};
|
|
||||||
|
|
||||||
const cookies = cookiesHeader.flatMap(cookieHeader => {
|
|
||||||
return cookieHeader.split(/,(?=\s[A-Za-z0-9]+=)/).map(cookieString => {
|
|
||||||
const [nameValuePair, ...attributePairs] = cookieString.split('; ').map(part => part.trim());
|
|
||||||
const [name, value] = nameValuePair.split('=');
|
|
||||||
const attributes: Record<string, string> = {};
|
|
||||||
attributePairs.forEach(pair => {
|
|
||||||
const [attributeName, attributeValue = ''] = pair.split('=');
|
|
||||||
attributes[attributeName] = attributeValue;
|
|
||||||
});
|
|
||||||
return { name, value, attributes };
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return { cookies };
|
|
||||||
};
|
|
||||||
|
|
||||||
export const parseRobotsTxt = (content: string): { robots: RowProps[] } => {
|
export const parseRobotsTxt = (content: string): { robots: RowProps[] } => {
|
||||||
const lines = content.split('\n');
|
const lines = content.split('\n');
|
||||||
const rules: RowProps[] = [];
|
const rules: RowProps[] = [];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user