11#!/usr/bin/env python3
22
33from io import BufferedReader
4- from typing import Dict , List
4+ from typing import Dict , List , Tuple
55import requests as req
6+ from . import types as t
67
78
89class Axios :
910 def __init__ (self , url : str ):
1011 self .url = url
1112
12- def parse_url_params (self , params : Dict [str , str ]):
13+ def parse_url_query (self , query : Dict [str , str ]):
1314 try :
14- if params is not None and isinstance (params , dict ):
15- for key , value in params .items ():
15+ if query is not None and isinstance (query , dict ):
16+ for key , value in query .items ():
1617 self .url += f"&{ key } ={ value } "
1718 except Exception as e :
1819 raise e
1920
2021 def get (self , headers : Dict [str , str ] = None , ** kwargs ) -> dict | Exception :
2122 try :
22- self .parse_url_params (kwargs .get ("params " , None ))
23+ self .parse_url_query (kwargs .get ("query " , None ))
2324 r = req .get (self .url , headers = headers )
2425 r .raise_for_status ()
2526 return r .json ()
@@ -30,27 +31,57 @@ def post(
3031 self , body = None , headers : Dict [str , str ] = None , ** kwargs
3132 ) -> dict | Exception :
3233 try :
33- self .parse_url_params (kwargs .get ("params " , None ))
34+ self .parse_url_query (kwargs .get ("query " , None ))
3435 r = req .post (self .url , data = body , headers = headers )
3536 r .raise_for_status ()
3637 return r .json ()
3738 except Exception as e :
3839 raise e
3940
40- def read_files (self , files : List [str ]) -> List [BufferedReader ]:
41+ def extract_file_name (self , file : str ) -> str :
42+ return file .split ("/" )[- 1 ]
43+
44+ def extract_file_last_dir (self , file : str ) -> str :
45+ return file .split ("/" )[- 2 ]
46+
47+ def read_files (self , files : t .FileDict ) -> List [Tuple [BufferedReader ]]:
4148 file_list = []
42- for file in files :
43- file_list .append (open (file , "rb" ))
49+ for file in files ["files" ]:
50+ if files ["is_dir" ]:
51+ file_list .append (
52+ (
53+ "file" ,
54+ (
55+ file ,
56+ open (file , "rb" ),
57+ "application/octet-stream" ,
58+ ),
59+ )
60+ )
61+ else :
62+ file_list .append (
63+ (
64+ "file" ,
65+ (
66+ self .extract_file_name (file ),
67+ open (file , "rb" ),
68+ "application/octet-stream" ,
69+ ),
70+ ),
71+ )
4472 return file_list
4573
4674 def post_files (
47- self , file : List [ str ] , headers : Dict [str , str ] = None , ** kwargs
75+ self , file : t . FileDict , headers : Dict [str , str ] = None , ** kwargs
4876 ) -> dict | Exception :
4977 try :
50- self .parse_url_params (kwargs .get ("params " , None ))
78+ self .parse_url_query (kwargs .get ("query " , None ))
5179 files = self .read_files (file )
52- r = req .post (self .url , files = files , headers = headers )
80+ r = req .post (self .url , headers = headers , files = files )
5381 r .raise_for_status ()
54- return r .json ()
82+ try :
83+ return r .json ()
84+ except Exception :
85+ return r .text
5586 except Exception as e :
5687 raise e
0 commit comments