openrelik-api-client 0.2.2__tar.gz → 0.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openrelik-api-client
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: API client that automatically handles token refresh
5
5
  Author: Johan Berggren
6
6
  Author-email: jberggren@gmail.com
@@ -43,38 +43,34 @@ class APIClient:
43
43
  api_server_url,
44
44
  api_key=None,
45
45
  api_version="v1",
46
- session=None
47
46
  ):
48
47
  self.base_url = f"{api_server_url}/api/{api_version}"
49
- if session:
50
- self.session = session
51
- else:
52
- self.session = TokenRefreshSession(api_server_url, api_key)
48
+ self.session = TokenRefreshSession(api_server_url, api_key)
53
49
 
54
50
  def get(self, endpoint, **kwargs):
55
51
  """Sends a GET request to the specified API endpoint."""
56
52
  url = f"{self.base_url}{endpoint}"
57
- return self.session.request("GET", url, **kwargs)
53
+ return self.session.get(url, **kwargs)
58
54
 
59
55
  def post(self, endpoint, data=None, json=None, **kwargs):
60
56
  """Sends a POST request to the specified API endpoint."""
61
57
  url = f"{self.base_url}{endpoint}"
62
- return self.session.request("POST", url, data=data, json=json, **kwargs)
58
+ return self.session.post(url, data=data, json=json, **kwargs)
63
59
 
64
60
  def put(self, endpoint, data=None, **kwargs):
65
61
  """Sends a PUT request to the specified API endpoint."""
66
62
  url = f"{self.base_url}{endpoint}"
67
- return self.session.request("PUT", url, data=data, **kwargs)
63
+ return self.session.put(url, data=data, **kwargs)
68
64
 
69
65
  def patch(self, endpoint, data=None, json=None, **kwargs):
70
66
  """Sends a PATCH request to the specified API endpoint."""
71
67
  url = f"{self.base_url}{endpoint}"
72
- return self.session.request("PATCH", url, data=data, json=json, **kwargs)
68
+ return self.session.patch(url, data=data, json=json, **kwargs)
73
69
 
74
70
  def delete(self, endpoint, **kwargs):
75
71
  """Sends a DELETE request to the specified API endpoint."""
76
72
  url = f"{self.base_url}{endpoint}"
77
- return self.session.request("DELETE", url, **kwargs)
73
+ return self.session.delete(url, **kwargs)
78
74
 
79
75
  def download_file(self, file_id: int, filename: str) -> str | None:
80
76
  """Downloads a file from OpenRelik.
@@ -87,7 +83,7 @@ class APIClient:
87
83
  str: The path to the downloaded file.
88
84
  """
89
85
  endpoint = f"{self.base_url}/files/{file_id}/download"
90
- response = self.get(endpoint)
86
+ response = self.session.get(endpoint)
91
87
  filename_prefix, extension = os.path.splitext(filename)
