MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / FileServer

Class FileServer

client/util/api/fileserver.py:50–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

48
49
50class FileServer(object):
51 def __init__(self, server_url=None, headers=None):
52 """
53 构造函数
54 :return:
55 """
56 if server_url:
57 self._server_url = server_url
58 self._headers = headers if headers else {}
59 else:
60 # 优先从环境变量读取文件服务器url和token,没有再使用默认值
61 self._server_url = os.getenv("FILE_SERVER_URL", settings.FILE_SERVER['URL'])
62 file_server_token = os.getenv("FILE_SERVER_TOKEN", settings.FILE_SERVER['TOKEN'])
63 self._headers = {'Authorization': 'Token %s' % file_server_token}
64
65 self._proxies = None
66
67 def modify_save_time(self, rel_dir, days):
68 """
69 修改文件服务器的保存时间
70 :param rel_dir: 修改的目录相对路径
71 :param days: 修改保存时间天数
72 :return:
73 """
74 data = {"retention": days}
75 file_url = urljoin(self._server_url, rel_dir)
76 HttpClient(self._server_url, rel_dir, headers=self._headers, data=data, proxies=self._proxies).put()
77 logger.info('成功修改目录(%s)保存时间为 %s 天.' % (rel_dir, days))
78 return file_url
79
80 def __upload_data(self, data, rel_url, headers):
81 """
82 上传数据到文件服务器
83 :param data: 要上传的数据, 可以是 Dictionary, bytes, or file-like object
84 :param rel_url: 上传到服务器的相对url
85 :return: 上传到服务器后的完整url, 如果上传失败, 返回 None
86 """
87 file_url = urljoin(self._server_url, rel_url)
88 HttpClient(self._server_url, rel_url, headers=headers, data=data, proxies=self._proxies).put()
89 return file_url
90
91 def upload_file(self, filepath, rel_url):
92 """
93 上传文件到文件服务器
94 :param filepath: 要上传的文件路径
95 :param rel_url: 上传到服务器的相对url
96 :return: 上传到服务器后的完整url, 如果上传失败, 返回 None
97 """
98 with open(filepath, 'rb') as fp:
99 headers = {
100 "Content-SHA256": FlieHash.get_sha256(filepath),
101 "Content-MD5": FlieHash.get_md5(filepath)
102 }
103 headers.update(self._headers)
104 return self.__upload_data(fp, rel_url, headers)
105
106 def load_data(self, rel_url):
107 """

Callers 1

get_serverMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected