Exemplo n.º 1
0
class Robot:
    def __init__(self, webhook: str):
        self.webhook = webhook
        self.doRequest = DoRequest(self.webhook)
        self.doRequest.setVerify(False)
        self.doRequest.setHeaders({'Content-Type': 'application/json'})

    def send_by_text(self,
                     content: str,
                     atUserIds: list = (),
                     atMobiles: list = ()):
        """[summary]

        Args:
            content (str): [description]
            atUserIds (list, optional): userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list. Defaults to ().
            atMobiles (list, optional): 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人. Defaults to ().

        Returns:
            [type]: [description]
        """
        params = {}
        params.update({'msgtype': 'text'})
        if not isinstance(atUserIds, list):
            atUserIds = list(atUserIds)
        if not isinstance(atMobiles, list):
            atMobiles = list(atMobiles)
        params.update({
            'text': {
                'content': content,
                'mentioned_list': atUserIds,
                'mentioned_mobile_list': atMobiles
            }
        })
        params = ujson.dumps(params)
        # 发送文本
        httpResponseResult = self.doRequest.post_with_form('', params)
        return httpResponseResult

    def send_by_markdown(self, content: str):
        params = {}
        params.update({'msgtype': 'markdown'})
        params.update({'markdown': {'content': content}})
        params = ujson.dumps(params)
        # 发送文本
        httpResponseResult = self.doRequest.post_with_form('', params)
        return httpResponseResult
Exemplo n.º 2
0
class Disconf_Client:
    def __init__(self,
                 url: str,
                 username: str,
                 password: str,
                 is_verify_ssl_cer=True):
        self.url = url
        self.username = username
        self.password = password
        self.doRequest = DoRequest(self.url)
        self.doRequest.setVerify(is_verify_ssl_cer)
        self._login()

    def _login(self):
        params = {
            'name': 'admin_test',
            'password': '******',
            'remember': '1'
        }
        httpResponseResult = self.doRequest.post_with_form(
            '/api/account/signin', params)
        return ujson.loads(httpResponseResult.body)

    def get_app_list(self):
        httpResponseResult = self.doRequest.get('/api/app/list')
        app_list = ujson.loads(httpResponseResult.body)
        app_list = app_list['page']['result']
        return app_list

    def get_app_id(self, app_name: str):
        app_list = self.get_app_list()
        for app_info in app_list:
            if app_info['name'] == app_name:
                return app_info['id']

    def get_env_list(self):
        httpResponseResult = self.doRequest.get('/api/env/list')
        env_list = ujson.loads(httpResponseResult.body)
        env_list = env_list['page']['result']
        return env_list

    def get_env_id(self, env_name: str):
        env_list = self.get_env_list()
        for env_info in env_list:
            if env_info['name'] == env_name:
                return env_info['id']

    def get_version_list(self, app_id: int, env_id: int):
        params = {'appId': app_id, 'envid': env_id}
        httpResponseResult = self.doRequest.get('/api/web/config/versionlist',
                                                params)
        version_list = ujson.loads(httpResponseResult.body)
        version_list = version_list['page']['result']
        return version_list

    def get_config_list(self,
                        app_id: int,
                        env_id: int,
                        version: str,
                        pageSize: int = 50,
                        pageNo: int = 1):
        params = {
            'appId': app_id,
            'envId': env_id,
            'version': version,
            "page.pageSize": pageSize,
            "page.pageNo": pageNo
        }
        httpResponseResult = self.doRequest.get('/api/web/config/list', params)
        config_list = ujson.loads(httpResponseResult.body)
        config_list = config_list['page']['result']
        return config_list

    def get_config_id(self, app_name: str, env_name: str, version: str,
                      config_name: str):
        now_page = 1
        # 最多从500个文件获取
        while (not now_page > 10):
            config_list = self.get_config_list(self.get_app_id(app_name),
                                               self.get_env_id(env_name),
                                               version,
                                               pageSize=50,
                                               pageNo=now_page)
            for config_info in config_list:
                if config_info['key'] == config_name:
                    return config_info['configId']
            now_page += 1

    def get_config_info(self, config_id: int):
        httpResponseResult = self.doRequest.get('/api/web/config/%s' %
                                                config_id)
        config_info = ujson.loads(httpResponseResult.body)
        config_info = config_info['result']['value']
        return config_info

    def update_config_info(self, config_id: int, content: str):
        params = {'fileContent': content}
        httpResponseResult = self.doRequest.put(
            '/api/web/config/filetext/%s' % config_id, params)
        config_info = ujson.loads(httpResponseResult.body)
        return config_info