92
88
  file = tempfile.NamedTemporaryFile(
93
89
  mode="wb", prefix=f"{filename_prefix}", suffix=extension, delete=False
@@ -123,7 +119,7 @@ class APIClient:
123
119
  raise FileNotFoundError(f"File {file_path} not found.")
124
120
 
125
121
  if folder_id:
126
- response = self.get(f"{self.base_url}/folders/{folder_id}")
122
+ response = self.session.get(f"{self.base_url}/folders/{folder_id}")
127
123
  if response.status_code == 404:
128
124
  return file_id
129
125
 
@@ -133,18 +129,22 @@ class APIClient:
133
129
  while chunk := fh.read(chunk_size):
134
130
  resumableChunkNumber += 1
135
131
  params = {
136
- "resumableChunkNumber": str(resumableChunkNumber),
137
- "resumableTotalChunks": str(resumableTotalChunks),
132
+ "resumableRelativePath": resumableFilename,
133
+ "resumableTotalSize": total_size,
134
+ "resumableCurrentChunkSize": chunk_size,
135
+ "resumableChunkSize": chunk_size,
136
+ "resumableChunkNumber": resumableChunkNumber,
137
+ "resumableTotalChunks": resumableTotalChunks,
138
138
  "resumableIdentifier": resumableIdentifier,
139
139
  "resumableFilename": resumableFilename,
140
- "folder_id": str(folder_id),
140
+ "folder_id": folder_id
141
141
  }
142
142
  encoder = MultipartEncoder(
143
143
  {"file": (file_path.name, chunk,
144
144
  "application/octet-stream")}
145
145
  )
146
146
  headers = {"Content-Type": encoder.content_type}
147
- response = self.post(
147
+ response = self.session.post(
148
148
  f"{self.base_url}{endpoint}",
149
149
  headers=headers,
150
150
  data=encoder.to_string(),
@@ -38,7 +38,7 @@ class FoldersAPI:
38
38
  folder_id = None
39
39
  endpoint = f"{self.api_client.base_url}/folders/"
40
40
  params = {"display_name": display_name}
41
- response = self.api_client.post(endpoint, json=params)
41
+ response = self.api_client.session.post(endpoint, json=params)
42
42
  response.raise_for_status()
43
43
  if response.status_code == 201:
44
44
  folder_id = response.json().get('id')
@@ -61,7 +61,7 @@ class FoldersAPI:
61
61
  folder_id = None
62
62
  endpoint = f"{self.api_client.base_url}/folders/{folder_id}/folders"
63
63
  data = {"display_name": display_name}
64
- response = self.api_client.post(endpoint, json=data)
64
+ response = self.api_client.session.post(endpoint, json=data)
65
65
  response.raise_for_status()
66
66
  if response.status_code == 201:
67
67
  folder_id = response.json().get("id")
@@ -80,7 +80,7 @@ class FoldersAPI:
80
80
  HTTPError: If the API request failed.
81
81
  """
82
82
  endpoint = f"{self.api_client.base_url}/folders/{folder_id}"
83
- response = self.api_client.get(endpoint)
83
+ response = self.api_client.session.get(endpoint)
84
84
  response.raise_for_status()
85
85
  return response.status_code == 200
86
86
 
@@ -100,7 +100,7 @@ class FoldersAPI:
100
100
  HTTPError: If the API request failed.
101
101
  """
102
102
  endpoint = f"{self.api_client.base_url}/folders/{folder_id}"
103
- response = self.api_client.patch(
103
+ response = self.api_client.session.patch(
104
104
  endpoint,
105
105
  json=folder_data
106
106
  )
@@ -42,7 +42,7 @@ class WorkflowsAPI:
42
42
  endpoint = f"{self.folders_url}/{folder_id}/workflows/"
43
43
  data = {"folder_id": folder_id,
44
44
  "file_ids": file_ids, "template_id": template_id}
45
- response = self.api_client.post(endpoint, json=data)
45
+ response = self.api_client.session.post(endpoint, json=data)
46
46
  response.raise_for_status()
47
47
  if response.status_code == 200:
48
48
  workflow_id = response.json().get("id")
@@ -62,7 +62,7 @@ class WorkflowsAPI:
62
62
  HTTPError: If the API request failed.
63
63
  """
64
64
  endpoint = f"{self.folders_url}/{folder_id}/workflows/{workflow_id}"
65
- response = self.api_client.get(endpoint)
65
+ response = self.api_client.session.get(endpoint)
66
66
  response.raise_for_status()
67
67
  if response.status_code == 200:
68
68
  return response.json()
@@ -83,7 +83,7 @@ class WorkflowsAPI:
83
83
  """
84
84
  workflow = None
85
85
  endpoint = f"{self.folders_url}/{folder_id}/workflows/{workflow_id}"
86
- response = self.api_client.patch(endpoint, json=workflow_data)
86
+ response = self.api_client.session.patch(endpoint, json=workflow_data)
87
87
  response.raise_for_status()
88
88
  if response.status_code == 200:
89
89
  workflow = response.json()
@@ -103,7 +103,7 @@ class WorkflowsAPI:
103
103
  HTTPError: If the API request failed.
104
104
  """
105
105
  endpoint = f"{self.folders_url}/{folder_id}/workflows/{workflow_id}"
106
- response = self.api_client.delete(endpoint)
106
+ response = self.api_client.session.delete(endpoint)
107
107
  response.raise_for_status()
108
108
  return response.status_code == 204
109
109
 
@@ -127,7 +127,7 @@ class WorkflowsAPI:
127
127
  workflow = self.get_workflow(folder_id, workflow_id)
128
128
  spec = json.loads(workflow.get('spec_json'))
129
129
  data = {'workflow_spec': spec}
130
- response = self.api_client.post(endpoint, json=data)
130
+ response = self.api_client.session.post(endpoint, json=data)
131
131
  response.raise_for_status()
132
132
  if response.status_code == 200:
133
133
  workflow = response.json()
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "openrelik-api-client"
3
- version = "0.2.2"
3
+ version = "0.2.3"
4
4
  description = "API client that automatically handles token refresh"
5
5
  authors = ["Johan Berggren <jberggren@gmail.com>"]
6
6
  readme = "README.md"