index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. // const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOnsiaWQiOiI2MWE0ZGIyOWM3NTBjMTJiYTZiYTQwMjIiLCJsb2dpbiI6ImVxd2VxZXdldyIsImFjbCI6WyI2MWE0ZGIyOWM3NTBjMTJiYTZiYTQwMjIiLCJ1c2VyIl19LCJpYXQiOjE2MzgxOTQ1NzZ9.Pi1GO6x7wdNrIrUKCQT-32-SsqmgFY-oFDrrXmw74-8'
  2. // JSON.parse(atob(token.split('.')[1]))
  3. // let qqq = 'fdhfakfalfjskgfsdadasdasdasdasdadfsdfkarieqfowerdaesfa'
  4. // function checkSum(str) {
  5. // let res = 0
  6. // for (let letter of str) {
  7. // res += letter.charCodeAt()
  8. // }
  9. // return res
  10. // }
  11. // console.log(checkSum(qqq))
  12. // function sign(data, salt) {
  13. // const json = JSON.stringify(data)
  14. // const sum = checkSum(json + salt)
  15. // return json + sum
  16. // }
  17. // function verify(signed, salt) {
  18. // const json = signed.slice(0, signed.lastIndexOf('}') + 1)
  19. // const tokenSum = + signed.slice(signed.lastIndexOf('}') + 1)
  20. // const sum = checkSum(json + salt)
  21. // console.log(json, tokenSum, sum)
  22. // return sum === tokenSum
  23. // }
  24. // добавить заголовок Authorization если в localStorage есть authToken (не забудьте слово Bearer и пробел после него.
  25. // Таким образом все запросы будут уходить не анонимно если в localStorage есть токен.
  26. const originalFetch = fetch;
  27. fetch = (url, params={headers:{}}) => {
  28. if (localStorage.authToken !== undefined) {
  29. params.headers.Authorization = "Bearer " + localStorage.authToken
  30. }
  31. return originalFetch(url, params)
  32. }
  33. const getGQL = (url) => (
  34. (query, variables) => fetch(url, {
  35. method: 'POST',
  36. headers: {
  37. "Content-Type": "application/json"
  38. },
  39. body: JSON.stringify({query, variables})
  40. }).then(res => res.json()).then((data) => {
  41. if ('errors' in data) {
  42. Promise.reject(new Error('ОШИБКА'))
  43. // throw new Error('GFSFSDFS')
  44. } else {
  45. return data.data
  46. }
  47. })
  48. );
  49. (async function() {
  50. const gql = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
  51. console.log((await gql(`query cats($q:String) {
  52. CategoryFind(query:$q){
  53. name goods{
  54. name images{
  55. url
  56. }
  57. }
  58. }
  59. }`, {q: "[{}]"})))
  60. console.log((await gql(`
  61. query NameForMe1($login:String, $password:String){
  62. login(login:$login, password:$password)
  63. }
  64. `, {login: 'tst', password: '123'})))
  65. console.log(await gql(`query userFind {
  66. UserFind(query: "[{}]") {
  67. login
  68. nick
  69. }
  70. }`, {q: "[{}]"}))
  71. // написать функции по типу:
  72. // для логина, регистрации, а так же для остальных страниц будущего сайта, которые вам пришли на ум.
  73. function catById(_id){
  74. return gql(`query catById($query:String) {
  75. CategoryFindOne(query:$query) {
  76. name goods{
  77. _id name
  78. }
  79. }
  80. }`, {query: JSON.stringify([{_id}])})
  81. }
  82. console.log(await catById("5dc45acf5df9d670df48cc48"))
  83. })()