| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- import { getCookie } from "cookies-next";
- import JSEncrypt from "jsencrypt";
- export async function fetchApi(url: string, push: any, options?: RequestInit) {
- const token = getCookie("token");
- const authHeader = {
- Authorization: "Bearer " + token,
- };
- const requestHeader = {
- ...options?.headers,
- ...authHeader,
- credentials: "include",
- };
- const requestOptions = {
- ...options,
- headers: requestHeader,
- };
- const response = await fetch(url, requestOptions);
- try {
- const body = await response.json();
- if (response.ok) {
- if (body.code == 401) {
- push("/login");
- return;
- }
- }
- return body;
- } catch (error) {
- console.log("fetch error:", error);
- }
- }
- export async function fetchFile(
- url: string,
- push: any,
- options: RequestInit,
- fileName: string
- ) {
- const token = getCookie("token");
- const authHeader = {
- Authorization: "Bearer " + token,
- };
- const requestHeader = {
- ...options?.headers,
- ...authHeader,
- credentials: "include",
- };
- const requestOptions = {
- ...options,
- headers: requestHeader,
- };
- const response = await fetch(url, requestOptions);
- try {
- const contentType = response.headers.get("Content-Type");
- //如果文件处理出现了json响应信息,肯定是出错了
- if (contentType && contentType.includes("application/json")) {
- const body = await response.json();
- if (response.ok) {
- if (body.code == 401) {
- push("/login");
- return;
- }
- }
- } else {
- const blob = await response.blob();
- const url = window.URL.createObjectURL(blob);
- const a = document.createElement("a");
- (a.href = url), (a.download = fileName);
- document.body.appendChild(a);
- a.click();
- window.URL.revokeObjectURL(url);
- }
- } catch (error) {
- console.log("fetch file error:", error);
- }
- }
- //公钥
- const publicKey =
- "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/JW5RlS6o2Cz3Vlm96u8D+aY3WvzRQyC+B8TQGjOTvtklSXbKYwoccL9RLU1IHUu+Pk1GlZM87OhULq4B3cU9AxXWj24eaxoaWSO4iuMjF7SvsQtWCEmbECJg5WTf8gRi89PjyGntawp04KfR6AXCyTWmTm2vwC+PqoQcnZl9GdNerxeLpD1k7NxSe+syMUaIgM0mVqcirzdPrIVO9v89l5RVxVVUv6XCR3Z05iK8ODQ4ITCoJB8XrGlDPa3TqDlnpME4/upLx3u6oogIRncIPw3P2kAF2viwoll0H23fKkNQvsLdH9jUw+zl0ZJjSb/e2fcMYYrT+AlER3zBOW/wIDAQAB";
- //私钥
- const privateKey =
- "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC78lblGVLqjYLPdWWb3q7wP5pjda/NFDIL4HxNAaM5O+2SVJdspjChxwv1EtTUgdS74+TUaVkzzs6FQurgHdxT0DFdaPbh5rGhpZI7iK4yMXtK+xC1YISZsQImDlZN/yBGLz0+PIae1rCnTgp9HoBcLJNaZOba/AL4+qhBydmX0Z016vF4ukPWTs3FJ76zIxRoiAzSZWpyKvN0+shU72/z2XlFXFVVS/pcJHdnTmIrw4NDghMKgkHxesaUM9rdOoOWekwTj+6kvHe7qiiAhGdwg/Dc/aQAXa+LCiWXQfbd8qQ1C+wt0f2NTD7OXRkmNJv97Z9wxhitP4CURHfME5b/AgMBAAECggEACOp9Ls8dvNzLuNXD5ToSKHmL9G3v0hXELgYPP4P1X1C1e3yh1lin8/TCX3TuPcqO8f7kqyL4RVnpOC8tf0ZLXnqA7QJ+u8a65IU7Q7G/OchZJfx1FXWntLbN+Eoz0+1ndYzmJd6vMDfVF4q/OqJIypaewuoIfZj49yDE/KH7vZTyQQi8dmP2Re86WjlJyt+FrWUpzQh7R/NcDaRJ1fUBpOB+PZ+WYFK4BHTmvZ6f/XDYSbuiIMEcA/BejklaIFIAv9mMZ7MBCs+pPvgtleIlvfZwmCEEwYWCnZPncYovtaeKmTY7KMjp5LbyAeK/mqblqhiXl9mp3NM1Tk6doCKbyQKBgQDkhLlG50t6BO/xl7kkDUkG5QRe6MctoiN5BB/tNlLWImOhzNka+JPu278R2n6Ls4fYD74RxKwcy8a0683TsVC1mo8S/ck6o6HlDmBB+N6IMbMF8snKksKM6yytvOj4O3V8KZdaJDGzTz/CUEIWKUfBCQmbl7iFhOwpo7bNzxA0QwKBgQDSjI2Ew0v8TUDdNfFcd3exDQm3HmA1XcTIAapmVsgcLK76IIDsJSFqA+b8cHTM1I01kiK1kadPy9ZIR1NNb5ZjCNJqzIpzTI2ZdZdBgyQh7tjw9hdzcd2n7aKXmahZ9vNgzGVOhCT4A4RmBvozCuHLpEHT431A8L04WTdLEalklQKBgA8Fenhis99te6hR5OWtyeMeIs9qVc12HwbRcpfRPli9Ifd807imJnNJFqJBzpe4UXGudzwLxZSPAJzb80e7HCcT5dvFuviT0QyRiVpM1bP2MGJvtzwNsaQ5wVIaXOYUYoCq6zwNrQawauyHAhEa3ZCe23bS3lpIho2mKVoWBmapAoGAbepMMuPVdjhKRXFUuEXx6S76RGuKJDH4ecVM1LI3M2YsTo3LX/weTn8NBfobL5dCxJWuowUPyDuMeR0rIsC/TKIdXv26xWhQf62AsgWpRkGvZVPDeFQYOAN5nxTra1PdSEpMFMotloAXjT/VO/JRYAM3DkuzZsSGs7T3hawJt2UCgYEAmVE0x7c1zxD62h68v2jmLdPbG5UVmuSSwVod2PqSv5WDY/7tg1HUh4/UcSX/9rbXXzacMTBE/aJDZkusFSThsmMFkpKmt5a2JOtsbzwFHo0kSCOngUBwxyPY+JEMgDJo9Y+6fnYNnhQklrjiyAdaUGb4YrPQSNas1G29OzE5Mcs=";
- //加密数据
- export function encrypt(content: string) {
- const encryptor = new JSEncrypt();
- encryptor.setPublicKey(publicKey);
- return encryptor.encrypt(content);
- }
- //解密数据
- export function decrypt(content: string) {
- const encryptor = new JSEncrypt();
- encryptor.setPrivateKey(privateKey);
- return encryptor.decrypt(content);
- }
- //获取当前浏览器是否深色模式
- export function displayModeIsDark() {
- if (typeof window !== 'undefined') {
- return window.matchMedia("(prefers-color-scheme: dark)").matches;
- }
- return false;
- }
- //动态获取浏览器是否深色模式
- export function watchDarkModeChange(callback: (value: boolean) => void) {
- if (typeof window !== 'undefined') {
- const darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)");
- const onChange = (e: any) => {
- callback(e.matches);
- };
- darkModeQuery.addEventListener("change", onChange);
- return () => {
- darkModeQuery.removeEventListener("change", onChange);
- };
- }
- return () => {};
- }
|