package com.yutou.tools.other;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yutou.tools.ToolsApplication;
import com.yutou.tools.mybatis.dao.UKeyDao;
import com.yutou.tools.mybatis.model.UKey;
import com.yutou.tools.mybatis.model.UKeyExample;
import com.yutou.tools.utils.ConfigTools;
import com.yutou.tools.utils.RedisTools;
import com.yutou.tools.utils.Tools;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Enumeration;
import java.util.List;

@Controller
public class tools {
    @Resource
    UKeyDao keyDao;

    @ResponseBody
    @RequestMapping(value = "/tools/get.do")
    public String getJs(HttpServletRequest request, HttpServletResponse response) throws Exception {
        Enumeration<String> name = request.getHeaderNames();
        while (name.hasMoreElements()) {
            String na = name.nextElement();
            System.out.println(na + " " + request.getHeader(na));
        }
        File file = new File("D:\\IDEA\\web_toolset\\web\\js\\my.js");
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String tmp, str = "";
        while ((tmp = reader.readLine()) != null) {
            if (tmp.contains("\"")) {
                // tmp=tmp.replace("\"","\\\"");
            }
            str += tmp;
        }
        reader.close();
      /*  response.setHeader("Content-Type","application/javascript; charset=utf-8");
        PrintWriter writer=response.getWriter();
        writer.write(str);
        writer.flush();
        writer.close();*/
        return str;
        //return "function test(){ return \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1588139022200&di=8cc8405f7514dd54bd82fcd070349603&imgtype=0&src=http%3A%2F%2Fa2.att.hudong.com%2F36%2F48%2F19300001357258133412489354717.jpg\" }";
    }

    @RequestMapping("/public/version.do")
    @ResponseBody
    public String getVersion() {
        return ToolsApplication.version;
    }

    @ResponseBody
    @RequestMapping("/public/request.do")
    public String testRequest(HttpServletRequest request) {
        JSONObject params = new JSONObject();
        JSONArray cookies = new JSONArray();
        JSONObject header = new JSONObject();
        for (String key : request.getParameterMap().keySet()) {
            params.put(key, request.getParameter(key));
        }
        if (request.getCookies() != null) {
            for (Cookie cookie : request.getCookies()) {
                JSONObject ck = JSONObject.parseObject(JSONObject.toJSONString(cookie));
                cookies.add(ck);
            }
        }
        Enumeration<String> enumeration = request.getHeaderNames();
        while (enumeration != null && enumeration.hasMoreElements()) {
            String tmp = enumeration.nextElement();
            header.put(tmp, request.getHeader(tmp));
        }
        JSONObject json = new JSONObject();
        json.put("code", 0);
        json.put("method", request.getMethod());
        json.put("address", Tools.getRemoteAddress(request));
        json.put("UA", request.getHeader("User-Agent"));
        json.put("addressUrl", request.getPathInfo());
        json.put("params", params);
        json.put("cookie", cookies);
        json.put("header", header);
        Tools.sendServer("打印请求", json.toJSONString());
        try {
            switch (RedisTools.get("request")) {
                case "success":
                    return "success";
                case "-999":
                case "param":
                    return json.toJSONString();
                default:
                    return RedisTools.get("request");
            }
        } catch (Exception e) {
            //  e.printStackTrace();
        }

        return json.toJSONString();
    }

    @ResponseBody
    @RequestMapping("/private/request.do")
    public String setRequest(String ret, String data) {
        switch (ret) {
            case "success":
                RedisTools.set("request", "success");
                break;
            case "user":
                RedisTools.set("request", data);
                break;
            default:
                RedisTools.set("request", "param");
                break;
        }
        return RedisTools.get("request");
    }
    @RequestMapping("/public/video.do")
    public ResponseEntity<FileSystemResource> getVideo(){
        return Tools.getFile(new File("Z:\\download\\anim\\鬼灭之刃\\[BeanSub&FZSD&LoliHouse] Kimetsu no Yaiba - 07 [WebRip 1080p HEVC-10bit AAC ASSx2]\\[BeanSub&FZSD&LoliHouse] Kimetsu no Yaiba - 07 [WebRip 1080p HEVC-10bit AAC ASSx2].mkv"));
    }
    //ffmpeg -i "[NC-Raws] 小林家的龙女仆S - 01 [B-Global][WEB-DL][2160p][AVC AAC][CHS_CHT_ENG_TH_SRT][MKV].mkv" -vn -an -map 0:2  sub2.srt
    @RequestMapping("/public/sub.srt")
    public ResponseEntity<FileSystemResource> getVideoSub(){

        return Tools.getFile(new File("Z:\\download\\anim\\鬼灭之刃\\[BeanSub&FZSD&LoliHouse] Kimetsu no Yaiba - 07 [WebRip 1080p HEVC-10bit AAC ASSx2].SC.ass"));
    }

    @RequestMapping("/tools/server.do")
    @ResponseBody
    public String sendServer(String title,String msg){
        Tools.sendServer(title,msg);
        return "ok";
    }

    public int getUid(HttpServletRequest request) {
        String token = request.getParameter("token");
        Cookie cookie = Tools.getCookie(request, "user");
        if (StringUtils.isEmpty(token) && cookie != null) {
            if ("ok".equals(RedisTools.get(cookie.getValue()))) {
                return 1;
            }
        }
        UKeyExample example = new UKeyExample();
        example.createCriteria().andKeyEqualTo(token);
        List<UKey> list = keyDao.selectByExample(example);
        if (list != null && !list.isEmpty()) {
            UKey key = list.get(0);
            return key.getId();
        }
        return -1;
    }
}
