Skip to content

Commit e2c9cfc

Browse files
committed
feat(log): add optional error code and improve message format
1 parent 88f7ef3 commit e2c9cfc

21 files changed

Lines changed: 254 additions & 212 deletions

Chrome.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ def CreateBrowser(Private: bool = True, Options: dict = None) -> dict:
3737
ChromeOptions.add_experimental_option('useAutomationExtension', False)
3838
ChromeOptions.add_argument("--disable-blink-features=AutomationControlled")
3939
except Exception as Error:
40-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
40+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
4141

4242
try:
4343
Response['Result'] = selenium.webdriver.Chrome(
4444
service = selenium.webdriver.chrome.service.Service(executable_path = Options.DriverPath),
4545
options = ChromeOptions
4646
)
4747
except Exception as Error:
48-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
48+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
4949

5050
return Response
5151

@@ -65,7 +65,7 @@ def CloseBrowser(Driver: object) -> dict:
6565
try:
6666
Driver.quit()
6767
except Exception as Error:
68-
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error); return Response
68+
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
6969

7070
return Response
7171

@@ -94,7 +94,7 @@ def OpenUrl(Driver: object, Url: str, Options: dict = None) -> dict:
9494
try:
9595
Driver.get(Url)
9696
except Exception as Error:
97-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
97+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
9898

9999
try:
100100
if Options.ExpectedCondition:
@@ -105,13 +105,13 @@ def OpenUrl(Driver: object, Url: str, Options: dict = None) -> dict:
105105
import time
106106
time.sleep(Options.Timeout)
107107
except Exception as Error:
108-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
108+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
109109

110110
try:
111111
Response['Source'] = Driver.page_source
112112
Response['Cookie'] = Driver.get_cookies()
113113
except Exception as Error:
114-
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error); return Response
114+
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
115115

116116
return Response
117117

Cos.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,10 @@ def PutObject(Key: str = None, Url: str = None, Path: str = None, Data: str = No
110110

111111
try:
112112
if Key is None and Url is None:
113-
raise Exception('Either Key or Url Must be Given')
113+
raise Exception('Missing Required Parameter: Key or Url')
114114

115115
if Path is None and Data is None:
116-
raise Exception('Either Path or Data Must be Given')
116+
raise Exception('Missing Required Parameter: Path or Data')
117117

118118
Options = _ValidateAndInitEndPoint(
119119
Options,
@@ -125,7 +125,7 @@ def PutObject(Key: str = None, Url: str = None, Path: str = None, Data: str = No
125125

126126
Header = requests.structures.CaseInsensitiveDict(Header or {})
127127
except Exception as Error:
128-
Response['Ec'] = 40000; Response['Em'] = MakeErrorMessage(Error); return Response
128+
Response['Ec'] = 40000; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
129129

130130
class _Reader(object):
131131
def __init__(self, File, Total):
@@ -214,7 +214,7 @@ def _WrapPayload(Payload: object) -> object:
214214

215215
Response['Result'] = _ExtractResponse(Result['Result']).headers
216216
except Exception as Error:
217-
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error); return Response
217+
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
218218

219219
return Response
220220

@@ -277,7 +277,7 @@ def MultiPartPutObject(Key: str, Path: str, Header: dict = None, ProgressCallbac
277277

278278
Header = requests.structures.CaseInsensitiveDict(Header or {})
279279
except Exception as Error:
280-
Response['Ec'] = 40000; Response['Em'] = MakeErrorMessage(Error); return Response
280+
Response['Ec'] = 40000; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
281281

282282
try:
283283
Bucket = __Bucket(
@@ -307,7 +307,7 @@ def MultiPartPutObject(Key: str, Path: str, Header: dict = None, ProgressCallbac
307307
progress_callback = ProgressCallback
308308
))
309309
except Exception as Error:
310-
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error); return Response
310+
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
311311

312312
return Response
313313

Download.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def HeadUrl(Url: str, Options: dict = None) -> dict:
4040
if Options.Params else ''
4141
)
4242
except Exception as Error:
43-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
43+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
4444

4545
Rsp = None
4646
try:
@@ -62,7 +62,7 @@ def HeadUrl(Url: str, Options: dict = None) -> dict:
6262
stream = True,
6363
allow_redirects = Options.AllowRedirects)
6464
except Exception as Error:
65-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
65+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
6666
finally:
6767
try: Rsp.close()
6868
except: pass
@@ -74,7 +74,7 @@ def HeadUrl(Url: str, Options: dict = None) -> dict:
7474
Response['Content-Length'] = int(Rsp.headers.get('Content-Length', -1))
7575
Response['Last-Modified-At'] = int(time.mktime(time.strptime(Rsp.headers.get('Last-Modified', ''), '%a, %d %b %Y %H:%M:%S %Z'))) if 'Last-Modified' in Rsp.headers else -1
7676
except Exception as Error:
77-
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error); return Response
77+
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
7878
finally:
7979
try: Rsp.close()
8080
except: pass
@@ -127,23 +127,23 @@ def DownloadUrl(Url: str, Path: str, Options: dict = None) -> dict:
127127
Head = HeadUrl(Url, Options); Response.update({Key: Value for Key, Value in Head.items() if Key not in ['Ec', 'Em', 'Size']})
128128

