Skip to content

Commit 642e1f7

Browse files
committed
Revert "Added helper function for converting gfm output"
This reverts commit e039fb7.
1 parent 62a3094 commit 642e1f7

File tree

7 files changed

+48
-207
lines changed

7 files changed

+48
-207
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
66

77
[project]
88
name = "socketsecurity"
9-
version = "2.1.4"
9+
version = "2.1.3"
1010
requires-python = ">= 3.10"
1111
license = {"file" = "LICENSE"}
1212
dependencies = [

socketsecurity/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
__author__ = 'socket.dev'
2-
__version__ = '2.1.4'
2+
__version__ = '2.1.3'

socketsecurity/core/__init__.py

Lines changed: 39 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ def create_packages_dict(self, sbom_artifacts: list[SocketArtifact]) -> dict[str
425425
packages = {}
426426
top_level_count = {}
427427
for artifact in sbom_artifacts:
428-
package = Package.from_diff_artifact(artifact.__dict__)
428+
package = Package.from_socket_artifact(asdict(artifact))
429429
if package.id in packages:
430430
print("Duplicate package?")
431431
else:
@@ -534,44 +534,22 @@ def update_package_values(pkg: Package) -> Package:
534534
pkg.url += f"/{pkg.name}/overview/{pkg.version}"
535535
return pkg
536536

537-
def get_added_and_removed_packages(
538-
self,
539-
head_full_scan_id: str,
540-
new_full_scan_id: str,
541-
merge: bool = False,
542-
external_href: str = None,
543-
) -> Tuple[Dict[str, Package], Dict[str, Package], str, str]:
537+
def get_added_and_removed_packages(self, head_full_scan_id: str, new_full_scan_id: str) -> Tuple[Dict[str, Package], Dict[str, Package]]:
544538
"""
545539
Get packages that were added and removed between scans.
546540
547541
Args:
548-
head_full_scan_id: Previous scan
549-
new_full_scan_id: New scan just created
550-
merge: Whether the scan is merged into the default branch
551-
external_href: External reference
542+
head_full_scan: Previous scan (may be None if first scan)
543+
head_full_scan_id: New scan just created
544+
552545
Returns:
553546
Tuple of (added_packages, removed_packages) dictionaries
554547
"""
555548

556549
log.info(f"Comparing scans - Head scan ID: {head_full_scan_id}, New scan ID: {new_full_scan_id}")
557550
diff_start = time.time()
558551
try:
559-
params = {
560-
"before": head_full_scan_id,
561-
"after": new_full_scan_id,
562-
"description": f"Diff scan between head {head_full_scan_id} and new {new_full_scan_id} scans",
563-
"merge": merge,
564-
}
565-
if external_href:
566-
params["external_href"] = external_href
567-
new_diff_scan = self.sdk.diffscans.create_from_ids(self.config.org_slug, params)
568-
data = new_diff_scan.get("diff_scan", {})
569-
diff_scan_id = data.get("id")
570-
if not diff_scan_id:
571-
log.error(f"Failed to get diff scan ID for {new_full_scan_id}")
572-
log.error(new_diff_scan)
573-
sys.exit(1)
574-
diff_report = self.sdk.diffscans.get(self.config.org_slug, diff_scan_id)
552+
diff_report = self.sdk.fullscans.stream_diff(self.config.org_slug, head_full_scan_id, new_full_scan_id, use_types=True).data
575553
except APIFailure as e:
576554
log.error(f"API Error: {e}")
577555
sys.exit(1)
@@ -581,63 +559,44 @@ def get_added_and_removed_packages(
581559
log.error(f"Stack trace:\n{traceback.format_exc()}")
582560
raise
583561

584-
diff_data = diff_report.get("diff_scan", {})
585562
diff_end = time.time()
586-
diff_url = diff_data.get("html_url")
587-
after_data = diff_data.get("after_full_scan")
588-
if after_data:
589-
new_full_scan_url = after_data.get("html_url")
590-
else:
591-
new_full_scan_url = ""
592-
artifacts = diff_data.get("artifacts", {})
593-
added = artifacts.get("added", [])
594-
removed = artifacts.get("removed", [])
595-
unchanged = artifacts.get("unchanged", [])
596-
replaced = artifacts.get("replaced", [])
597-
updated = artifacts.get("updated", [])
598563
log.info(f"Diff Report Gathered in {diff_end - diff_start:.2f} seconds")
599564
log.info("Diff report artifact counts:")
600-
log.info(f"Added: {len(added)}")
601-
log.info(f"Removed: {len(removed)}")
602-
log.info(f"Unchanged: {len(unchanged)}")
603-
log.info(f"Replaced: {len(replaced)}")
604-
log.info(f"Updated: {len(updated)}")
565+
log.info(f"Added: {len(diff_report.artifacts.added)}")
566+
log.info(f"Removed: {len(diff_report.artifacts.removed)}")
567+
log.info(f"Unchanged: {len(diff_report.artifacts.unchanged)}")
568+
log.info(f"Replaced: {len(diff_report.artifacts.replaced)}")
569+
log.info(f"Updated: {len(diff_report.artifacts.updated)}")
605570

606-
added_artifacts = added + updated
607-
removed_artifacts = removed
571+
added_artifacts = diff_report.artifacts.added + diff_report.artifacts.updated
572+
removed_artifacts = diff_report.artifacts.removed + diff_report.artifacts.replaced
608573

609574
added_packages: Dict[str, Package] = {}
610575
removed_packages: Dict[str, Package] = {}
611576

612577
for artifact in added_artifacts:
613-
artifact_id = artifact.get("id")
614-
artifact_name = artifact.get("name")
615-
artifact_version = artifact.get("version")
616578
try:
617-
pkg = Package.from_diff_artifact(artifact)
579+
pkg = Package.from_diff_artifact(asdict(artifact))
618580
pkg = Core.update_package_values(pkg)
619-
added_packages[pkg.id] = pkg
581+
added_packages[artifact.id] = pkg
620582
except KeyError:
621-
log.error(f"KeyError: Could not create package from added artifact {artifact_id}")
622-
log.error(f"Artifact details - name: {artifact_name}, version: {artifact_version}")
583+
log.error(f"KeyError: Could not create package from added artifact {artifact.id}")
584+
log.error(f"Artifact details - name: {artifact.name}, version: {artifact.version}")
623585
log.error("No matching packages found in new_full_scan")
624586

625587
for artifact in removed_artifacts:
626-
artifact_id = artifact.get("id")
627-
artifact_name = artifact.get("name")
628-
artifact_version = artifact.get("version")
629588
try:
630-
pkg = Package.from_diff_artifact(artifact)
589+
pkg = Package.from_diff_artifact(asdict(artifact))
631590
pkg = Core.update_package_values(pkg)
632591
if pkg.namespace:
633592
pkg.purl += f"{pkg.namespace}/{pkg.purl}"
634-
removed_packages[pkg.id] = pkg
593+
removed_packages[artifact.id] = pkg
635594
except KeyError:
636-
log.error(f"KeyError: Could not create package from removed artifact {artifact_id}")
637-
log.error(f"Artifact details - name: {artifact_name}, version: {artifact_version}")
595+
log.error(f"KeyError: Could not create package from removed artifact {artifact.id}")
596+
log.error(f"Artifact details - name: {artifact.name}, version: {artifact.version}")
638597
log.error("No matching packages found in head_full_scan")
639598

640-
return added_packages, removed_packages, diff_url, new_full_scan_url
599+
return added_packages, removed_packages
641600

642601
def create_new_diff(
643602
self,
@@ -683,6 +642,7 @@ def create_new_diff(
683642
try:
684643
new_scan_start = time.time()
685644
new_full_scan = self.create_full_scan(files_for_sending, params)
645+
new_full_scan.sbom_artifacts = self.get_sbom_data(new_full_scan.id)
686646
new_scan_end = time.time()
687647
log.info(f"Total time to create new full scan: {new_scan_end - new_scan_start:.2f}")
688648
except APIFailure as e:
@@ -694,15 +654,26 @@ def create_new_diff(
694654
log.error(f"Stack trace:\n{traceback.format_exc()}")
695655
raise
696656

697-
added_packages, removed_packages, diff_url, report_url = self.get_added_and_removed_packages(
698-
head_full_scan_id,
699-
new_full_scan.id
700-
)
657+
scans_ready = self.check_full_scans_status(head_full_scan_id, new_full_scan.id)
658+
if scans_ready is False:
659+
log.error(f"Full scans did not complete within {self.config.timeout} seconds")
660+
added_packages, removed_packages = self.get_added_and_removed_packages(head_full_scan_id, new_full_scan.id)
701661

702662
diff = self.create_diff_report(added_packages, removed_packages)
663+
664+
base_socket = "https://socket.dev/dashboard/org"
703665
diff.id = new_full_scan.id
666+
667+
report_url = f"{base_socket}/{self.config.org_slug}/sbom/{diff.id}"
668+
if not params.include_license_details:
669+
report_url += "?include_license_details=false"
704670
diff.report_url = report_url
705-
diff.diff_url = diff_url
671+
672+
if head_full_scan_id is not None:
673+
diff.diff_url = f"{base_socket}/{self.config.org_slug}/diff/{head_full_scan_id}/{diff.id}"
674+
else:
675+
diff.diff_url = diff.report_url
676+
706677
return diff
707678

708679
def create_diff_report(

socketsecurity/core/classes.py

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class AlertCounts(TypedDict):
9797
low: int
9898

9999
@dataclass(kw_only=True)
100-
class Package():
100+
class Package(SocketArtifactLink):
101101
"""
102102
Represents a package detected in a Socket Security scan.
103103
@@ -106,23 +106,16 @@ class Package():
106106
"""
107107

108108
# Common properties from both artifact types
109-
type: str
109+
id: str
110110
name: str
111111
version: str
112-
release: str
113-
diffType: str
114-
id: str
115-
author: List[str] = field(default_factory=list)
112+
type: str
116113
score: SocketScore
117114
alerts: List[SocketAlert]
115+
author: List[str] = field(default_factory=list)
118116
size: Optional[int] = None
119117
license: Optional[str] = None
120118
namespace: Optional[str] = None
121-
topLevelAncestors: Optional[List[str]] = None
122-
direct: Optional[bool] = False
123-
manifestFiles: Optional[List[SocketManifestReference]] = None
124-
dependencies: Optional[List[str]] = None
125-
artifact: Optional[SocketArtifactLink] = None
126119

127120
# Package-specific fields
128121
license_text: str = ""
@@ -210,9 +203,7 @@ def from_diff_artifact(cls, data: dict) -> "Package":
210203
manifestFiles=ref.get("manifestFiles", []),
211204
dependencies=ref.get("dependencies"),
212205
artifact=ref.get("artifact"),
213-
namespace=data.get('namespace', None),
214-
release=ref.get("release", None),
215-
diffType=ref.get("diffType", None),
206+
namespace=data.get('namespace', None)
216207
)
217208

218209
class Issue:

socketsecurity/core/helper/__init__.py

Lines changed: 0 additions & 119 deletions
This file was deleted.

socketsecurity/core/messages.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,7 @@ def create_security_comment_json(diff: Diff) -> dict:
292292
output = {
293293
"scan_failed": scan_failed,
294294
"new_alerts": [],
295-
"full_scan_id": diff.id,
296-
"diff_url": diff.diff_url
295+
"full_scan_id": diff.id
297296
}
298297
for alert in diff.new_alerts:
299298
alert: Issue

socketsecurity/output.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ def output_console_comments(self, diff_report: Diff, sbom_file_name: Optional[st
6666

6767
console_security_comment = Messages.create_console_security_alert_table(diff_report)
6868
self.logger.info("Security issues detected by Socket Security:")
69-
self.logger.info(f"Diff Url: {diff_report.diff_url}")
70-
self.logger.info(f"\n{console_security_comment}")
69+
self.logger.info(console_security_comment)
7170

7271
def output_console_json(self, diff_report: Diff, sbom_file_name: Optional[str] = None) -> None:
7372
"""Outputs JSON formatted results"""

0 commit comments

Comments
 (0)