pinarkive-sdk 2.0.0__py3-none-any.whl
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.
pinarkive_client.py
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
import requests
|
2
|
+
from typing import Optional, Dict, Any, List
|
3
|
+
|
4
|
+
class PinarkiveClient:
|
5
|
+
def __init__(self, token: Optional[str] = None, api_key: Optional[str] = None, base_url: str = 'https://api.pinarkive.com/api/v2'):
|
6
|
+
self.base_url = base_url
|
7
|
+
self.token = token
|
8
|
+
self.api_key = api_key
|
9
|
+
self.session = requests.Session()
|
10
|
+
|
11
|
+
def _headers(self) -> Dict[str, str]:
|
12
|
+
headers = {}
|
13
|
+
if self.token:
|
14
|
+
headers['Authorization'] = f'Bearer {self.token}'
|
15
|
+
elif self.api_key:
|
16
|
+
headers['X-API-Key'] = self.api_key
|
17
|
+
return headers
|
18
|
+
|
19
|
+
# --- Authentication ---
|
20
|
+
def login(self, email: str, password: str) -> Any:
|
21
|
+
return self.session.post(
|
22
|
+
f'{self.base_url}/auth/login',
|
23
|
+
json={'email': email, 'password': password}
|
24
|
+
)
|
25
|
+
|
26
|
+
def signup(self, data: Dict[str, Any], locale: Optional[str] = None, refCode: Optional[str] = None) -> Any:
|
27
|
+
params: Dict[str, str] = {}
|
28
|
+
if locale:
|
29
|
+
params['locale'] = locale
|
30
|
+
if refCode:
|
31
|
+
params['refCode'] = refCode
|
32
|
+
return self.session.post(
|
33
|
+
f'{self.base_url}/auth/signup',
|
34
|
+
json=data,
|
35
|
+
params=params
|
36
|
+
)
|
37
|
+
|
38
|
+
def logout(self) -> Any:
|
39
|
+
return self.session.post(
|
40
|
+
f'{self.base_url}/auth/logout',
|
41
|
+
headers=self._headers()
|
42
|
+
)
|
43
|
+
|
44
|
+
# --- File Management ---
|
45
|
+
def upload_file(self, file_path: str) -> Any:
|
46
|
+
with open(file_path, 'rb') as f:
|
47
|
+
files = {'file': f}
|
48
|
+
return self.session.post(
|
49
|
+
f'{self.base_url}/files',
|
50
|
+
files=files,
|
51
|
+
headers=self._headers()
|
52
|
+
)
|
53
|
+
|
54
|
+
def upload_directory(self, dir_path: str) -> Any:
|
55
|
+
return self.session.post(
|
56
|
+
f'{self.base_url}/files/directory',
|
57
|
+
json={'dirPath': dir_path},
|
58
|
+
headers=self._headers()
|
59
|
+
)
|
60
|
+
|
61
|
+
def pin_cid(self, cid: str) -> Any:
|
62
|
+
return self.session.post(
|
63
|
+
f'{self.base_url}/files/pin/{cid}',
|
64
|
+
headers=self._headers()
|
65
|
+
)
|
66
|
+
|
67
|
+
def remove_file(self, cid: str) -> Any:
|
68
|
+
return self.session.delete(
|
69
|
+
f'{self.base_url}/files/remove/{cid}',
|
70
|
+
headers=self._headers()
|
71
|
+
)
|
72
|
+
|
73
|
+
# --- User Profile ---
|
74
|
+
def get_profile(self) -> Any:
|
75
|
+
return self.session.get(
|
76
|
+
f'{self.base_url}/users/me',
|
77
|
+
headers=self._headers()
|
78
|
+
)
|
79
|
+
|
80
|
+
def update_profile(self, data: Dict[str, Any]) -> Any:
|
81
|
+
return self.session.put(
|
82
|
+
f'{self.base_url}/users/me',
|
83
|
+
json=data,
|
84
|
+
headers=self._headers()
|
85
|
+
)
|
86
|
+
|
87
|
+
def list_uploads(self, page: int = 1, limit: int = 10) -> Any:
|
88
|
+
return self.session.get(
|
89
|
+
f'{self.base_url}/users/me/uploads',
|
90
|
+
params={'page': page, 'limit': limit},
|
91
|
+
headers=self._headers()
|
92
|
+
)
|
93
|
+
|
94
|
+
def delete_upload(self, cid: str) -> Any:
|
95
|
+
return self.session.delete(
|
96
|
+
f'{self.base_url}/users/me/uploads/{cid}',
|
97
|
+
headers=self._headers()
|
98
|
+
)
|
99
|
+
|
100
|
+
def get_referrals(self) -> Any:
|
101
|
+
return self.session.get(
|
102
|
+
f'{self.base_url}/users/me/referrals',
|
103
|
+
headers=self._headers()
|
104
|
+
)
|
105
|
+
|
106
|
+
# --- Token Management ---
|
107
|
+
def generate_token(self, name: str, permissions: Optional[List[str]] = None) -> Any:
|
108
|
+
data: Dict[str, Any] = {'name': name}
|
109
|
+
if permissions:
|
110
|
+
data['permissions'] = permissions
|
111
|
+
return self.session.post(
|
112
|
+
f'{self.base_url}/tokens/generate',
|
113
|
+
json=data,
|
114
|
+
headers=self._headers()
|
115
|
+
)
|
116
|
+
|
117
|
+
def list_tokens(self) -> Any:
|
118
|
+
return self.session.get(
|
119
|
+
f'{self.base_url}/tokens/list',
|
120
|
+
headers=self._headers()
|
121
|
+
)
|
122
|
+
|
123
|
+
def revoke_token(self, name: str) -> Any:
|
124
|
+
return self.session.delete(
|
125
|
+
f'{self.base_url}/tokens/revoke/{name}',
|
126
|
+
headers=self._headers()
|
127
|
+
)
|
128
|
+
|
129
|
+
# --- Status and Monitoring ---
|
130
|
+
def get_status(self, cid: str) -> Any:
|
131
|
+
return self.session.get(
|
132
|
+
f'{self.base_url}/status/{cid}',
|
133
|
+
headers=self._headers()
|
134
|
+
)
|
135
|
+
|
136
|
+
def get_allocations(self, cid: str) -> Any:
|
137
|
+
return self.session.get(
|
138
|
+
f'{self.base_url}/status/allocations/{cid}',
|
139
|
+
headers=self._headers()
|
140
|
+
)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: pinarkive-sdk
|
3
|
+
Version: 2.0.0
|
4
|
+
Summary: Python SDK for the Pinarkive API (v2.0)
|
5
|
+
Author: ITCS VIP, Joel_da
|
6
|
+
License: MIT
|
7
|
+
Project-URL: Homepage, https://github.com/pinarkive/pinarkive-sdk
|
8
|
+
Project-URL: Repository, https://github.com/pinarkive/pinarkive-sdk.git
|
9
|
+
Requires-Python: >=3.7
|
10
|
+
Description-Content-Type: text/markdown
|
11
|
+
Requires-Dist: requests>=2.31.0
|
12
|
+
|
13
|
+
# Pinarkive Python SDK
|
14
|
+
|
15
|
+
Python client for the Pinarkive API.
|
16
|
+
|
17
|
+
## Installation
|
18
|
+
|
19
|
+
```
|
20
|
+
pip install requests
|
21
|
+
```
|
22
|
+
|
23
|
+
Copy `pinarkive_client.py` to your project or install from your repository if you publish it.
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
```python
|
28
|
+
from pinarkive_client import PinarkiveClient
|
29
|
+
|
30
|
+
client = PinarkiveClient(api_key='YOUR_API_KEY')
|
31
|
+
|
32
|
+
# Upload a file
|
33
|
+
client.upload_file('document.pdf')
|
34
|
+
|
35
|
+
# List files
|
36
|
+
client.list_uploads()
|
37
|
+
```
|
38
|
+
|
39
|
+
## Authentication
|
40
|
+
- JWT: `token='...'`
|
41
|
+
- API Key: `api_key='...'`
|
42
|
+
|
43
|
+
## Documentation
|
44
|
+
See [https://api.pinarkive.com/docs](https://api.pinarkive.com/docs)
|
@@ -0,0 +1,5 @@
|
|
1
|
+
pinarkive_client.py,sha256=dhIoH6PnMprjTDfihe7SA40RKyX5-S-sXX2wETwDArg,4511
|
2
|
+
pinarkive_sdk-2.0.0.dist-info/METADATA,sha256=gyp_bpQheyX59nj4pTuFutstGT5yeGsHwdSxd4rvlsY,989
|
3
|
+
pinarkive_sdk-2.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
4
|
+
pinarkive_sdk-2.0.0.dist-info/top_level.txt,sha256=kTyDY8vHnwgnB2cDHiBBLTnXN0-u2nD71SsSdVIC8bI,17
|
5
|
+
pinarkive_sdk-2.0.0.dist-info/RECORD,,
|
@@ -0,0 +1 @@
|
|
1
|
+
pinarkive_client
|