Exemple #1
0
 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
Exemple #2
0
    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 {}
Exemple #3
0
 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
Exemple #4
0
 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)
Exemple #5
0
    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]