import styled from '@emotion/styled'; import colors from 'web-check-live/styles/colors'; import { Card } from 'web-check-live/components/Form/Card'; import Row, { ExpandableRow } from 'web-check-live/components/Form/Row'; const Expandable = styled.details` margin-top: 0.5rem; cursor: pointer; summary::marker { color: ${colors.primary}; } `; const getExpandableTitle = (urlObj: any) => { let pathName = ''; try { pathName = new URL(urlObj.url).pathname; } catch(e) {} return `${pathName} (${urlObj.id})`; } const convertToDate = (dateString: string): string => { const [date, time] = dateString.split(' '); const [year, month, day] = date.split('-').map(Number); const [hour, minute, second] = time.split(':').map(Number); const dateObject = new Date(year, month - 1, day, hour, minute, second); if (isNaN(dateObject.getTime())) { return dateString; } return dateObject.toString(); } const MalwareCard = (props: {data: any, title: string, actionButtons: any }): JSX.Element => { const urlHaus = props.data.urlHaus || {}; const phishTank = props.data.phishTank || {}; const cloudmersive = props.data.cloudmersive || {}; const safeBrowsing = props.data.safeBrowsing || {}; return ( { safeBrowsing && !safeBrowsing.error && ( )} { ((cloudmersive && !cloudmersive.error) || safeBrowsing?.details) && ( )} { phishTank && !phishTank.error && ( )} { phishTank.url0 && phishTank.url0.phish_detail_page && ( Phish Info {phishTank.url0.phish_id} )} { urlHaus.query_status === 'no_results' && } { urlHaus.query_status === 'ok' && ( <> )} {urlHaus.urls && ( Expand Results { urlHaus.urls.map((urlResult: any, index: number) => { const rows = [ { lbl: 'ID', val: urlResult.id }, { lbl: 'Status', val: urlResult.url_status }, { lbl: 'Date Added', val: convertToDate(urlResult.date_added) }, { lbl: 'Threat Type', val: urlResult.threat }, { lbl: 'Reported By', val: urlResult.reporter }, { lbl: 'Takedown Time', val: urlResult.takedown_time_seconds }, { lbl: 'Larted', val: urlResult.larted }, { lbl: 'Tags', val: (urlResult.tags || []).join(', ') }, { lbl: 'Reference', val: urlResult.urlhaus_reference }, { lbl: 'File Path', val: urlResult.url }, ]; return () })} )} ); } export default MalwareCard;