// // получение объекта из jwt токена // const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOnsiaWQiOiI2MWE0ZGIyOWM3NTBjMTJiYTZiYTQwMjIiLCJsb2dpbiI6ImVxd2VxZXdldyIsImFjbCI6WyI2MWE0ZGIyOWM3NTBjMTJiYTZiYTQwMjIiLCJ1c2VyIl19LCJpYXQiOjE2MzgxOTQ1NzZ9.Pi1GO6x7wdNrIrUKCQT-32-SsqmgFY-oFDrrXmw74-8' // JSON.parse(atob(token.split('.')[1])) // // получение контрольных сумм // let qqq = 'fdhfakfalfjskgfsdadasdasdasdasdadfsdfkarieqfowerdaesfa' // function checkSum(str) { // let res = 0 // for (let letter of str) { // res += letter.charCodeAt() // } // return res // } // console.log(checkSum(qqq)) // // добавление соли (секретная последовательность) к информации // // для формирования уникальной контрольной суммы // function sign(data, salt) { // const json = JSON.stringify(data) // const sum = checkSum(json + salt) // return json + sum // } // function verify(signed, salt) { // const json = signed.slice(0, signed.lastIndexOf('}') + 1) // const tokenSum = + signed.slice(signed.lastIndexOf('}') + 1) // const sum = checkSum(json + salt) // console.log(json, tokenSum, sum) // return sum === tokenSum // } // добавить заголовок Authorization если в localStorage есть authToken (не забудьте слово Bearer и пробел после него. // Таким образом все запросы будут уходить не анонимно если в localStorage есть токен. const originalFetch = fetch; fetch = (url, params={headers:{}}) => { if (localStorage.authToken !== undefined) { params.headers.Authorization = "Bearer " + localStorage.authToken } return originalFetch(url, params) } const getGQL = (url) => ( (query, variables) => fetch(url, { method: 'POST', headers: { "Content-Type": "application/json" }, body: JSON.stringify({query, variables}) }).then(res => res.json()).then((data) => { if ('errors' in data) { Promise.reject(new Error('ОШИБКА')) // throw new Error('GFSFSDFS') } else { return data.data } }) ); (async function() { const gql = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql') console.log((await gql(`query cats($q:String) { CategoryFind(query:$q){ name goods{ name images{ url } } } }`, {q: "[{}]"}))) console.log((await gql(` query NameForMe1($login:String, $password:String){ login(login:$login, password:$password) } `, {login: 'tst', password: '123'}))) console.log(await gql(`query userFind { UserFind(query: "[{}]") { login nick } }`, {q: "[{}]"})) // написать функции по типу: // для логина, регистрации, а так же для остальных страниц будущего сайта, которые вам пришли на ум. function catById(_id){ return gql(`query catById($query:String) { CategoryFindOne(query:$query) { name goods{ _id name } } }`, {query: JSON.stringify([{_id}])}) } console.log(await catById("5dc45acf5df9d670df48cc48")) })()