import { fetch, post } from '@/api/http'
import { GLOBAL } from '@/static/Global.js';
//获取文件后缀和类型
function getExAndType(fileName) {
    let ex = fileName.substring(fileName.lastIndexOf('.') + 1)
    let type = 'other'
    ex = ex.toUpperCase()
    for (let key in GLOBAL.CONTENT_TYPES) {
        if (GLOBAL.CONTENT_TYPES[key].indexOf(ex) != -1) {
            type = key
            break
        }
    }
    return {
        ex, type
    }
}
export default {
    getBlobSAS: function (data) {
        return post('/api/File/getBlobSAS', data)
    },
    //最开始使用的blob授权API
    getContainerSAS: function (data) {
        return post('/api/File/getContainerSAS', data)
    },
    //获取blob容器读写创建
    blobSasRCW: function (data) {
        return post('/blob/sas-rcwld', data)
    },
    //获取blob容器只读创建
    blobSasR: function (data) {
        return post('/blob/sas-r', data)
    },
    //单文件只读权限
    urlSasR: function (data) {
        return post('/blob/sas-url-r', data)
    },
    //获取容器空间
    getContainerSize: function (data) {
        return post('/blob/get-blobsize', data)
    },
    // 删除blob指定目录下的所有文件
    deletePrefix: function (data) {
        return post('/blob/delete-prefix', data)
    },
    // 批量删除blob
    deleteBlobs: function (data) {
        return post('/blob/delete-blobs', data)
    },
    // 上传文件之前需要先检查文件是否存在
    checkBlobs: function (data) {
        return post('/blob/check-blobsize', data)
    },
    // 上传文件之后需要更新blob空间
    updateSize: function (data) {
        return post('/blob/update-blobsize', data)
    },
    /**
     * 上传文件之后保存文件的描述信息
     * opt: add 更新
     * opt: del 删除
     **/
    upsertBlobInfo: function (data) {
        return post('/blob/bloblog-opt', data)
    },
    /**
     * 查询资源信息
     * 这里统一将返回数据处理成原来前端直接listBlob返回的数据格式
     * @returns 
     */
    listBlobInfo: function (data, host, container) {
        return new Promise((r, j) => {
            post('/blob/bloblog-list', data).then(
                res => {
                    console.log(res)
                    let blobs = []
                    res.bloblogs.forEach(item => {
                        let blobName = item.url
                        let info = getExAndType(item.url)
                        let i = {
                            url: host + '/' +container + '/' + item.url,
                            blob: '/' + item.url,
                            name: blobName.substring(blobName.lastIndexOf('/') + 1),
                            size: item.size,
                            createTime: item.time,
                            extension: info.ex,
                            type: info.type,
                            periodId: item.periodId,
                            subjectId: item.subjectId,
                            gradeId: item.gradeId,
                            id: item.id
                        }
                        blobs.push(i)
                    })
                    r(blobs)
                },
                err => {
                    j(err)
                }
            )

        })

        // return post('/blob/bloblog-list', data)
    }
}
