let base_url = `https://webeditter.piaoquantv.com/`
let dom = {}
let array_file_buffer = []
const HEADERS_TO_STRIP_LOWERCASE = [
    'content-security-policy',
    'x-frame-options',
];
chrome.webRequest.onBeforeSendHeaders.addListener((details) => {

    let item = details.requestHeaders
    for (let i in item) {
        if (item[i].name.toLowerCase() == 'sec-fetch-dest') {
            item[i].value = 'document'
        }
        if (item[i].name.toLowerCase() == 'sec-fetch-site') {
            item[i].value = 'none'
        
        }
        
        // if (item[i].name.toLowerCase() == ':authority') {
        //     console.log(item)
        // }
//         Host: chat.blockscan.com
//         Origin: https://chat.blockscan.com
//         if(){

        // }
        // SameSite=None; Secure
    }
    // details.requestHeaders = item
    // item[item.length-1].name = 'set-cookie'
    // item[item.length-1].value = 'SameSite=None; Secure'
    return { requestHeaders: item }
}, { urls: ["<all_urls>"] }, ['blocking', 'requestHeaders']);



chrome.webRequest.onHeadersReceived.addListener((details) => {
    let item = details.responseHeaders
    let arr= []
    for (let i in item) {
        if (!HEADERS_TO_STRIP_LOWERCASE.includes(item[i].name.toLowerCase())) {
            arr.push(item[i])
        }
    }
    
    return { responseHeaders: arr }
}
    ,
    { urls: ["<all_urls>"] },
    ['blocking', 'responseHeaders', 'extraHeaders']);

// 消息通讯
chrome.runtime.onConnect.addListener(function (port) {
    port.onMessage.addListener(function (res) {
        console.log('成功:', res.index)
        switch (res.state) {
            case 'SEDN_FILE_START':
                sendFileStart(port, res)
                break

            case 'CHECK_MD5_START':
                hasAudioFileMd5(port, res.md5)
                break


            // case 'TEST_VIDEO':
            //     getVideoM3d8(port)
            //     break
        }
    })
})

function sendFileStart(port, res) {
    if (res.index == 0) {
        array_file_buffer = []
    }
    array_file_buffer.push(stringToArrayBuffer(res.buffer_str))


    if (res.end_index == res.index) {
        let file = new File(array_file_buffer, res.name, { type: res.type })
        port.postMessage({ state: 'SEDN_FILE_END', msg: 'ok' })
        uploadFile(port, file)
    }

}
function hasAudioFileMd5(port, md5) {
    let url = base_url + 'get_audio_file/' + md5
    // 网络请求
    let xhr = new XMLHttpRequest();  // XMLHttpRequest 对象
    xhr.open("get", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
    xhr.send()
    xhr.onreadystatechange = function () {  //绑定响应状态事件监听函数
        if (xhr.readyState == 4) {  //监听readyState状态
            if (xhr.status == 200 || xhr.status == 0) {  //监听HTTP状态码
                let result = JSON.parse(xhr.responseText)
                port.postMessage({ state: 'CHECK_MD5_END', ...result })
            }
        }
    }
}

function uploadFile(port, file) {
    let start_time = new Date().getTime()

    let url = base_url + 'uploadfile'
    let xhr = new XMLHttpRequest();
    xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
    var formData = new FormData();
    formData.append('file', file);

    xhr.upload.onprogress = (e) => {
        let end_time = new Date().getTime()
        let bili = e.loaded / e.total
        if (bili == 1) {
            port.postMessage({ state: 'UPLOAD_FILE', bili })
        }
        if (end_time > (start_time + 1000)) {
            start_time = end_time
            port.postMessage({ state: 'UPLOAD_FILE', bili })
        }
    };
    xhr.onreadystatechange = function () {  //绑定响应状态事件监听函数
        if (xhr.readyState == 4) {  //监听readyState状态
            if (xhr.status == 200 || xhr.status == 0) {  //监听HTTP状态码
                let result = JSON.parse(xhr.responseText)
                port.postMessage({ state: 'UPLOAD_FILE_END', ...result })
            }
        }
    }
    xhr.send(formData)
}

function getVideoM3d8(port) {
    let path = 'http://rescdn.yishihui.com/longvideo/transcode/video/2018-11-27/6708b592fdd64be6837754c221631ec01544102390923.m3u8'
    let ts_path = 'http://rescdn.yishihui.com/longvideo/transcode/video/2018-11-27/6708b592fdd64be6837754c221631ec01544102390923-00001.ts'

    let xhr = new XMLHttpRequest();
    xhr.open('GET', ts_path);
    // 接收的是 video/mp2t 二进制数据,并且arraybuffer类型方便后续直接处理 
    xhr.responseType = "arraybuffer";
    xhr.send();
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                let str = arrayBufferToString(xhr.response)
                port.postMessage({ state: 'TEST_VIDEO', str })
                // transferFormat(xhr.response);
            } else {
                console.log('error');
            }
        }
    }
}