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,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ pinarkive_client