def update_resource_list_file(self, command="update_cache", module=None, version=None, addition=None): payload = {'word': module} if version: payload['version'] = version api_url = srv_utils.uri_path(HubServer().get_server_url(), 'search') cache_path = os.path.join(CACHE_HOME, RESOURCE_LIST_FILE) hub_name = ConfigInfo().get_hub_name() if os.path.exists(cache_path): extra = { "command": command, "mtime": os.stat(cache_path).st_mtime, "hub_name": hub_name } else: extra = { "command": command, "mtime": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "hub_name": hub_name } if addition is not None: extra.update({"addition": addition}) try: r = srv_utils.hub_request(api_url, payload, extra, timeout=0.1) if r.get("update_cache", 0) == 1: with open(cache_path, 'w+') as fp: yaml.safe_dump({'resource_list': r['data']}, fp) except Exception as err: pass
def get_resource_url(self, resource_name, resource_type=None, version=None, update=False, extra=None): try: payload = {'word': resource_name} if resource_type: payload['type'] = resource_type if version: payload['version'] = version api_url = srv_utils.uri_path(self.get_server_url(), 'search') r = srv_utils.hub_request(api_url, payload, extra) if r['status'] == 0 and len(r['data']) > 0: for item in r['data']: if resource_name.lower() == item['name'].lower(): return item return r['data'][0] except: if self.config.get('debug', False): raise else: pass if update or not self.resource_list_file: self.request() if not self._load_resource_list_file_if_valid(): return {} resource_index_list = [ index for index, resource in enumerate(self.resource_list_file['name']) if resource == resource_name and ( resource_type is None or self.resource_list_file['type'][index] == resource_type) ] resource_version_list = [ self.resource_list_file['version'][index] for index in resource_index_list ] resource_version_list = sorted(resource_version_list) if not version: if not resource_version_list: return {} version = resource_version_list[-1] for index in resource_index_list: if self.resource_list_file['version'][index] == version: return { 'url': self.resource_list_file['url'][index], 'md5': self.resource_list_file['md5'][index], 'version': version } return {}
def search_module_info(self, module_key): try: payload = {'name': module_key} api_url = srv_utils.uri_path(self.get_server_url(), 'info') r = srv_utils.hub_request(api_url, payload) if r['status'] == 0 and len(r['data']) > 0: return [(item['raw_name'], item['version'], item['paddle_version'], item["hub_version"]) for item in r['data']["info"]] except: if self.config.get('debug', False): raise else: pass
def update_resource_list_file(self, module, version=None): payload = {'word': module} if version: payload['version'] = version api_url = srv_utils.uri_path(default_hub_server.get_server_url(), 'search') cache_path = os.path.join(CACHE_HOME, RESOURCE_LIST_FILE) extra = { "command": "update_cache", "mtime": os.stat(cache_path).st_mtime } r = srv_utils.hub_request(api_url, payload, extra) if r.get("update_cache", 0) == 1: with open(cache_path, 'w+') as fp: yaml.safe_dump({'resource_list': r['data']}, fp)
def search_resource(self, resource_key, resource_type=None, update=False, extra=None): try: payload = {'word': resource_key} if resource_type: payload['type'] = resource_type api_url = srv_utils.uri_path(self.get_server_url(), 'search') r = srv_utils.hub_request(api_url, payload, extra=extra) if r['status'] == 0 and len(r['data']) > 0: return [(item['name'], item['type'], item['version'], item['summary']) for item in r['data']] except: if self.config.get('debug', False): raise else: pass if update or not self.resource_list_file: self.request() if not self._load_resource_list_file_if_valid(): return None match_resource_index_list = [] for index, resource in enumerate(self.resource_list_file['name']): try: is_match = re.search(resource_key, resource) if is_match and (resource_type is None or self.resource_list_file['type'][index] == resource_type): match_resource_index_list.append(index) except: pass return [(self.resource_list_file['name'][index], self.resource_list_file['type'][index], self.resource_list_file['version'][index], self.resource_list_file['summary'][index]) for index in match_resource_index_list]