129129
if Head['Ec'] != 0: raise Exception(Head['Em'])
130-
if Head['Code'] // 100 != 2: raise Exception(f'HTTP Code is {Head["Code"]}')
130+
if Head['Code'] // 100 != 2: raise Exception(f'<Response [%s]> None' % (Head['Code']))
131131

132132
Tool = 'Requests' if (Head['Content-Length'] != -1 and Head['Content-Length'] <= Options['DownloadKit.Block']) else 'DownloadKit'
133133
except Exception as Error:
134-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
134+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
135135

136136
try:
137137
if not os.path.isabs(Path):
138138
Path = os.path.abspath(Path)
139139
except Exception as Error:
140-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
140+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
141141

142142
try:
143143
if os.path.dirname(Path):
144144
os.makedirs(os.path.dirname(Path), exist_ok = True)
145145
except Exception as Error:
146-
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error); return Response
146+
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
147147

148148
try:
149149
if Tool == 'Requests':
@@ -152,13 +152,13 @@ def DownloadUrl(Url: str, Path: str, Options: dict = None) -> dict:
152152
Download = __GetFileViaDownloadKit(Response['Location'], Path, Options)
153153

154154
if Download['Ec'] != 0 : raise Exception(Download['Em'])
155-
if Head['Content-Length'] != -1 and Download['Size'] != Head['Content-Length']: raise Exception(f'File Size is {Download["Size"]}, Content-Length is {Head["Content-Length"]}')
155+
if Head['Content-Length'] != -1 and Download['Size'] != Head['Content-Length']: raise Exception(f'Size Not Match, Content-Length = {Head["Content-Length"]} and Downloaded Size = {Download["Size"]}')
156156

157157
Response['Size'] = Download['Size']
158158
except Exception as Error:
159159
try: os.remove(Path)
160160
except: pass
161-
Response['Ec'] = 50004; Response['Em'] = MakeErrorMessage(Error); return Response
161+
Response['Ec'] = 50004; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
162162

163163
try:
164164
if Options.Time:
@@ -168,7 +168,7 @@ def DownloadUrl(Url: str, Path: str, Options: dict = None) -> dict:
168168
except Exception as Error:
169169
try: os.remove(Path)
170170
except: pass
171-
Response['Ec'] = 50005; Response['Em'] = MakeErrorMessage(Error); return Response
171+
Response['Ec'] = 50005; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
172172

173173
return Response
174174

@@ -212,7 +212,7 @@ def __GetFileViaRequests(Url: str, Path: str, Options: dict = None) -> dict:
212212
stream = True,
213213
allow_redirects = Options.AllowRedirects)
214214
except Exception as Error:
215-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
215+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
216216

217217
try:
218218
if 200 <= Rsp.status_code < 300:
@@ -222,13 +222,13 @@ def __GetFileViaRequests(Url: str, Path: str, Options: dict = None) -> dict:
222222
File.write(Chunk)
223223
Response['Size'] = os.path.getsize(Path)
224224
else:
225-
raise Exception(f'HTTP Code is {Rsp.status_code}')
225+
raise requests.exceptions.HTTPError('<Response [%s]> %s' % (Rsp.status_code, Rsp.text or None))
226226
except Exception as Error:
227-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
227+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
228228
finally:
229229
try: Rsp.close()
230230
except: pass
231-
231+
232232
return Response
233233

234234

