Exemple #1
0
    def search(cls, keyword: str) -> SearchResult:
        """在 API Server 上搜索

        :param keyword: 需要搜索的关键词
        :return: 搜索结果列表
        """
        keyword = keyword.replace("/", "")

        resp = HttpRpc.call(
            method="GET",
            url='{}/search/query?key={}&page_size={}'.format(
                app.config['API_SERVER_BASE_URL'], keyword, 100),
            retry=True,
            headers={'X-Auth-Token': get_config().API_SERVER_TOKEN})
        if resp["status"] != "success":
            raise RpcException('API Server returns non-success status')
        page_num = resp['info']['page_num']
        search_result = SearchResult.make(resp)

        # 多页结果
        if page_num > 1:
            for page_index in range(2, page_num + 1):
                resp = HttpRpc.call(
                    method="GET",
                    url='{}/search/query?key={}&page_size={}&page_index={}'.
                    format(app.config['API_SERVER_BASE_URL'], keyword, 100,
                           page_index),
                    retry=True,
                    headers={'X-Auth-Token': get_config().API_SERVER_TOKEN})
                if resp["status"] != "success":
                    raise RpcException('API Server returns non-success status')
                search_result.append(resp)

        return search_result
Exemple #2
0
def cron_update_remote_manifest():
    """更新数据最后更新时间"""
    from everyclass.server.rpc.http import HttpRpc

    # 获取安卓客户端下载链接
    android_manifest = HttpRpc.call(
        method="GET",
        url="https://everyclass.cdn.admirable.pro/android/manifest.json",
        retry=True)
    android_ver = android_manifest['latestVersions']['mainstream'][
        'versionCode']
    __app.config['ANDROID_CLIENT_URL'] = android_manifest['releases'][
        android_ver]['url']

    # 更新数据最后更新时间
    _api_server_status = HttpRpc.call(
        method="GET",
        url=__app.config['API_SERVER_BASE_URL'] + '/info/service',
        retry=True,
        headers={'X-Auth-Token': __app.config['API_SERVER_TOKEN']})
    __app.config['DATA_LAST_UPDATE_TIME'] = _api_server_status["data_time"]
 def _verify(cls, ticket: str, rand_str: str, user_ip: str) -> bool:
     params = {
         "aid": current_app.config['TENCENT_CAPTCHA_AID'],
         "AppSecretKey": current_app.config['TENCENT_CAPTCHA_SECRET'],
         "Ticket": ticket,
         "Randstr": rand_str,
         "UserIP": user_ip
     }
     resp = HttpRpc.call(method="GET",
                         url='https://ssl.captcha.qq.com/ticket/verify',
                         params=params,
                         retry=True)
     return bool(resp["response"])
Exemple #4
0
 def get_card(cls, semester: str, card_id: str) -> CardResult:
     """
     根据学期和card ID获得card
     :param semester: 学期,如 2018-2019-1
     :param card_id: card ID
     :return:
     """
     resp = HttpRpc.call(
         method="GET",
         url='{}/card/{}/timetable/{}'.format(
             app.config['API_SERVER_BASE_URL'], card_id, semester),
         retry=True,
         headers={'X-Auth-Token': get_config().API_SERVER_TOKEN})
     if resp["status"] != "success":
         raise RpcException('API Server returns non-success status')
     search_result = CardResult.make(resp)
     return search_result
Exemple #5
0
 def get_classroom_timetable(cls, semester: str, room_id: str):
     """
     根据学期和教室ID获得教室课表
     :param semester: 学期,如 2018-2019-1
     :param room_id: 教室ID
     :return:
     """
     resp = HttpRpc.call(
         method="GET",
         url='{}/room/{}/timetable/{}'.format(
             app.config['API_SERVER_BASE_URL'], room_id, semester),
         retry=True,
         headers={'X-Auth-Token': get_config().API_SERVER_TOKEN})
     if resp["status"] != "success":
         raise RpcException('API Server returns non-success status')
     search_result = ClassroomTimetableResult.make(resp)
     return search_result
Exemple #6
0
    def get_student(cls, student_id: str):
        """
        根据学号获得学生课表

        :param student_id: 学号
        :return:
        """
        resp = HttpRpc.call(
            method="GET",
            url='{}/student/{}'.format(app.config['API_SERVER_BASE_URL'],
                                       student_id),
            retry=True,
            headers={'X-Auth-Token': get_config().API_SERVER_TOKEN})
        if resp["status"] != "success":
            raise RpcException('API Server returns non-success status')
        search_result = StudentResult.make(resp)
        return search_result
Exemple #7
0
 def register_by_email(cls, request_id: str, student_id: str):
     return HttpRpc.call(method='POST',
                         url='{}/register_by_email'.format(app.config['AUTH_BASE_URL']),
                         data={'request_id': request_id,
                               'student_id': student_id},
                         retry=True)
Exemple #8
0
 def get_result(cls, request_id: str):
     return HttpRpc.call(method='GET',
                         url='{}/get_result'.format(app.config['AUTH_BASE_URL']),
                         data={'request_id': request_id},
                         retry=True)
Exemple #9
0
 def register_by_password(cls, request_id: str, student_id: str, password: str):
     return HttpRpc.call(method='POST',
                         url='{}/register_by_password'.format(app.config['AUTH_BASE_URL']),
                         data={'request_id': request_id,
                               'student_id': student_id,
                               'password'  : password})
Exemple #10
0
 def verify_email_token(cls, token: str):
     return HttpRpc.call(method='POST',
                         url='{}/verify_email_token'.format(app.config['AUTH_BASE_URL']),
                         data={"email_token": token},
                         retry=True)