// import { store } from "../../redux";
// // import utils from './../../components/utils'
// export function createRequest(url, body, method = "GET", headers = {}) {
//     // Create option according to the passed arguments
//     let options = {
//         method,
//         headers,
//     }
//     // console.log('body', body)
//     // const encodedString = utils.convertJSONToEncodedString(body)
//     // console.log("encodedString", encodedString)
//     // const JSONObj = utils.convertEncodedStringToJSON(encodedString)
//     // console.log('JSONObj', JSONObj)
//     // Detect body for request and append
//     if (body) {
//         options["body"] = body
//     }
//     const lang = store.getState().lang.lang; //localStorage.getItem('currentLang');
//     const requestUrl = `${url}&lang=${lang}`
//     return new Promise((resolve, reject) => {
//         fetch(requestUrl, options)
//             .then(res => res.json())
//             .then(response => { resolve(response) })
//             .catch(err => {
//                 console.log('err', err)
//                 // reject(err)
//             })
//     })
// }
// import Utils from "../../components/utils";
// import { store } from "../../redux";
// import axios from 'axios'
// import { logger } from './../api/helper'
// let count = 0
// function logger(params) {
//   count = count + 1
//   // console.log('count', count);
//   // console.log("test loader---", params);
//   let logInfo = { request: null, response: null, error: null };
//   axios.interceptors.request.use(request => {
//     //console.log(`${req.method} ${req.url}`);
//     // console.log('Starting Request', JSON.stringify(request, null, 2))
//     // postLoggerServer(request);
//     logInfo.request = request;
//     return request
//   })
//   axios.interceptors.response.use(response => {
//     console.log('response', response);
//     //console.log(res.data.json);
//     // console.log('Response:', JSON.stringify(response, null, 2))
//     // postLoggerServer(response);
//     logInfo.response = response;
//     // console.log("test loader");
//     if (logInfo.request !== null) {
//       postLoggerServer(logInfo);
//     }
//     return response
//   },
//     err => {
//       if (err.response.status >= 400) {
//         // console.log("Error", JSON.stringify(err, null, 2));
//         // postLoggerServer(err);
//         logInfo.error = err;
//         if (logInfo.request !== null) {
//           postLoggerServer(logInfo);
//         }
//         throw new Error(`${err.config.url} not found`);
//       }
//       throw err;
//     }
//   )
// axios.interceptors.response.use(
//   res => res,
//   err => {
//     if (err.response.status === 404) {
//       throw new Error(`${err.config.url} not found`);
//     }
//     throw err;
//   }
// );
// }
// async function postLoggerServer(postData) {
//   // Utils.encryptRequestBody(
//   // console.log("test postLogger", postData);
//   const requestOptions = {
//     method: 'POST',
//     headers: {
//       'Accept': '*/*',
//       'Content-Type': "application/json"
//     },
//     body: JSON.stringify({ data: Utils.encryptRequestBody(postData) }),
//     mode: "cors"
//   };
//   // console.log("");
//   let endPointURL = process.env.REACT_APP_API_LOG + "lcms";
//   // console.log("endPointURL", endPointURL);
//   await fetch(endPointURL, requestOptions);
//   // const response 
//   // let response   = await response.json();
// }
// export function createRequest(url, param, body, method = "GET", headers = {}) {
//   // Create option according to the passed arguments
//   let options = {
//     method,
//     headers,
//   }
//   // console.log('body', body)
//   // const encodedString = utils.convertJSONToEncodedString(body)
//   // console.log("encodedString", encodedString)
//   // const JSONObj = utils.convertEncodedStringToJSON(encodedString)
//   // console.log('JSONObj', JSONObj)
//   // Detect body for request and append
//   if (body) {
//     options["body"] = body
//   }
//   const lang = store.getState().lang.lang; //localStorage.getItem('currentLang');
//   const requestUrl = `${url}&lang=${lang}`
//   // return new Promise((resolve, reject) => {
//   //     fetch(requestUrl, options)
//   //         .then(res => res.json())
//   //         .then(response => { resolve(response) })
//   //         .catch(err => {
//   //             console.log('err', err)
//   //             // reject(err)
//   //         })
//   // })
//   // logger('', true);
//   // Detect body for request and append
//   if (body) {
//     options["body"] = Utils.cmsEncryptHeaderAuthKey(body)
//   }
//   return new Promise((resolve, reject) => {
//     axios.request({
//       url: requestUrl,
//       method,
//       headers: {
//         "Content-Type": 'application/JSON'
//       }
//     }).then(response => {
//       // const decryptedResponse = Utils.cmsDecryptHeaderAuthKey(atob(response.data)) //btoa(encodedParam)
//       const encodedParam = Utils.cmsEncryptHeaderAuthKey(`${param}&lang=${lang}`)
//       const base64Enc = btoa(encodedParam); //   
//       const requestUrl = `${url}param=${base64Enc}`
//       return new Promise((resolve, reject) => {
//         fetch(requestUrl, options)
//           .then(res => res.json())
//           .then(response => {
//             const decryptedResponse = Utils.cmsDecryptHeaderAuthKey(atob(response)) //btoa(encodedParam)
//             resolve(JSON.parse(decryptedResponse))
//             // console.log('JSON.parse(decryptedResponse)', decryptedResponse)
//           })
//           .catch(err => {
//             console.log('err', err)
//             // reject(err)
//           })
//       })
//     })
//   })
// }
// Helper portal
import Utils from "../../components/utils";
import { store } from "../../redux";
import axios from 'axios'; // import CryptoJS from 'crypto-js';
// import { logger } from './../api/helper'

export function createRequest(url, param, body, method = "GET", headers = {}) {
  // logger();
  let options = {
    method
  };

  if (Object.keys(headers).length > 0) {
    options.headers = headers; // Utils.cmsDecryptHeaderAuthKey(headers)
  } // console.log('body', body)
  // const encodedString = utils.convertJSONToEncodedString(body)
  // console.log("encodedString", encodedString)
  // const JSONObj = utils.convertEncodedStringToJSON(encodedString)
  // console.log('JSONObj', JSONObj)
  // Detect body for request and append


  if (body) {
    //options["body"] = Utils.cmsEncryptHeaderAuthKey(body)
    options["body"] = body;
  }

  const lang = store.getState().lang.lang;
  const encodedParam = Utils.cmsEncryptHeaderAuthKey(`${param}&lang=${lang}`);
  const base64Enc = btoa(encodedParam); //   

  const requestUrl = `${url}param=${base64Enc}`; // return new Promise((resolve, reject) => {
  //     fetch(requestUrl, options)
  //         .then(res => res.json())
  //         .then(response => {
  //             const decryptedResponse = Utils.cmsDecryptHeaderAuthKey(atob(response)) //btoa(encodedParam)
  //             resolve(JSON.parse(decryptedResponse))
  //             // console.log('JSON.parse(decryptedResponse)', decryptedResponse)
  //         })
  //         .catch(err => {
  //             console.log('err', err)
  //             // reject(err)
  //         })
  // })

  return new Promise((resolve, reject) => {
    axios.request({
      url: requestUrl,
      method,
      headers: {
        "Content-Type": 'application/JSON'
      }
    }).then(response => {
      const decryptedResponse = Utils.cmsDecryptHeaderAuthKey(atob(response.data)); //btoa(encodedParam)

      resolve(JSON.parse(decryptedResponse)); // resolve(response.data)
    }).catch(err => {// console.log('err', err)
    });
  });
}