@@ -280,7 +280,7 @@ def __GetFileViaDownloadKit(Url: str, Path: str, Options: dict = None) -> dict:
280280
verify = Options.Verify,
281281
allow_redirects = Options.AllowRedirects)
282282
except Exception as Error:
283-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
283+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
284284

285285
try:
286286
Timer = 0
@@ -327,16 +327,16 @@ def __GetFileViaDownloadKit(Url: str, Path: str, Options: dict = None) -> dict:
327327
Response['Size'] = os.path.getsize(Path)
328328
else:
329329
Kit = None
330-
raise Exception('Download Failed, Result is %s' % Tsk.info)
330+
raise Exception('Download Failed with Result: %s' % Tsk.info)
331331

332332
print(f'\r{" " * (os.get_terminal_size().columns - 1)}\r', end = '') if Options['DownloadKit.CleanDownloading'] else print()
333333
except Exception as Error:
334334
print(f'\r{" " * (os.get_terminal_size().columns - 1)}\r', end = '') if Options['DownloadKit.CleanDownloading'] else print()
335-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
335+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
336336

337337
try:
338338
Response['Size'] = os.path.getsize(Path)
339339
except Exception as Error:
340-
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error); return Response
340+
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
341341

342342
return Response

Edge.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ def CreateBrowser(Private: bool = True, Options: dict = None) -> dict:
3737
EdgeOptions.add_experimental_option('useAutomationExtension', False)
3838
EdgeOptions.add_argument("--disable-blink-features=AutomationControlled")
3939
except Exception as Error:
40-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
40+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
4141

4242
try:
4343
Response['Result'] = selenium.webdriver.Edge(
4444
service = selenium.webdriver.edge.service.Service(executable_path = Options.DriverPath),
4545
options = EdgeOptions
4646
)
4747
except Exception as Error:
48-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
48+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
4949

5050
return Response
5151

@@ -65,7 +65,7 @@ def CloseBrowser(Driver: object) -> dict:
6565
try:
6666
Driver.quit()
6767
except Exception as Error:
68-
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error); return Response
68+
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
6969

7070
return Response
7171

@@ -94,7 +94,7 @@ def OpenUrl(Driver: object, Url: str, Options: dict = None) -> dict:
9494
try:
9595
Driver.get(Url)
9696
except Exception as Error:
97-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
97+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
9898

9999
try:
100100
if Options.ExpectedCondition:
@@ -105,13 +105,13 @@ def OpenUrl(Driver: object, Url: str, Options: dict = None) -> dict:
105105
import time
106106
time.sleep(Options.Timeout)
107107
except Exception as Error:
108-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
108+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
109109

110110
try:
111111
Response['Source'] = Driver.page_source
112112
Response['Cookie'] = Driver.get_cookies()
113113
except Exception as Error:
114-
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error); return Response
114+
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
115115

116116
return Response
117117

Format.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ function SafePath(string $Path, ?array $Options = null): array {
116116
$Path = function_exists("mb_substr") ? mb_substr($Path, 0, $Options["MaxLength"], "UTF-8") : substr($Path, 0, $Options["MaxLength"]);
117117
$Response["Path"] = rtrim($Path);
118118
} catch (Throwable $Error) {
119-
$Response["Ec"] = 50000; $Response["Em"] = MakeErrorMessage($Error); return $Response;
119+
$Response["Ec"] = 50000; $Response["Em"] = MakeErrorMessage($Error, $Response["Ec"]); return $Response;
120120
}
121121

122122
return $Response;
@@ -153,7 +153,7 @@ function ConvertSize(int | float $Size, string $Unit = "B", ?array $Options = nu
153153
throw new ValueError("Unit Must be in B, KB, MB, GB, TB or PB");
154154
}
155155
} catch (Throwable $Error) {
156-
$Response["Ec"] = 50001; $Response["Em"] = MakeErrorMessage($Error); return $Response;
156+
$Response["Ec"] = 50001; $Response["Em"] = MakeErrorMessage($Error, $Response["Ec"]); return $Response;
157157
}
158158

159159
try {
@@ -172,7 +172,7 @@ function ConvertSize(int | float $Size, string $Unit = "B", ?array $Options = nu
172172
}
173173
}
174174
} catch (Throwable $Error) {
175-
$Response["Ec"] = 50002; $Response["Em"] = MakeErrorMessage($Error); return $Response;
175+
$Response["Ec"] = 50002; $Response["Em"] = MakeErrorMessage($Error, $Response["Ec"]); return $Response;
176176
}
177177

