diff options
| author | Louis Burda <dev@sinitax.com> | 2026-01-30 03:04:01 +0100 |
|---|---|---|
| committer | Louis Burda <dev@sinitax.com> | 2026-01-30 03:04:01 +0100 |
| commit | f6487c615cff023db1574e2c23db78bf02a43709 (patch) | |
| tree | 8a0e793a8ea28b2a5eef5dcd509b6c6a2466ee1c /examples/basic_usage.py | |
| download | nvdb-py-main.tar.gz nvdb-py-main.zip | |
Diffstat (limited to 'examples/basic_usage.py')
| -rw-r--r-- | examples/basic_usage.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/examples/basic_usage.py b/examples/basic_usage.py new file mode 100644 index 0000000..b386155 --- /dev/null +++ b/examples/basic_usage.py @@ -0,0 +1,74 @@ +"""Basic usage examples for nvdb-py.""" + +import asyncio + +from nvd import NVDClient + + +async def main() -> None: + """Run basic examples.""" + async with NVDClient() as client: + print("=" * 80) + print("Example 1: Get a specific CVE") + print("=" * 80) + + cve = await client.cve.get_cve("CVE-2021-44228") + print(f"CVE ID: {cve.id}") + print(f"Published: {cve.published}") + print(f"Status: {cve.vulnStatus}") + print(f"CVSS v3 Score: {cve.cvss_v3_score}") + print(f"Description: {cve.description[:200]}...") + print() + + print("=" * 80) + print("Example 2: Search CVEs by keyword (limited to 5 results)") + print("=" * 80) + + count = 0 + async for cve in client.cve.search_cves(keyword="sql injection"): + print(f"{cve.id}: {cve.description[:100]}...") + count += 1 + if count >= 5: + break + print() + + print("=" * 80) + print("Example 3: Get CVEs with CRITICAL severity (limited to 5)") + print("=" * 80) + + count = 0 + async for cve in client.cve.search_cves(cvss_v3_severity="CRITICAL"): + score = cve.cvss_v3_score or "N/A" + print(f"{cve.id} - Score: {score} - {cve.description[:80]}...") + count += 1 + if count >= 5: + break + print() + + print("=" * 80) + print("Example 4: Search CPEs by keyword") + print("=" * 80) + + count = 0 + async for cpe in client.cpe.search_cpes(keyword="apache"): + print(f"{cpe.cpeName}") + print(f" Title: {cpe.title}") + print(f" Deprecated: {cpe.deprecated}") + count += 1 + if count >= 5: + break + print() + + print("=" * 80) + print("Example 5: Get CVE change history") + print("=" * 80) + + history = await client.history.get_cve_history("CVE-2021-44228") + print(f"Found {len(history)} change events for CVE-2021-44228") + for change in history[:3]: + print(f" {change.eventName} at {change.created}") + print() + + +if __name__ == "__main__": + asyncio.run(main()) |
