Exemple #1
0
def download_by_batch_id():
    import os
    batch_id = request.values.get("batch_id")

    if batch_id:
        try:
            root = file_process.get_file_root(batch_id)
        except NotADirectoryError as e:
            debug_logger.log(e)
            return json.dumps({"error": "batch_id doesn't exist"})

        print("[Backend Download] BatchID = " + batch_id)
        for rt, dirs, files in os.walk(root):
            for file in files:
                response = make_response(
                    send_from_directory(root,
                                        file,
                                        as_attachment=True,
                                        attachment_filename=file))
                response.headers[
                    "Content-Disposition"] = "attachment; filename={}".format(
                        file.encode().decode('latin-1'))
                return response

    return render_template('error_code/404.html')
Exemple #2
0
def url_visit(alias):
    print("[Url-Visit] " + alias)

    if is_alias_exist(alias):
        visit_type = alias_type(alias)
        if visit_type == "URL":
            try:
                response = requests.get(router_gen.get_real_location(
                    "http", "api", "/get_url"),
                                        params={
                                            "alias": alias
                                        },
                                        timeout=5).text
                print("[url_visit]" + alias + " -> " + response)

                if not response == "URL_NOT_EXIST":
                    print(response)
                    response_page = render_template('link_redirect.html',
                                                    target=response)
                else:
                    response_page = render_template('error_code/404.html')
                print("[url_visit]OK")

            except requests.ReadTimeout:
                response_page = render_template('error_code/503.html')

            return response_page
        elif visit_type == "FILE":
            print("    Type: File")
            import os

            batch_id = all_files.get_file_obj_by_alias(alias)[0].batch_id
            root = file_process.get_file_root(batch_id)
            print("    Location: " + root)
            for rt, dirs, files in os.walk(root):
                for file in files:
                    response = make_response(
                        send_from_directory(root,
                                            file,
                                            as_attachment=True,
                                            attachment_filename=file))
                    response.headers[
                        "Content-Disposition"] = "attachment; filename={}".format(
                            file.encode().decode('latin-1'))
                    return response

            return "None"
    else:
        return render_template('error_code/404.html')
Exemple #3
0
def file_info():
    import os
    from utils import platform
    batch_id = request.values.get("batch_id")

    if batch_id:
        try:
            root = file_process.get_file_root(batch_id)
        except NotADirectoryError as e:
            debug_logger.log(e)
            return json.dumps({"error": "batch_id doesn't exist"})

        files = [
            name for name in os.listdir(root)
            if os.path.isfile(os.path.join(root, name))
        ]
        files_count = len(files)

        # First file only, prepared for multi file download
        file_name = files[0]
        file_obj = all_files.get_file_obj_by_batch_id(batch_id)[0]
        assert isinstance(file_obj, FileLink)

        time_remain = int(file_obj.time_remain())

        if platform.is_linux():
            file_size = int(os.path.getsize(root + "/" + file_name) / 1024)
        else:
            file_size = int(os.path.getsize(root + "\\" + file_name) / 1024)

        return json.dumps({
            "file_name": file_name,
            "time_remain": time_remain,
            "file_size": file_size,
            "files_count": files_count
        })

    return json.dumps({"error": "batch_id not provided"})
Exemple #4
0
def url_visit_test(alias):
    print("[Url-Visit] " + alias)

    if is_alias_exist(alias):
        visit_type = alias_type(alias)
        if visit_type == "URL":
            try:
                response = requests.get(router_gen.get_real_location(
                    "http", "api", "/get_url"),
                                        params={
                                            "alias": alias
                                        },
                                        timeout=5).text
                print("[url_visit]" + alias + " -> " + response)

                if not response == "URL_NOT_EXIST":
                    response_page = render_template('link_redirect.html',
                                                    target=response)
                    print(response_page)
                else:
                    response_page = render_template('error_code/404.html')
                print("[url_visit]OK")

            except requests.ReadTimeout:
                response_page = render_template('error_code/503.html')

            return response_page
        elif visit_type == "FILE":
            print("    Type: File")
            import os

            batch_id = all_files.get_file_obj_by_alias(alias)[0].batch_id
            root = file_process.get_file_root(batch_id)
            print("    Location: " + root)

            return render_template('file_redirect.html', batch_id=batch_id)
    else:
        return render_template('error_code/404.html')