178178
try {
@@ -186,7 +186,7 @@ function ConvertSize(int | float $Size, string $Unit = "B", ?array $Options = nu
186186

187187
$Response["Result"] = $Result;
188188
} catch (Throwable $Error) {
189-
$Response["Ec"] = 50003; $Response["Em"] = MakeErrorMessage($Error); return $Response;
189+
$Response["Ec"] = 50003; $Response["Em"] = MakeErrorMessage($Error, $Response["Ec"]); return $Response;
190190
}
191191

192192
return $Response;

Format.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def _IsUnsafeUnicodeChar(Char: str) -> bool:
9999

100100
Response['Result'] = re.sub(r'\s+', ' ', re.sub(r'[\\/:*?"<>|\r\n\t]', ' ', Path)).lstrip()[:Options.MaxLength].rstrip()
101101
except Exception as Error:
102-
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error); return Response
102+
Response['Ec'] = 50000; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
103103

104104
return Response
105105

@@ -136,7 +136,7 @@ def ConvertSize(Size: int, Unit: str = 'B', Options: dict = None) -> dict:
136136
if Size < 0 : raise ValueError('Size Must be Positive')
137137
if not Unit in Units : raise ValueError('Unit Must in B, KB, MB, GB, TB or PB')
138138
except Exception as Error:
139-
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error); return Response
139+
Response['Ec'] = 50001; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
140140

141141
try:
142142
SizeInBytes = Size * (1024 ** Weights[Unit])
@@ -147,7 +147,7 @@ def ConvertSize(Size: int, Unit: str = 'B', Options: dict = None) -> dict:
147147
AutoUnit = [_Unit for _Unit in Units[1:] if Sizes[_Unit] >= 1]
148148
AutoUnit = AutoUnit[-1] if AutoUnit else 'B'
149149
except Exception as Error:
150-
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error); return Response
150+
Response['Ec'] = 50002; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
151151

152152
try:
153153
Result = Options.Format.replace('{{Size}}', f'{Sizes[AutoUnit]:.{Options.Place_After_Decimal_Point}f}').replace('{{Unit}}', AutoUnit)
@@ -159,6 +159,6 @@ def ConvertSize(Size: int, Unit: str = 'B', Options: dict = None) -> dict:
159159

160160
Response['Result'] = Result
161161
except Exception as Error:
162-
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error); return Response
162+
Response['Ec'] = 50003; Response['Em'] = MakeErrorMessage(Error, Code = Response['Ec']); return Response
163163

164164
return Response

Init.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
def __getattr__(Name: str):
55
if Name not in ('ExeConfig', 'EnvironVar'):
6-
raise AttributeError(f'Can\'t Get Attribute of \'{Name}\'')
6+
raise AttributeError(f'Can Not Get Attribute of `{Name}`')
77

88
if Name == 'ExeConfig':
99
if 'ExeConfig' not in _ConfigCache: _ConfigCache['ExeConfig'] = ReadConfig()
@@ -18,15 +18,15 @@ def __setattr__(Name: str, Value):
1818
if Name in ('ExeConfig', 'EnvironVar'):
1919
_ConfigCache[Name] = Value
2020
else:
21-
raise AttributeError(f'Can\'t Set Attribute of \'{Name}\'')
21+
raise AttributeError(f'Can Not Set Attribute of `{Name}`')
2222

2323

2424
def __delattr__(Name: str):
2525
if Name in ('ExeConfig', 'EnvironVar'):
2626
if Name in _ConfigCache:
2727
del _ConfigCache[Name]
2828
else:
29-
raise AttributeError(f'Can\'t Delete Attribute of \'{Name}\'')
29+
raise AttributeError(f'Can Not Delete Attribute of `{Name}`')
3030

3131

3232
class DotAccessDict(dict):
@@ -58,7 +58,7 @@ def __delattr__(self, Name):
5858
try:
5959
del self[Name]
6060
except KeyError:
61-
raise AttributeError(f'\'DotAccessDict\' Object Has No Attribute \'{Name}\'')
61+
raise AttributeError(f'DotAccessDict Object Does Not Have Attribute of `{Name}`')
6262

6363

6464
def AsyncCall(Function: callable, *Args, **Kwargs) -> object:

0 commit comments

Comments
 (0)