Skip to content

Commit 68dbaa6

Browse files
committed
Added typing, bumped version to v2, supports CLI v2
1 parent 7f00f40 commit 68dbaa6

File tree

23 files changed

+1316
-815
lines changed

23 files changed

+1316
-815
lines changed

.python-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.12.7

Pipfile

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

Pipfile.lock

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

pyproject.toml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
[build-system]
2-
requires = ["setuptools >= 61.0"]
2+
requires = [
3+
"setuptools >= 61.0",
4+
"requests"
5+
]
36
build-backend = "setuptools.build_meta"
47

58
[project]
69
name = "socket-sdk-python"
710
dynamic = ["version"]
811
requires-python = ">= 3.9"
912
dependencies = [
10-
'requests'
13+
'requests',
14+
'typing-extensions>=4.12.2'
1115
]
1216
readme = "README.rst"
1317
license = {file = "LICENSE"}
@@ -34,6 +38,9 @@ classifiers = [
3438
[project.optional-dependencies]
3539
dev = [
3640
"ruff>=0.3.0",
41+
"twine",
42+
"wheel",
43+
"build",
3744
]
3845

3946
[project.urls]
@@ -57,6 +64,7 @@ include = [
5764
"socketdev.sbom",
5865
"socketdev.settings",
5966
"socketdev.tools",
67+
"socketdev.utils",
6068
]
6169

6270
[tool.setuptools.dynamic]

requirements-dev.lock

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# generated by rye
2+
# use `rye lock` or `rye sync` to update this lockfile
3+
#
4+
# last locked with the following flags:
5+
# pre: false
6+
# features: []
7+
# all-features: true
8+
# with-sources: false
9+
# generate-hashes: false
10+
# universal: false
11+
12+
-e file:.
13+
build==1.2.2.post1
14+
# via socket-sdk-python
15+
certifi==2024.12.14
16+
# via requests
17+
charset-normalizer==3.4.1
18+
# via requests
19+
docutils==0.21.2
20+
# via readme-renderer
21+
idna==3.10
22+
# via requests
23+
jaraco-classes==3.4.0
24+
# via keyring
25+
jaraco-context==6.0.1
26+
# via keyring
27+
jaraco-functools==4.1.0
28+
# via keyring
29+
keyring==25.6.0
30+
# via twine
31+
markdown-it-py==3.0.0
32+
# via rich
33+
mdurl==0.1.2
34+
# via markdown-it-py
35+
more-itertools==10.6.0
36+
# via jaraco-classes
37+
# via jaraco-functools
38+
nh3==0.2.20
39+
# via readme-renderer
40+
packaging==24.2
41+
# via build
42+
# via twine
43+
pkginfo==1.12.0
44+
# via twine
45+
pygments==2.19.1
46+
# via readme-renderer
47+
# via rich
48+
pyproject-hooks==1.2.0
49+
# via build
50+
readme-renderer==44.0
51+
# via twine
52+
requests==2.32.3
53+
# via requests-toolbelt
54+
# via socket-sdk-python
55+
# via twine
56+
requests-toolbelt==1.0.0
57+
# via twine
58+
rfc3986==2.0.0
59+
# via twine
60+
rich==13.9.4
61+
# via twine
62+
ruff==0.9.1
63+
# via socket-sdk-python
64+
twine==6.0.1
65+
# via socket-sdk-python
66+
typing-extensions==4.12.2
67+
# via socket-sdk-python
68+
urllib3==2.3.0
69+
# via requests
70+
# via twine
71+
wheel==0.45.1
72+
# via socket-sdk-python

requirements.lock

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# generated by rye
2+
# use `rye lock` or `rye sync` to update this lockfile
3+
#
4+
# last locked with the following flags:
5+
# pre: false
6+
# features: []
7+
# all-features: true
8+
# with-sources: false
9+
# generate-hashes: false
10+
# universal: false
11+
12+
-e file:.
13+
build==1.2.2.post1
14+
# via socket-sdk-python
15+
certifi==2024.12.14
16+
# via requests
17+
charset-normalizer==3.4.1
18+
# via requests
19+
docutils==0.21.2
20+
# via readme-renderer
21+
idna==3.10
22+
# via requests
23+
jaraco-classes==3.4.0
24+
# via keyring
25+
jaraco-context==6.0.1
26+
# via keyring
27+
jaraco-functools==4.1.0
28+
# via keyring
29+
keyring==25.6.0
30+
# via twine
31+
markdown-it-py==3.0.0
32+
# via rich
33+
mdurl==0.1.2
34+
# via markdown-it-py
35+
more-itertools==10.6.0
36+
# via jaraco-classes
37+
# via jaraco-functools
38+
nh3==0.2.20
39+
# via readme-renderer
40+
packaging==24.2
41+
# via build
42+
# via twine
43+
pkginfo==1.12.0
44+
# via twine
45+
pygments==2.19.1
46+
# via readme-renderer
47+
# via rich
48+
pyproject-hooks==1.2.0
49+
# via build
50+
readme-renderer==44.0
51+
# via twine
52+
requests==2.32.3
53+
# via requests-toolbelt
54+
# via socket-sdk-python
55+
# via twine
56+
requests-toolbelt==1.0.0
57+
# via twine
58+
rfc3986==2.0.0
59+
# via twine
60+
rich==13.9.4
61+
# via twine
62+
ruff==0.9.1
63+
# via socket-sdk-python
64+
twine==6.0.1
65+
# via socket-sdk-python
66+
typing-extensions==4.12.2
67+
# via socket-sdk-python
68+
urllib3==2.3.0
69+
# via requests
70+
# via twine
71+
wheel==0.45.1
72+
# via socket-sdk-python

scripts/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/sh
22

3-
VERSION=$(grep -o "__version__.*" socketdev/__init__.py | awk '{print $3}' | sed 's/"//g' | sed "s/'//g" | tr -d '\r')
3+
VERSION=$(grep -o "__version__.*" socketdev/version.py | awk '{print $3}' | sed 's/"//g' | sed "s/'//g" | tr -d '\r')
44
ENABLE_PYPI_BUILD=$1
55

66
if [ -z $ENABLE_PYPI_BUILD ]; then

socketdev/__init__.py

Lines changed: 25 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import logging
2-
import requests
3-
import base64
42

5-
from socketdev.core.classes import Response
3+
from socketdev.core.api import API
64
from socketdev.dependencies import Dependencies
7-
from socketdev.exceptions import APIKeyMissing, APIFailure, APIAccessDenied, APIInsufficientQuota, APIResourceNotFound
85
from socketdev.export import Export
96
from socketdev.fullscans import FullScans
107
from socketdev.npm import NPM
@@ -17,11 +14,13 @@
1714
from socketdev.repositories import Repositories
1815
from socketdev.sbom import Sbom
1916
from socketdev.settings import Settings
17+
from socketdev.utils import Utils, IntegrationType, INTEGRATION_TYPES
2018

2119

2220
__author__ = "socket.dev"
23-
__version__ = "1.0.15"
24-
__all__ = ["socketdev"]
21+
__version__ = "2.0.0"
22+
__all__ = ["socketdev", "Utils", "IntegrationType", "INTEGRATION_TYPES"]
23+
2524

2625

2726
global encoded_key
@@ -33,90 +32,29 @@
3332
log.addHandler(logging.NullHandler())
3433

3534

36-
def encode_key(token: str):
37-
global encoded_key
38-
encoded_key = base64.b64encode(token.encode()).decode("ascii")
39-
40-
41-
def do_request(
42-
path: str, headers: dict = None, payload: [dict, str] = None, files: list = None, method: str = "GET"
43-
) -> Response:
44-
"""
45-
Shared function for performing the requests against the API.
46-
:param path: String path of the URL
47-
:param headers: Optional dictionary of the headers to include in the request. Defaults to None
48-
:param payload: Optional dictionary or string of the payload to POST. Defaults to None
49-
:param files: Optional list of files to send. Defaults to None
50-
:param method: Optional string of the method for the Request. Defaults to GET
51-
"""
52-
53-
if encoded_key is None or encoded_key == "":
54-
raise APIKeyMissing
55-
56-
if headers is None:
57-
headers = {
58-
"Authorization": f"Basic {encoded_key}",
59-
"User-Agent": f"SocketPythonScript/{__version__}",
60-
"accept": "application/json",
61-
}
62-
url = f"{api_url}/{path}"
63-
try:
64-
response = requests.request(
65-
method.upper(), url, headers=headers, data=payload, files=files, timeout=request_timeout
66-
)
67-
if response.status_code >= 400:
68-
raise APIFailure("Bad Request")
69-
elif response.status_code == 401:
70-
raise APIAccessDenied("Unauthorized")
71-
elif response.status_code == 403:
72-
raise APIInsufficientQuota("Insufficient max_quota for API method")
73-
elif response.status_code == 404:
74-
raise APIResourceNotFound(f"Path not found {path}")
75-
elif response.status_code == 429:
76-
raise APIInsufficientQuota("Insufficient quota for API route")
77-
except Exception as error:
78-
response = Response(text=f"{error}", error=True, status_code=500)
79-
raise APIFailure(response)
80-
return response
81-
82-
8335
class socketdev:
84-
token: str
85-
timeout: int
86-
dependencies: Dependencies
87-
npm: NPM
88-
openapi: OpenAPI
89-
org: Orgs
90-
quota: Quota
91-
report: Report
92-
sbom: Sbom
93-
purl: Purl
94-
fullscans: FullScans
95-
export: Export
96-
repositories: Repositories
97-
settings: Settings
98-
repos: Repos
99-
10036
def __init__(self, token: str, timeout: int = 30):
37+
self.api = API()
10138
self.token = token + ":"
102-
encode_key(self.token)
103-
self.timeout = timeout
104-
socketdev.set_timeout(self.timeout)
105-
self.dependencies = Dependencies()
106-
self.npm = NPM()
107-
self.openapi = OpenAPI()
108-
self.org = Orgs()
109-
self.quota = Quota()
110-
self.report = Report()
111-
self.sbom = Sbom()
112-
self.purl = Purl()
113-
self.fullscans = FullScans()
114-
self.export = Export()
115-
self.repositories = Repositories()
116-
self.repos = Repos()
117-
self.settings = Settings()
39+
self.api.encode_key(self.token)
40+
self.api.set_timeout(timeout)
41+
42+
self.dependencies = Dependencies(self.api)
43+
self.npm = NPM(self.api)
44+
self.openapi = OpenAPI(self.api)
45+
self.org = Orgs(self.api)
46+
self.quota = Quota(self.api)
47+
self.report = Report(self.api)
48+
self.sbom = Sbom(self.api)
49+
self.purl = Purl(self.api)
50+
self.fullscans = FullScans(self.api)
51+
self.export = Export(self.api)
52+
self.repositories = Repositories(self.api)
53+
self.repos = Repos(self.api)
54+
self.settings = Settings(self.api)
55+
self.utils = Utils()
11856

11957
@staticmethod
12058
def set_timeout(timeout: int):
121-
global request_timeout
122-
request_timeout = timeout
59+
# Kept for backwards compatibility
60+
pass

0 commit comments

Comments
 (0)