'''

对象存储模块api

'''

from flask import jsonify, request

from flask import Blueprint

from utils.auth import validate_user, validate_permissions

from utils.web_utils import get_req_para, validate_params

from utils.common_utils import gen_json_response

from web_apps.ossfile.services import FileService

from utils.storage_utils import storage

from config import SYS_CONF

file_bp = Blueprint('file', __name__)





@file_bp.route('/list', methods=['GET'])

@validate_user

def file_list():

    """

    文件列表

    """

    req_dict = get_req_para(request)

    print(req_dict)

    res_data = FileService().get_obj_list(req_dict)

    return jsonify(res_data)





@file_bp.route('/upload', methods=['POST'])

@validate_user

@validate_permissions(['system:oss:upload'])

def file_upload():

    """

    上传文件到对象存储

    """

    req_dict = get_req_para(request)

    file = request.files.get('file', '')

    if file != '':

        file_name = req_dict.get('file_name', file.filename)

        file_type = file.filename.split('.')[-1]

        content = file.read()

        storage.save(file_name, content)

        file_url = storage.get_download_url(file_name)

    else:

        res_data = gen_json_response(code=400, msg='文件获取失败')

        return jsonify(res_data)

    file_params = {'url': file_url, 'file_type': file_type, 'file_name': file.filename}

    res_data = FileService().add_obj(file_params)

    return jsonify(res_data)





@file_bp.route('/delete', methods=['POST', 'DELETE'])

@validate_user

@validate_permissions(['system:oss:delete'])

def file_delete():

    """

    删除

    """

    req_dict = get_req_para(request)

    print(req_dict)

    res_data = FileService().delete_obj(req_dict)

    return jsonify(res_data)