Skip to content

Commit 919235c

Browse files
authored
Added license metadata endpoint (#37)
* Added license metadata endpoint * Fixed debug output * Version bump
1 parent bcad005 commit 919235c

File tree

16 files changed

+52
-22
lines changed

16 files changed

+52
-22
lines changed

socketdev/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from socketdev.utils import Utils, IntegrationType, INTEGRATION_TYPES
1818
from socketdev.version import __version__
1919
from socketdev.labels import Labels
20+
from socketdev.licensemetadata import LicenseMetadata
2021
from socketdev.log import log
2122

2223

@@ -59,6 +60,7 @@ def __init__(self, token: str, timeout: int = 1200):
5960
self.triage = Triage(self.api)
6061
self.utils = Utils()
6162
self.labels = Labels(self.api)
63+
self.licensemetadata = LicenseMetadata(self.api)
6264

6365
@staticmethod
6466
def set_timeout(timeout: int):

socketdev/core/dedupe.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from collections import defaultdict
22
from typing import Dict, List, Any
3+
from socketdev.log import log
34

45

56
class Dedupe:
@@ -100,5 +101,5 @@ def consolidate_by_order(packages: List[Dict[str, Any]]) -> dict[int, list[dict[
100101
pkg["batchIndex"] = batch_index
101102
grouped[pkg["batchIndex"]].append(pkg)
102103
except Exception as error:
103-
print(error)
104+
log.error(error)
104105
return grouped

socketdev/export/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def cdx_bom(
4747
# TODO: Add typed response when types are defined
4848

4949
log.error(f"Error exporting CDX BOM: {response.status_code}")
50-
print(response.text)
50+
log.error(response.text)
5151
return {}
5252

5353
def spdx_bom(
@@ -71,5 +71,5 @@ def spdx_bom(
7171
# TODO: Add typed response when types are defined
7272

7373
log.error(f"Error exporting SPDX BOM: {response.status_code}")
74-
print(response.text)
74+
log.error(response.text)
7575
return {}

socketdev/labels/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def post(self, org_slug: str, label_name: str) -> dict:
7373
return result
7474

7575
error_message = response.json().get("error", {}).get("message", "Unknown error")
76-
print(f"Failed to create repository label: {response.status_code}, message: {error_message}")
76+
log.error(f"Failed to create repository label: {response.status_code}, message: {error_message}")
7777
return {}
7878

7979
def get(self, org_slug: str, label_id: str) -> dict:
@@ -84,7 +84,7 @@ def get(self, org_slug: str, label_id: str) -> dict:
8484
return result
8585

8686
error_message = response.json().get("error", {}).get("message", "Unknown error")
87-
print(f"Failed to get repository label: {response.status_code}, message: {error_message}")
87+
log.error(f"Failed to get repository label: {response.status_code}, message: {error_message}")
8888
return {}
8989

9090
def delete(self, org_slug: str, label_id: str) -> dict:

socketdev/licensemetadata/__init__.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import json
2+
import logging
3+
import urllib.parse
4+
5+
log = logging.getLogger("socketdev")
6+
7+
8+
class LicenseMetadata:
9+
def __init__(self, api):
10+
self.api = api
11+
12+
def post(self, licenses: list, params: dict = None) -> dict:
13+
path = f"license-metadata"
14+
if params:
15+
query_args = urllib.parse.urlencode(params)
16+
path += f"?{query_args}"
17+
payload = json.dumps(licenses)
18+
response = self.api.do_request(path=path, method="POST", payload=payload)
19+
20+
if response.status_code == 200:
21+
result = response.json()
22+
return result
23+
24+
error_message = response.json().get("error", {}).get("message", "Unknown error")
25+
log.error(f"Failed to create license metadata: {response.status_code}, message: {error_message}")
26+
return {}
27+

socketdev/npm/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def issues(self, package: str, version: str) -> list:
1515
if response.status_code == 200:
1616
return response.json()
1717
log.error(f"Error getting npm issues: {response.status_code}")
18-
print(response.text)
18+
log.error(response.text)
1919
return []
2020

2121
def score(self, package: str, version: str) -> list:
@@ -24,5 +24,5 @@ def score(self, package: str, version: str) -> list:
2424
if response.status_code == 200:
2525
return response.json()
2626
log.error(f"Error getting npm score: {response.status_code}")
27-
print(response.text)
27+
log.error(response.text)
2828
return []

socketdev/openapi/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ def get(self) -> dict:
1515
if response.status_code == 200:
1616
return response.json()
1717
log.error(f"Error getting OpenAPI spec: {response.status_code}")
18-
print(response.text)
18+
log.error(response.text)
1919
return {}

socketdev/org/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ def get(self, use_types: bool = False) -> OrganizationsResponse:
3030
return OrganizationsResponse(result)
3131
return result
3232
log.error(f"Error getting organizations: {response.status_code}")
33-
print(response.text)
33+
log.error(response.text)
3434
return {"organizations": {}}

socketdev/purl/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,5 @@ def post(self, license: str = "false", components: list = None, **kwargs) -> lis
3737
return purl_deduped
3838

3939
log.error(f"Error posting {components} to the Purl API: {response.status_code}")
40-
print(response.text)
40+
log.error(response.text)
4141
return []

socketdev/quota/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ def get(self) -> dict:
1515
if response.status_code == 200:
1616
return response.json()
1717
log.error(f"Error getting quota: {response.status_code}")
18-
print(response.text)
18+
log.error(response.text)
1919
return {}

socketdev/report/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def list(self, from_time: int = None) -> dict:
2727
if response.status_code == 200:
2828
return response.json()
2929
log.error(f"Error listing reports: {response.status_code}")
30-
print(response.text)
30+
log.error(response.text)
3131
return {}
3232

3333
def delete(self, report_id: str) -> bool:
@@ -36,7 +36,7 @@ def delete(self, report_id: str) -> bool:
3636
if response.status_code == 200:
3737
return True
3838
log.error(f"Error deleting report: {response.status_code}")
39-
print(response.text)
39+
log.error(response.text)
4040
return False
4141

4242
def view(self, report_id) -> dict:
@@ -45,7 +45,7 @@ def view(self, report_id) -> dict:
4545
if response.status_code == 200:
4646
return response.json()
4747
log.error(f"Error viewing report: {response.status_code}")
48-
print(response.text)
48+
log.error(response.text)
4949
return {}
5050

5151
def supported(self) -> dict:
@@ -54,7 +54,7 @@ def supported(self) -> dict:
5454
if response.status_code == 200:
5555
return response.json()
5656
log.error(f"Error getting supported reports: {response.status_code}")
57-
print(response.text)
57+
log.error(response.text)
5858
return {}
5959

6060
def create(self, files: list) -> dict:
@@ -68,5 +68,5 @@ def create(self, files: list) -> dict:
6868
if response.status_code == 200:
6969
return response.json()
7070
log.error(f"Error creating report: {response.status_code}")
71-
print(response.text)
71+
log.error(response.text)
7272
return {}

socketdev/repos/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def repo(self, org_slug: str, repo_name: str, use_types: bool = False) -> Union[
108108
return result
109109

110110
error_message = response.json().get("error", {}).get("message", "Unknown error")
111-
print(f"Failed to get repository: {response.status_code}, message: {error_message}")
111+
log.error(f"Failed to get repository: {response.status_code}, message: {error_message}")
112112
if use_types:
113113
return GetRepoResponse.from_dict(
114114
{"success": False, "status": response.status_code, "message": error_message}

socketdev/repositories/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ def list(self, use_types: bool = False) -> Union[dict, list[Repo]]:
2727
return result
2828

2929
log.error(f"Error listing repositories: {response.status_code}")
30-
print(response.text)
30+
log.error(response.text)
3131
return []

socketdev/sbom/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def view(self, report_id: str) -> dict[str, dict]:
3232
sbom_dict[val["id"]] = val
3333
else:
3434
log.error(f"Error viewing SBOM: {response.status_code}")
35-
print(response.text)
35+
log.error(response.text)
3636
sbom_dict = {}
3737
return sbom_dict
3838

@@ -48,7 +48,7 @@ def create_packages_dict(self, sbom: dict[str, dict]) -> dict[str, Package]:
4848
item = sbom[package_id]
4949
package = Package(**item)
5050
if package.id in packages:
51-
print(f"Duplicate package_id: {package_id}")
51+
log.error(f"Duplicate package_id: {package_id}")
5252
else:
5353
packages[package.id] = package
5454
for top_id in package.topLevelAncestors:

socketdev/settings/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def get(
9191
return rules
9292

9393
error_message = response.json().get("error", {}).get("message", "Unknown error")
94-
print(f"Failed to get security policy: {response.status_code}, message: {error_message}")
94+
log.error(f"Failed to get security policy: {response.status_code}, message: {error_message}")
9595
if use_types:
9696
return OrgSecurityPolicyResponse.from_dict(
9797
{"securityPolicyRules": {}, "success": False, "status": response.status_code, "message": error_message}

socketdev/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "2.1.0"
1+
__version__ = "2.1.3"

0 commit comments

Comments
 (0)